Hello community, here is the log from the commit of package perl-Gtk2 for openSUSE:Factory checked in at 2015-08-29 20:04:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Gtk2 (Old) and /work/SRC/openSUSE:Factory/.perl-Gtk2.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "perl-Gtk2" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Gtk2/perl-Gtk2.changes 2014-07-28 16:20:59.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Gtk2.new/perl-Gtk2.changes 2015-08-29 20:04:51.000000000 +0200 @@ -1,0 +2,17 @@ +Fri Aug 21 18:04:10 UTC 2015 - sor.alexei@meowr.ru + +- Update to 1.2496: + * Avoid registering a GType for GConnectFlags if not needed. + * MANIFEST: add missing gtk-demo files. +- Add perl-Gtk2-fix-test-failure.patch: fix a test failure in + t/GdkWindow.t that occurs only on gtk+ >= 2.24.26 and < 2.24.29 + (bnc#932349). +- Spec cleanup. + +------------------------------------------------------------------- +Fri Apr 24 15:58:18 UTC 2015 - coolo@suse.com + +- updated to 1.2495 + see /usr/share/doc/packages/perl-Gtk2/ChangeLog.pre-git + +------------------------------------------------------------------- Old: ---- Gtk2-1.2492.tar.gz New: ---- Gtk2-1.2496.tar.gz perl-Gtk2-fix-test-failure.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Gtk2.spec ++++++ --- /var/tmp/diff_new_pack.0YJ4Gg/_old 2015-08-29 20:04:52.000000000 +0200 +++ /var/tmp/diff_new_pack.0YJ4Gg/_new 2015-08-29 20:04:52.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-Gtk2 # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,73 +16,73 @@ # +%define cpan_name Gtk2 Name: perl-Gtk2 -Version: 1.2492 +Version: 1.2496 Release: 0 -%define cpan_name Gtk2 -Summary: Perl interface to the 2.x series of the Gimp Toolkit library +Summary: Perl interface to the 2.x series of the GTK+ library License: LGPL-2.1+ Group: Development/Libraries/Perl -Url: http://search.cpan.org/dist/Gtk2/ -Source: http://www.cpan.org/authors/id/X/XA/XAOC/%{cpan_name}-%{version}.tar.gz +Url: https://metacpan.org/pod/Gtk2 +Source: https://cpan.metacpan.org/authors/id/X/XA/XAOC/%{cpan_name}-%{version}.tar.gz +# PATCH-FIX-UPSTREAM perl-Gtk2-fix-test-failure.patch bnc#932349 -- Fix a test failure that occurs on gtk+ >= 2.24.26 and < 2.24.29 +Patch0: %{name}-fix-test-failure.patch BuildRequires: perl BuildRequires: perl-macros -BuildRequires: update-desktop-files BuildRequires: xorg-x11 BuildRequires: xorg-x11-Xvfb BuildRequires: xorg-x11-server BuildRequires: perl(Cairo) >= 1.000 BuildRequires: perl(ExtUtils::Depends) >= 0.300 -BuildRequires: perl(ExtUtils::PkgConfig) >= 1.03 +BuildRequires: perl(ExtUtils::PkgConfig) >= 1.030000 BuildRequires: perl(Glib) >= 1.280 BuildRequires: perl(Pango) >= 1.220 BuildRequires: pkgconfig(gtk+-2.0) Requires: perl(Cairo) >= 1.000 Requires: perl(ExtUtils::Depends) >= 0.300 -Requires: perl(ExtUtils::PkgConfig) >= 1.03 +Requires: perl(ExtUtils::PkgConfig) >= 1.030000 Requires: perl(Glib) >= 1.280 Requires: perl(Pango) >= 1.220 BuildRoot: %{_tmppath}/%{name}-%{version}-build -%{perl_requires} +%perl_requires %description -The Gtk2 module allows a Perl developer to use the Gtk+ graphical user -interface library. Find out more about Gtk+ at http://www.gtk.org. +The Gtk2 module allows a Perl developer to use the GTK+ graphical +user interface library. Find out more about Gtk+ at http://gtk.org/. -The GTK+ Reference Manual is also a handy companion when writing Gtk -programs in any language. http://developer.gnome.org/doc/API/2.0/gtk/ The -Perl bindings follow the C API very closely, and the C reference -documentation should be considered the canonical source. +The GTK+ Reference Manual is also a handy companion when writing +Gtk applications in any language. The Perl bindings follow the +C API very closely, and the C reference documentation should be +considered the canonical source. -To discuss gtk2-perl, ask questions and flame/praise the authors, join -gtk-perl-list@gnome.org at lists.gnome.org. +To discuss gtk2-perl, ask questions and flame/praise the authors, +join gtk-perl-list@gnome.org at lists.gnome.org. -Also have a look at the gtk2-perl website and sourceforge project page, -http://gtk2-perl.sourceforge.net +Also have a look at the gtk2-perl website and sourceforge project +page, http://gtk2-perl.sourceforge.net %prep %setup -q -n %{cpan_name}-%{version} +%patch0 -p1 %build perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}" make %{?_smp_mflags} -%check -Xvfb :95 & -trap "kill $! || true" EXIT -sleep 5 -DISPLAY=:95 make test - %install %perl_make_install %perl_process_packlist %perl_gen_filelist -%clean -rm -rf %{buildroot} +%check +Xvfb :95 & +trap "kill $! || true" EXIT +sleep 5 +DISPLAY=:95 make test %{?_smp_mflags} %files -f %{name}.files -%defattr(-,root,root,-) -%doc AUTHORS LICENSE NEWS README TODO examples gtk-demo tools +%defattr(-,root,root) +%doc AUTHORS ChangeLog.pre-git LICENSE NEWS constants-* README TODO +%doc doctypes examples gdk.typemap Gtk2.exports gtk.typemap maps-* perl-Gtk2.doap xs_files-* %changelog ++++++ Gtk2-1.2492.tar.gz -> Gtk2-1.2496.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/MANIFEST new/Gtk2-1.2496/MANIFEST --- old/Gtk2-1.2492/MANIFEST 2014-07-01 04:02:49.000000000 +0200 +++ new/Gtk2-1.2496/MANIFEST 2015-08-10 03:05:27.000000000 +0200 @@ -50,10 +50,13 @@ gtk-demo/alphatest.png gtk-demo/apple-red.png gtk-demo/appwindow.pl +gtk-demo/assistant.pl gtk-demo/background.jpg gtk-demo/button_box.pl gtk-demo/changedisplay.pl gtk-demo/colorsel.pl +gtk-demo/combobox.pl +gtk-demo/demo.ui gtk-demo/dialog.pl gtk-demo/drawingarea.pl gtk-demo/editable_cells.pl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/META.json new/Gtk2-1.2496/META.json --- old/Gtk2-1.2492/META.json 2014-07-01 04:02:49.000000000 +0200 +++ new/Gtk2-1.2496/META.json 2015-08-10 03:05:27.000000000 +0200 @@ -4,7 +4,7 @@ "gtk2-perl Team <gtk-perl-list at gnome dot org>" ], "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 6.86, CPAN::Meta::Converter version 2.133380", + "generated_by" : "ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 2.150001", "license" : [ "lgpl_2_1" ], @@ -68,5 +68,5 @@ }, "x_MailingList" : "https://mail.gnome.org/mailman/listinfo/gtk-perl-list" }, - "version" : "1.2492" + "version" : "1.2496" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/META.yml new/Gtk2-1.2496/META.yml --- old/Gtk2-1.2492/META.yml 2014-07-01 04:02:49.000000000 +0200 +++ new/Gtk2-1.2496/META.yml 2015-08-10 03:05:27.000000000 +0200 @@ -3,20 +3,20 @@ author: - 'gtk2-perl Team <gtk-perl-list at gnome dot org>' build_requires: - ExtUtils::MakeMaker: 0 + ExtUtils::MakeMaker: '0' configure_requires: - Cairo: 1.000 - ExtUtils::Depends: 0.300 - ExtUtils::MakeMaker: 0 - ExtUtils::PkgConfig: 1.030 - Glib: 1.280 - Pango: 1.220 + Cairo: '1.000' + ExtUtils::Depends: '0.300' + ExtUtils::MakeMaker: '0' + ExtUtils::PkgConfig: '1.030' + Glib: '1.280' + Pango: '1.220' dynamic_config: 1 -generated_by: 'ExtUtils::MakeMaker version 6.86, CPAN::Meta::Converter version 2.133380' +generated_by: 'ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 2.150001' license: lgpl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 + version: '1.4' name: Gtk2 no_index: directory: @@ -28,15 +28,15 @@ - Makefile.PL - gtk-demo/main.pl requires: - Cairo: 1.000 - ExtUtils::Depends: 0.300 - ExtUtils::PkgConfig: 1.030 - Glib: 1.280 - Pango: 1.220 + Cairo: '1.000' + ExtUtils::Depends: '0.300' + ExtUtils::PkgConfig: '1.030' + Glib: '1.280' + Pango: '1.220' resources: MailingList: https://mail.gnome.org/mailman/listinfo/gtk-perl-list bugtracker: http://rt.cpan.org/Public/Dist/Display.html?Name=Gtk2 homepage: http://gtk2-perl.sourceforge.net license: http://www.gnu.org/licenses/lgpl-2.1.html repository: git://git.gnome.org/perl-Gtk2 -version: 1.2492 +version: '1.2496' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/NEWS new/Gtk2-1.2496/NEWS --- old/Gtk2-1.2492/NEWS 2014-07-01 04:02:24.000000000 +0200 +++ new/Gtk2-1.2496/NEWS 2015-08-10 03:04:22.000000000 +0200 @@ -1,3 +1,25 @@ +Overview of changes in Gtk2 1.2496 +================================== + +* Avoid registering a GType for GConnectFlags if not needed +* MANIFEST: added missing gtk-demo files + +Overview of changes in Gtk2 1.2495 +================================== + +* Fix incorrect memory management in Gtk2::Gdk::Display::list_devices + +Overview of changes in Gtk2 1.2494 +================================== + +* Skip all tests that use threads under the hood on FreeBSD if necessary + +Overview of changes in Gtk2 1.2493 +================================== + +* Make t/GtkCellRenderer.t more robust +∗ Add a FIXME comment about a slight API problem + Overview of changes in Gtk2 1.2492 ================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/gtk-demo/assistant.pl new/Gtk2-1.2496/gtk-demo/assistant.pl --- old/Gtk2-1.2492/gtk-demo/assistant.pl 1970-01-01 01:00:00.000000000 +0100 +++ new/Gtk2-1.2496/gtk-demo/assistant.pl 2015-07-08 19:49:01.000000000 +0200 @@ -0,0 +1,242 @@ +#!/usr/bin/perl -w +# +# Assistant +# +# Demonstrates a sample multistep assistant. Assistants are used to divide +# an operation into several simpler sequential steps, and to guide the user +# through these steps. +# + +package assistant; + +use strict; +use warnings; +use Glib ':constants'; +use Gtk2; +#include "demo-common.h" + +my $assistant = undef; +my $progress_bar = undef; + + +sub apply_changes_gradually($) { + my $fraction; + + # Work, work, work... + Gtk2::Gdk::Threads->leave(); + $fraction = $progress_bar->get_fraction(); + $fraction += 0.05; + + my $cont = TRUE; + if ($fraction < 1.0) { + $progress_bar->set_fraction($fraction); + } else { + # Close automatically once changes are fully applied. + $assistant->destroy(); + undef $assistant; + $cont = FALSE; + } + Gtk2::Gdk::Threads->enter(); + return $cont; +} + + +sub on_assistant_apply($$) +{ + my ($widget, $data) = @_; + # Start a timer to simulate changes taking a few seconds to apply. + Glib::Timeout->add(100, \&apply_changes_gradually, undef); +} + + +sub on_assistant_close_cancel($$) +{ + my ($widget, $assistant) = @_; + $$assistant->destroy(); + undef $$assistant; +} + + +sub on_assistant_prepare($$$) +{ + my ($widget, $page, $data) = @_; + my ($current_page, $n_pages, $title); + + $current_page = $widget->get_current_page(); + $n_pages = $widget->get_n_pages(); + + $title = sprintf("Sample assistant (%d of %d)", $current_page + 1, $n_pages); + $widget->window()->set_title($title); + + # The fourth page (counting from zero) is the progress page. The + # user clicked Apply to get here so we tell the assistant to commit, + # which means the changes up to this point are permanent and cannot + # be cancelled or revisited. + if ($current_page == 3) { + $widget->commit(); + } +} + + +sub on_entry_changed($$) +{ + my ($widget, $data) = @_; + my $assistant = $data; + my ($current_page, $page_number, $text); + + $page_number = $assistant->get_current_page(); + $current_page = $assistant->get_nth_page($page_number); + $text = $widget->get_text(); + + if ($text && $text ne '') { + $assistant->set_page_complete($current_page, TRUE); + } else { + $assistant->set_page_complete($current_page, FALSE); + } +} + + +sub create_page1($) +{ + my $assistant = shift; + my ($box, $label, $entry, $pixbuf); + + $box = Gtk2::HBox->new(FALSE, 12); + $box->set_border_width(12); + + $label = Gtk2::Label->new("You must fill out this entry to continue:"); + $box->pack_start($label, FALSE, FALSE, 0); + + $entry = Gtk2::Entry->new(); + $box->pack_start($entry, TRUE, TRUE, 0); + $entry->signal_connect("changed", + \&on_entry_changed, $assistant); + + $box->show_all(); + $assistant->append_page($box); + $assistant->set_page_title($box, "Page 1"); + $assistant->set_page_type($box, 'GTK_ASSISTANT_PAGE_INTRO'); + + $pixbuf = $assistant->render_icon('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG'); + $assistant->set_page_header_image($box, $pixbuf); + undef $pixbuf; +} + + +sub create_page2($) +{ + my $assistant = shift; + my ($box, $checkbutton, $pixbuf); + + $box = Gtk2::VBox->new(12, FALSE); + $box->set_border_width(12); + + $checkbutton = Gtk2::CheckButton->new_with_label("This is optional data, you may continue " . + "even if you do not check this"); + $box->pack_start($checkbutton, FALSE, FALSE, 0); + + $box->show_all(); + $assistant->append_page($box); + $assistant->set_page_complete($box, TRUE); + $assistant->set_page_title($box, "Page 2"); + + $pixbuf = $assistant->render_icon('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG'); + $assistant->set_page_header_image($box, $pixbuf); + undef $pixbuf; +} + + +sub create_page3($) +{ + my $assistant = shift; + my ($label, $pixbuf); + + $label = Gtk2::Label->new ("This is a confirmation page, press 'Apply' to apply changes"); + + $label->show(); + $assistant->append_page($label); + $assistant->set_page_type($label, 'GTK_ASSISTANT_PAGE_CONFIRM'); + $assistant->set_page_complete($label, TRUE); + $assistant->set_page_title($label, "Confirmation"); + + $pixbuf = $assistant->render_icon('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG'); + $assistant->set_page_header_image($label, $pixbuf); + undef $pixbuf; +} + + +sub create_page4($) +{ + my $assistant = shift; + my ($page); + + $page = Gtk2::Alignment->new (0.5, 0.5, 0.5, 0.0); + + $progress_bar = Gtk2::ProgressBar->new(); + $page->add($progress_bar); + + $page->show_all(); + $assistant->append_page($page); + $assistant->set_page_type($page, 'GTK_ASSISTANT_PAGE_PROGRESS'); + $assistant->set_page_title($page, "Applying changes"); + + # This prevents the assistant window from being + # closed while we're "busy" applying changes. + $assistant->set_page_complete($page, FALSE); +} + +sub do { + my $do_widget = shift; + + if (!$assistant) { + $assistant = Gtk2::Assistant->new (); + + $assistant->set_default_size(-1, 300); + + $assistant->set_screen ($do_widget->get_screen) + if Gtk2->CHECK_VERSION (2, 2, 0); + + create_page1 ($assistant); + create_page2 ($assistant); + create_page3 ($assistant); + create_page4 ($assistant); + + $assistant->signal_connect ("cancel", + \&on_assistant_close_cancel, \$assistant); + $assistant->signal_connect ("close", + \&on_assistant_close_cancel, \$assistant); + $assistant->signal_connect ("apply", + \&on_assistant_apply, undef); + $assistant->signal_connect ("prepare", + \&on_assistant_prepare, undef); + } + + if (!$assistant->visible()) { + $assistant->show(); + } else { + $assistant->destroy(); + $assistant = undef; + } + + return $assistant; +} + + +1; +__END__ +Copyright (C) 2003 by the gtk2-perl team (see the file AUTHORS for the +full list) + +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Library General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) any +later version. + +This library is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU Library General Public License for more +details. + +You should have received a copy of the GNU Library General Public License along +with this library; if not, write to the Free Software Foundation, Inc., 59 +Temple Place - Suite 330, Boston, MA 02111-1307 USA. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/gtk-demo/combobox.pl new/Gtk2-1.2496/gtk-demo/combobox.pl --- old/Gtk2-1.2492/gtk-demo/combobox.pl 1970-01-01 01:00:00.000000000 +0100 +++ new/Gtk2-1.2496/gtk-demo/combobox.pl 2015-07-08 19:49:01.000000000 +0200 @@ -0,0 +1,352 @@ +#!/usr/bin/perl -w +# +# Combo boxes +# +# The ComboBox widget allows to select one option out of a list. +# The ComboBoxEntry additionally allows the user to enter a value +# that is not in the list of options. +# +# How the options are displayed is controlled by cell renderers. +# + +package combobox; + +use strict; +use warnings; +use Glib ':constants'; +use Gtk2; +#include "demo-common.h" + +use constant PIXBUF_COL => 0; +use constant TEXT_COL => 1; + +my $window = undef; + + +sub create_stock_icon_store() +{ + my @stock_id = ( + 'gtk-dialog-warning', + 'gtk-stop', + 'gtk-new', + 'gtk-clear', + undef, + 'gtk-open' + ); + + my ($item, $pixbuf, $cellview, $iter, $store, $label); + + $cellview = Gtk2::CellView->new(); + + $store = Gtk2::ListStore->new('Gtk2::Gdk::Pixbuf', 'Glib::String'); + + for my $i (@stock_id) { + if ($i) + { + $pixbuf = $cellview->render_icon($i, + 'GTK_ICON_SIZE_BUTTON'); + $item = Gtk2::Stock->lookup($i); + $label = $item->{label}; + # strip underscores + $label =~ tr/_//d; + $iter = $store->append(); + $store->set ($iter, + PIXBUF_COL, $pixbuf, + TEXT_COL, $label); + undef $pixbuf; + } else { + $iter = $store->append(); + $store->set($iter, + PIXBUF_COL, undef, + TEXT_COL, "separator"); + } + } + + $cellview->destroy(); + + return $store; +} + + +# A GtkCellLayoutDataFunc that demonstrates how one can control +# sensitivity of rows. This particular function does nothing +# useful and just makes the second row insensitive. +# +sub set_sensitive() +{ + my ($cell_layout, $cell, $tree_model, $iter, $data) = @_; + + my $path = $tree_model->get_path($iter); + my @indices = $path->get_indices(); + my $sensitive = $indices[0] != 1; + undef $path; + + $cell->set("sensitive", $sensitive); +} + + +# A GtkTreeViewRowSeparatorFunc that demonstrates how rows can be +# rendered as separators. This particular function does nothing +# useful and just turns the fourth row into a separator. +# +sub is_separator() +{ + my ($model, $iter, $data) = @_; + + my $path = $model->get_path($iter); + my @indices = $path->get_indices(); + my $result = $indices[0] == 4; + undef $path; + + return $result; +} + +sub create_capital_store() +{ + my %capitals = ( + "A - B" => [ + "Albany", "Annapolis", "Atlanta", "Augusta", "Austin", "Baton Rouge", + "Bismarck", "Boise", "Boston" + ], + "C - D" => [ + "Carson City", "Charleston", "Cheyenne", "Columbia", "Columbus", + "Concord", "Denver", "Des Moines", "Dover" + ], + "E - J" => [ + "Frankfort", "Harrisburg", "Hartford", "Helena", "Honolulu", + "Indianapolis", "Jackson", "Jefferson City", "Juneau" + ], + "K - O" => [ + "Lansing", "Lincoln", "Little Rock", "Madison", "Montgomery", + "Montpelier", "Nashville", "Oklahoma City", "Olympia" + ], + "P - S" => [ + "Phoenix", "Pierre", "Providence", "Raleigh", "Richmond", "Sacramento", + "Salem", "Salt Lake City", "Santa Fe", "Springfield", "St. Paul", + ], + "T - Z" => [ + "Tallahassee", "Topeka", "Trenton" + ], + ); + my $store = Gtk2::TreeStore->new('Glib::String'); + for my $i (sort { $a cmp $b} keys %capitals ) { + my $iter = $store->append(undef); + $store->set($iter, 0, $i); + for my $capital (@{$capitals{$i}}) { + my $iter2 = $store->append($iter); + $store->set($iter2, 0, $capital); + } + } + return $store; +} + + +sub is_capital_sensitive() +{ + my ($cell_layout, $cell, $tree_model, $iter, $data) = @_; + my $sensitive = !$tree_model->iter_has_child($iter); + $cell->set('sensitive', $sensitive); +} + + +sub fill_combo_entry($) +{ + my $combo = shift; + $combo->append_text("One"); + $combo->append_text("Two"); + $combo->append_text("2\x{00bd}"); + $combo->append_text("Three"); +} + + +# A simple validating entry +package Gtk2::MaskEntry; +use Gtk2; +use base qw(Gtk2::Entry); + + +sub mask_entry_set_background($) +{ + my $entry = shift; + if ($entry->get('mask')) { + my $re = $entry->get('mask'); + if (! ($entry->get_text() =~ $re) ) { + $entry->modify_base('GTK_STATE_NORMAL', Gtk2::Gdk::Color->new(65535, 60000, 60000)); + return; + } + } + $entry->modify_base('GTK_STATE_NORMAL', undef); +} + +sub mask_entry_changed($) +{ + my $editable = shift; + mask_entry_set_background($editable); +} + +sub INIT_INSTANCE($) +{ + my $self = shift; + $self->set('mask', undef); +} + +use Glib::Object::Subclass + 'Gtk2::Entry', + properties => [ + Glib::ParamSpec->string ( + 'mask', + '', + '', + 'Glib::String', + [qw/readable writable/] + ), + ], + signals => { + changed => \&mask_entry_changed, + }, + interfaces => [ + 'Gtk2::CellEditable', + ]; + + +sub new($@) +{ + my $class = shift; + my $self = $class->SUPER::new(); + + bless $self, $class; + + $self; +} + +package combobox; + + +sub do { + my $do_widget = shift; + + if (!$window) { + $window = Gtk2::Window->new('GTK_WINDOW_TOPLEVEL'); + $window->set_screen ($do_widget->get_screen) + if Gtk2->CHECK_VERSION (2, 2, 0); + $window->set_title("Combo boxes"); + + $window->signal_connect("destroy", sub { $window = undef; }); + + $window->set_border_width(10); + + my $vbox = Gtk2::VBox->new(FALSE, 2); + $window->add($vbox); + + # A combobox demonstrating cell renderers, separators and + # insensitive rows + # + my $frame = Gtk2::Frame->new("Some stock icons"); + $vbox->pack_start($frame, FALSE, FALSE, 0); + + my $box = Gtk2::VBox->new(FALSE, 0); + $box->set_border_width(5); + $frame->add($box); + + my $model = create_stock_icon_store(); + my $combo = Gtk2::ComboBox->new_with_model($model); + undef $model; + $box->add($combo); + + my $renderer = Gtk2::CellRendererPixbuf->new(); + $combo->pack_start($renderer, FALSE); + $combo->set_attributes($renderer, + "pixbuf", PIXBUF_COL); + + $combo->set_cell_data_func($renderer, \&set_sensitive); + + $renderer = Gtk2::CellRendererText->new(); + $combo->pack_start($renderer, TRUE); + $combo->set_attributes($renderer, + "text", TEXT_COL); + + $combo->set_cell_data_func($renderer, \&set_sensitive); + + $combo->set_row_separator_func(\&is_separator); + + $combo->set_active(0); + + # A combobox demonstrating trees. + # + $frame = Gtk2::Frame->new("Where are we ?"); + $vbox->pack_start($frame, FALSE, FALSE, 0); + + $box = Gtk2::VBox->new(FALSE, 0); + $box->set_border_width(5); + $frame->add($box); + + $model = create_capital_store (); + $combo = Gtk2::ComboBox->new_with_model($model); + # undef $model; + $box->add($combo); + + $renderer = Gtk2::CellRendererText->new(); + $combo->pack_start($renderer, TRUE); + $combo->set_attributes($renderer, + "text", 0); + $combo->set_cell_data_func($renderer, \&is_capital_sensitive); + + my $path = Gtk2::TreePath->new_from_indices(0, 8); + my $iter = $model->get_iter($path); + undef $path; + $combo->set_active_iter($iter); + + # A GtkComboBoxEntry with validation. + # + $frame = Gtk2::Frame->new("Editable"); + $vbox->pack_start($frame, FALSE, FALSE, 0); + + $box = Gtk2::VBox->new(FALSE, 0); + $box->set_border_width(5); + $frame->add($box); + + $combo = undef; + eval { + $combo = Gtk2::ComboBox->text_new_with_entry(); + }; + eval { + $combo = Gtk2::ComboBoxEntry->new_text(); + } if (!$combo); + fill_combo_entry($combo); + $box->add($combo); + + my $entry = Gtk2::MaskEntry->new(); + $entry->set('mask', "^([0-9]*|One|Two|2\x{00bd}|Three)\$"); + + $combo->remove($combo->get_child()); + $combo->add($entry); + } + + if (!$window->visible()) { + $window->show_all(); + } else { + $window->destroy(); + } + + return $window; +} + + +1; +__END__ +Copyright (C) 2003 by the gtk2-perl team (see the file AUTHORS for the +full list) + +This library is free software; you can redistribute it and/or modify it under +the terms of the GNU Library General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) any +later version. + +This library is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU Library General Public License for more +details. + +You should have received a copy of the GNU Library General Public License along +with this library; if not, write to the Free Software Foundation, Inc., 59 +Temple Place - Suite 330, Boston, MA 02111-1307 USA. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/gtk-demo/demo.ui new/Gtk2-1.2496/gtk-demo/demo.ui --- old/Gtk2-1.2492/gtk-demo/demo.ui 1970-01-01 01:00:00.000000000 +0100 +++ new/Gtk2-1.2496/gtk-demo/demo.ui 2015-07-08 19:49:01.000000000 +0200 @@ -0,0 +1,258 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<interface domain="gtk20"> + <object class="GtkListStore" id="liststore1"> + <columns> + <column type="gchararray"/> + <column type="gchararray"/> + <column type="gint"/> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">John</col> + <col id="1" translatable="yes">Doe</col> + <col id="2">25</col> + <col id="3" translatable="yes">This is the John Doe row</col> + </row> + <row> + <col id="0" translatable="yes">Mary</col> + <col id="1" translatable="yes">Unknown</col> + <col id="2">50</col> + <col id="3" translatable="yes">This is the Mary Unknown row</col> + </row> + </data> + </object> + <object class="GtkUIManager" id="uimanager"> + <child> + <object class="GtkActionGroup" id="DefaultActions"> + <child> + <object class="GtkAction" id="Copy"> + <property name="name">Copy</property> + <property name="tooltip" translatable="yes">Copy selected object into the clipboard</property> + <property name="stock_id">gtk-copy</property> + </object> + </child> + <child> + <object class="GtkAction" id="Cut"> + <property name="name">Cut</property> + <property name="tooltip" translatable="yes">Cut selected object into the clipboard</property> + <property name="stock_id">gtk-cut</property> + </object> + </child> + <child> + <object class="GtkAction" id="EditMenu"> + <property name="name">EditMenu</property> + <property name="label" translatable="yes">_Edit</property> + </object> + </child> + <child> + <object class="GtkAction" id="FileMenu"> + <property name="name">FileMenu</property> + <property name="label" translatable="yes">_File</property> + </object> + </child> + <child> + <object class="GtkAction" id="New"> + <property name="name">New</property> + <property name="tooltip" translatable="yes">Create a new file</property> + <property name="stock_id">gtk-new</property> + </object> + </child> + <child> + <object class="GtkAction" id="Open"> + <property name="name">Open</property> + <property name="tooltip" translatable="yes">Open a file</property> + <property name="stock_id">gtk-open</property> + </object> + </child> + <child> + <object class="GtkAction" id="Paste"> + <property name="name">Paste</property> + <property name="tooltip" translatable="yes">Paste object from the Clipboard</property> + <property name="stock_id">gtk-paste</property> + </object> + </child> + <child> + <object class="GtkAction" id="Quit"> + <property name="name">Quit</property> + <property name="tooltip" translatable="yes">Quit the program</property> + <property name="stock_id">gtk-quit</property> + <signal handler="quit_activate" name="activate"/> + </object> + </child> + <child> + <object class="GtkAction" id="Save"> + <property name="name">Save</property> + <property name="is_important">True</property> + <property name="tooltip" translatable="yes">Save a file</property> + <property name="stock_id">gtk-save</property> + </object> + </child> + <child> + <object class="GtkAction" id="SaveAs"> + <property name="name">SaveAs</property> + <property name="tooltip" translatable="yes">Save with a different name</property> + <property name="stock_id">gtk-save-as</property> + </object> + </child> + <child> + <object class="GtkAction" id="HelpMenu"> + <property name="name">HelpMenu</property> + <property name="label" translatable="yes">_Help</property> + </object> + </child> + <child> + <object class="GtkAction" id="About"> + <property name="name">About</property> + <property name="stock_id">gtk-about</property> + <signal handler="about_activate" name="activate"/> + </object> + <accelerator key="F1"/> + </child> + </object> + </child> + <ui> + <menubar name="menubar1"> + <menu action="FileMenu" name="FileMenu"> + <menuitem action="New" name="New"/> + <menuitem action="Open" name="Open"/> + <menuitem action="Save" name="Save"/> + <menuitem action="SaveAs" name="SaveAs"/> + <separator/> + <menuitem action="Quit" name="Quit"/> + </menu> + <menu action="EditMenu"> + <menuitem action="Copy" name="Copy"/> + <menuitem action="Cut" name="Cut"/> + <menuitem action="Paste" name="Paste"/> + </menu> + <menu action="HelpMenu" name="HelpMenu"> + <menuitem action="About" name="About"/> + </menu> + </menubar> + <toolbar name="toolbar1"> + <toolitem action="New" name="New"/> + <toolitem action="Open" name="Open"/> + <toolitem action="Save" name="Save"/> + <separator/> + <toolitem action="Copy" name="Copy"/> + <toolitem action="Cut" name="Cut"/> + <toolitem action="Paste" name="Paste"/> + </toolbar> + </ui> + </object> + <object class="GtkAboutDialog" id="aboutdialog1"> + <property name="program-name" translatable="yes">GtkBuilder demo</property> + <accessibility> + <relation target="window1" type="subwindow-of"/> + </accessibility> + </object> + <object class="GtkWindow" id="window1"> + <property name="default_height">250</property> + <property name="default_width">440</property> + <property name="title">GtkBuilder demo</property> + <child> + <object class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <child> + <object constructor="uimanager" class="GtkMenuBar" id="menubar1"> + <property name="visible">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="a11y-menubar"> + <property name="AtkObject::accessible-name">The menubar</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <object constructor="uimanager" class="GtkToolbar" id="toolbar1"> + <property name="visible">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="a11y-toolbar"> + <property name="AtkObject::accessible-name">The toolbar</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="hscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> + <property name="visible">True</property> + <property name="vscrollbar_policy">automatic</property> + <child> + <object class="GtkTreeView" id="treeview1"> + <property name="visible">True</property> + <property name="model">liststore1</property> + <property name="tooltip-column">3</property> + <child internal-child="accessible"> + <object class="AtkObject" id="a11y-treeview"> + <property name="AtkObject::accessible-name">Name list</property> + <property name="AtkObject::accessible-description"> + A list of person with name, surname and age columns + </property> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="column1"> + <property name="title">Name</property> + <child> + <object class="GtkCellRendererText" id="renderer1"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="column2"> + <property name="title">Surname</property> + <child> + <object class="GtkCellRendererText" id="renderer2"/> + <attributes> + <attribute name="text">1</attribute> + </attributes> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="column3"> + <property name="title">Age</property> + <child> + <object class="GtkCellRendererText" id="renderer3"/> + <attributes> + <attribute name="text">2</attribute> + </attributes> + </child> + </object> + </child> + </object> + </child> + <accessibility> + <action action_name="move-cursor" description="Move the cursor to select another person."/> + </accessibility> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkStatusbar" id="statusbar1"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">3</property> + </packing> + </child> + </object> + </child> + </object> +</interface> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/gtk-demo/main.pl new/Gtk2-1.2496/gtk-demo/main.pl --- old/Gtk2-1.2492/gtk-demo/main.pl 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/gtk-demo/main.pl 2015-07-08 19:49:01.000000000 +0200 @@ -33,9 +33,12 @@ @testgtk_demos = ( { title => "Application main window", filename => "appwindow.pl", func => 'stub', }, + { title => "Assistant", filename => "assistant.pl", func => 'stub', available => sub { Gtk2->CHECK_VERSION (2, 10, 0); } }, + { title => "Builder", filename => "builder.pl", func => 'stub', available => sub { Gtk2->CHECK_VERSION (2, 12, 0); } }, { title => "Button Boxes", filename => "button_box.pl", func => 'stub', }, { title => "Change Display", filename => "changedisplay.pl", func => 'stub', }, { title => "Color Selector", filename => "colorsel.pl", func => 'stub', }, + { title => "Combo boxes", filename => "combobox.pl", func => 'stub', available => sub { Gtk2->CHECK_VERSION (2, 4, 0); } }, { title => "Dialog and Message Boxes", filename => "dialog.pl", func => 'stub', }, { title => "Drawing Area", filename => "drawingarea.pl", func => 'stub', }, { title => "Images", filename => "images.pl", func => 'stub', }, @@ -558,6 +561,7 @@ # want more we probably have to use a recursing function. # foreach my $d (@testgtk_demos) { + next if ($d->{available} && !$d->{available}->()); my $iter = $model->append (undef); $model->set ($iter, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/lib/Gtk2.pm new/Gtk2-1.2496/lib/Gtk2.pm --- old/Gtk2-1.2492/lib/Gtk2.pm 2014-07-01 04:02:41.000000000 +0200 +++ new/Gtk2-1.2496/lib/Gtk2.pm 2015-08-10 02:59:52.000000000 +0200 @@ -73,7 +73,7 @@ use Exporter; require DynaLoader; -our $VERSION = '1.2492'; +our $VERSION = '1.2496'; our @ISA = qw(DynaLoader Exporter); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GdkDisplay.t new/Gtk2-1.2496/t/GdkDisplay.t --- old/Gtk2-1.2492/t/GdkDisplay.t 2012-07-03 21:04:37.000000000 +0200 +++ new/Gtk2-1.2496/t/GdkDisplay.t 2015-01-24 14:12:40.000000000 +0100 @@ -1,7 +1,7 @@ #!/usr/bin/perl -w use strict; use Gtk2::TestHelper - tests => 26, + tests => 27, at_least_version => [2, 2, 0, "GdkDisplay is new in 2.2"]; # $Id$ @@ -32,6 +32,8 @@ # $display -> beep(); $display -> sync(); +# Do this twice to ensure we did not damage the list. +isa_ok(($display -> list_devices())[0], "Gtk2::Gdk::Device"); isa_ok(($display -> list_devices())[0], "Gtk2::Gdk::Device"); $display -> put_event(Gtk2::Gdk::Event -> new("button-press")); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkCellRenderer.t new/Gtk2-1.2496/t/GtkCellRenderer.t --- old/Gtk2-1.2492/t/GtkCellRenderer.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkCellRenderer.t 2014-11-26 07:18:28.000000000 +0100 @@ -2,9 +2,11 @@ # $Id$ -use Gtk2::TestHelper tests => 26; +use Gtk2::TestHelper tests => 46; use strict; +########################################################################## +# custom cell renderer package Mup::CellRendererPopup; use Test::More; @@ -22,8 +24,8 @@ sub ACTIVATE { $hits{activate}++; shift->SUPER::ACTIVATE (@_) } sub START_EDITING { $hits{edit}++; shift->SUPER::START_EDITING (@_) } - -# do that again, in the style of 1.02x, to check for regressions of +########################################################################## +# custom cell renderer in the style of 1.02x, to check for regressions of # backward compatibility. package Mup::CellRendererPopupCompat; @@ -44,6 +46,8 @@ sub on_activate { $hits_compat{activate}++; shift->parent_activate (@_) } sub on_start_editing { $hits_compat{edit}++; shift->parent_start_editing (@_) } +########################################################################## +# custom cell renderer with newly created entry in START_EDITING package My::CellRendererNewEntry; use strict; use warnings; @@ -59,7 +63,6 @@ return $entry; } sub _editable_destroy { $hits_newentry{editable_destroy}++ } - ########################################################################## # driver code @@ -83,7 +86,6 @@ $model->set ($iter, 0, $_); } - # now a view my $treeview = Gtk2::TreeView->new ($model); @@ -92,8 +94,9 @@ # ok (my $renderer = Mup::CellRendererPopup->new, 'Mup::CellRendererPopup->new'); $renderer->set (mode => 'editable'); +$renderer->set (editable => 1); my $column = Gtk2::TreeViewColumn->new_with_attributes ('selector', $renderer, - text => 0,); + text => 0,); # this handler commits the user's selection to the model. compare with # the one for the typical text renderer -- the only difference is a var name. $renderer->signal_connect (edited => sub { @@ -104,18 +107,17 @@ }, $model); $treeview->append_column ($column); - # -# custom cell renderer +# custom cell renderer, compat mode # -ok ($renderer = Mup::CellRendererPopupCompat->new, 'Mup::CellRendererPopupCompat->new'); -$renderer->set (mode => 'editable'); -$renderer->set (editable => 1); -my $column_compat = Gtk2::TreeViewColumn->new_with_attributes ('selector', $renderer, - text => 0,); +ok (my $renderer_compat = Mup::CellRendererPopupCompat->new, 'Mup::CellRendererPopupCompat->new'); +$renderer_compat->set (mode => 'editable'); +$renderer_compat->set (editable => 1); +my $column_compat = Gtk2::TreeViewColumn->new_with_attributes ('selector', $renderer_compat, + text => 0,); # this handler commits the user's selection to the model. compare with # the one for the typical text renderer -- the only difference is a var name. -$renderer->signal_connect (edited => sub { +$renderer_compat->signal_connect (edited => sub { my ($cell, $text_path, $new_text, $model) = @_; my $path = Gtk2::TreePath->new_from_string ($text_path); my $iter = $model->get_iter ($path); @@ -141,7 +143,6 @@ ('core-text', $renderer_text, text => 0,); $treeview->append_column ($column_text); - ########################################################################## $vbox->pack_start ($treeview, 1, 1, 0); @@ -150,48 +151,38 @@ ########################################################################## -isa_ok ($renderer, "Gtk2::CellRenderer"); - +# +# test the vfunc-involving stuff for all renderers +# my $rect = Gtk2::Gdk::Rectangle->new (5, 5, 10, 10); -my @size = $renderer->get_size ($treeview, $rect); -is (@size, 4); -like($size[0], qr/^\d+$/); -like($size[1], qr/^\d+$/); -like($size[2], qr/^\d+$/); -like($size[3], qr/^\d+$/); - my $event = Gtk2::Gdk::Event->new ("button-press"); - -$renderer->render ($window->window, $treeview, $rect, $rect, $rect, [qw(sorted prelit)]); -ok(!$renderer->activate ($event, $treeview, "0", $rect, $rect, qw(selected))); -{ - my $editable = $renderer->start_editing ($event, $treeview, "0", $rect, $rect, qw(selected)); - isa_ok ($editable, "Gtk2::Entry"); - my $destroyed = 0; - $editable->signal_connect (destroy => sub { $destroyed = 1 }); - undef $editable; - is ($destroyed, 1, - 'editable from start_editing using SUPER::START_EDITING destroyed when forgotten'); -} -{ - my $editable = $renderer_newentry->start_editing ($event, $treeview, "0", $rect, $rect, qw(selected)); - isa_ok ($editable, "Gtk2::Entry"); - my $destroyed = 0; - $editable->signal_connect (destroy => sub { $destroyed = 1 }); - undef $editable; - is ($destroyed, 1, - 'editable from start_editing using Gtk2::Entry->new destroyed when forgotten'); -} -{ - my $editable = $renderer_text->start_editing ($event, $treeview, "0", $rect, $rect, qw(selected)); - isa_ok ($editable, "Gtk2::Entry"); - my $destroyed = 0; - $editable->signal_connect (destroy => sub { $destroyed = 1 }); - undef $editable; - is ($destroyed, 1, - 'editable from start_editing on core GtkCellRendererText destroyed when forgotten'); +foreach my $r ($renderer, $renderer_compat, $renderer_newentry, $renderer_text) { + my @size = $r->get_size ($treeview, $rect); + is (@size, 4); + like($size[0], qr/^\d+$/); + like($size[1], qr/^\d+$/); + like($size[2], qr/^\d+$/); + like($size[3], qr/^\d+$/); + + $r->render ($window->window, $treeview, $rect, $rect, $rect, [qw(sorted prelit)]); + ok(!$r->activate ($event, $treeview, "0", $rect, $rect, qw(selected))); + + { + my $editable = $r->start_editing ($event, $treeview, "0", $rect, $rect, qw(selected)); + isa_ok ($editable, "Gtk2::Entry"); + my $destroyed = 0; + $editable->signal_connect (destroy => sub { $destroyed = 1 }); + undef $editable; + is ($destroyed, 1, + "editable from start_editing using $r destroyed when forgotten"); + } } +# +# test the normal stuff just for one renderer +# +isa_ok ($renderer, "Gtk2::CellRenderer"); + $renderer->set_fixed_size (23, 42); is_deeply([$renderer->get_fixed_size], [23, 42]); @@ -237,6 +228,8 @@ ########################################################################## run_main sub { + # set the cursor on the various columns, with editing mode on, to + # trigger the vfuncs $treeview->set_cursor (Gtk2::TreePath->new_from_string ('0'), $column, 1); $treeview->set_cursor (Gtk2::TreePath->new_from_string ('0'), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkFileChooserButton.t new/Gtk2-1.2496/t/GtkFileChooserButton.t --- old/Gtk2-1.2492/t/GtkFileChooserButton.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkFileChooserButton.t 2014-12-23 07:18:16.000000000 +0100 @@ -1,8 +1,20 @@ #!/usr/bin/perl -w use strict; + +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper tests => 9, - at_least_version => [2, 6, 0, "GtkFileChooserButton is new in 2.6"]; + at_least_version => [2, 6, 0, "GtkFileChooserButton is new in 2.6"], + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); # $Id$ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkFileChooserDialog.t new/Gtk2-1.2496/t/GtkFileChooserDialog.t --- old/Gtk2-1.2492/t/GtkFileChooserDialog.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkFileChooserDialog.t 2014-12-23 07:18:16.000000000 +0100 @@ -2,9 +2,20 @@ # $Id$ # +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper at_least_version => [2, 4, 0, "GtkFileChooser is new in 2.4"], - tests => 6; + tests => 6, + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); my $dialog = Gtk2::FileChooserDialog->new ('some title', undef, 'save', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkFileChooserWidget.t new/Gtk2-1.2496/t/GtkFileChooserWidget.t --- old/Gtk2-1.2492/t/GtkFileChooserWidget.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkFileChooserWidget.t 2014-12-23 07:18:16.000000000 +0100 @@ -2,9 +2,20 @@ # $Id$ # +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper at_least_version => [2, 4, 0, "GtkFileChooser is new in 2.4"], - tests => 6; + tests => 6, + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); my $widget = Gtk2::FileChooserWidget->new ('save'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkRecentAction.t new/Gtk2-1.2496/t/GtkRecentAction.t --- old/Gtk2-1.2492/t/GtkRecentAction.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkRecentAction.t 2014-12-23 07:18:16.000000000 +0100 @@ -2,10 +2,20 @@ # $Id$ -use Gtk2::TestHelper - at_least_version => [2, 12, 0, 'GtkRecentAtionc: new in 2.12'], - tests => 1; +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} +use Gtk2::TestHelper + at_least_version => [2, 12, 0, 'GtkRecentAction: new in 2.12'], + tests => 1, + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); my $action = Gtk2::RecentAction->new (name => 'one', label => 'one', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkRecentChooser.t new/Gtk2-1.2496/t/GtkRecentChooser.t --- old/Gtk2-1.2492/t/GtkRecentChooser.t 2014-01-18 19:00:49.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkRecentChooser.t 2014-12-23 07:18:16.000000000 +0100 @@ -1,8 +1,20 @@ #!/usr/bin/perl -w use strict; + +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper tests => 15, - at_least_version => [2, 10, 0, "GtkRecentChooser"]; + at_least_version => [2, 10, 0, "GtkRecentChooser"], + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); # $Id$ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkRecentChooserDialog.t new/Gtk2-1.2496/t/GtkRecentChooserDialog.t --- old/Gtk2-1.2492/t/GtkRecentChooserDialog.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkRecentChooserDialog.t 2014-12-23 07:18:16.000000000 +0100 @@ -1,8 +1,20 @@ #!/usr/bin/perl -w use strict; + +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper tests => 14, - at_least_version => [2, 10, 0, "GtkRecentChooserDialog"]; + at_least_version => [2, 10, 0, "GtkRecentChooserDialog"], + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); # $Id$ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkRecentChooserMenu.t new/Gtk2-1.2496/t/GtkRecentChooserMenu.t --- old/Gtk2-1.2492/t/GtkRecentChooserMenu.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkRecentChooserMenu.t 2014-12-23 07:18:16.000000000 +0100 @@ -1,8 +1,20 @@ #!/usr/bin/perl -w use strict; + +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper tests => 5, - at_least_version => [2, 10, 0, "GtkRecentChooserMenu"]; + at_least_version => [2, 10, 0, "GtkRecentChooserMenu"], + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); # $Id$ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkRecentChooserWidget.t new/Gtk2-1.2496/t/GtkRecentChooserWidget.t --- old/Gtk2-1.2492/t/GtkRecentChooserWidget.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkRecentChooserWidget.t 2014-12-23 07:18:16.000000000 +0100 @@ -1,8 +1,20 @@ #!/usr/bin/perl -w use strict; + +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper tests => 4, - at_least_version => [2, 10, 0, "GtkRecentChooserWidget"]; + at_least_version => [2, 10, 0, "GtkRecentChooserWidget"], + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); # $Id$ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkRecentFilter.t new/Gtk2-1.2496/t/GtkRecentFilter.t --- old/Gtk2-1.2492/t/GtkRecentFilter.t 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkRecentFilter.t 2014-12-23 07:18:16.000000000 +0100 @@ -1,8 +1,20 @@ #!/usr/bin/perl -w use strict; + +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper tests => 13, - at_least_version => [2, 10, 0, "GtkRecentFilter"]; + at_least_version => [2, 10, 0, "GtkRecentFilter"], + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); # $Id$ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/t/GtkRecentManager.t new/Gtk2-1.2496/t/GtkRecentManager.t --- old/Gtk2-1.2492/t/GtkRecentManager.t 2014-01-18 19:00:49.000000000 +0100 +++ new/Gtk2-1.2496/t/GtkRecentManager.t 2014-12-23 07:18:16.000000000 +0100 @@ -16,8 +16,19 @@ use File::Temp qw(tempdir); my $dir = tempdir(CLEANUP => 1); +sub on_unthreaded_freebsd { + if ($^O eq 'freebsd') { + require Config; + if ($Config::Config{ldflags} !~ m/-pthread\b/) { + return 1; + } + } + return 0; +} + use Gtk2::TestHelper tests => 36, at_least_version => [2, 10, 0, "GtkRecentManager is new in 2.10"], + (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()), ; my $manager = Gtk2::RecentManager->get_default; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/xs/GdkDisplay.xs new/Gtk2-1.2496/xs/GdkDisplay.xs --- old/Gtk2-1.2492/xs/GdkDisplay.xs 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/xs/GdkDisplay.xs 2015-01-24 14:12:40.000000000 +0100 @@ -69,8 +69,6 @@ devices = gdk_display_list_devices (display); for (i = devices ; i != NULL ; i = i->next) XPUSHs (sv_2mortal (newSVGdkDevice (i->data))); - g_list_free (devices); - GdkEvent* gdk_display_get_event (GdkDisplay *display) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/xs/GtkBuilder.xs new/Gtk2-1.2496/xs/GtkBuilder.xs --- old/Gtk2-1.2492/xs/GtkBuilder.xs 2012-04-28 06:00:45.000000000 +0200 +++ new/Gtk2-1.2496/xs/GtkBuilder.xs 2015-08-10 02:02:39.000000000 +0200 @@ -70,8 +70,10 @@ MODULE = Gtk2::Builder PACKAGE = Gtk2::Builder PREFIX = gtk_builder_ BOOT: - gperl_register_fundamental (gtk2perl_connect_flags_get_type (), - "Glib::ConnectFlags"); + if (!gperl_type_from_package ("Glib::ConnectFlags")) { + gperl_register_fundamental (gtk2perl_connect_flags_get_type (), + "Glib::ConnectFlags"); + } gperl_register_error_domain (GTK_BUILDER_ERROR, GTK_TYPE_BUILDER_ERROR, "Gtk2::Builder::Error"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gtk2-1.2492/xs/GtkTreeViewColumn.xs new/Gtk2-1.2496/xs/GtkTreeViewColumn.xs --- old/Gtk2-1.2492/xs/GtkTreeViewColumn.xs 2011-11-24 08:28:17.000000000 +0100 +++ new/Gtk2-1.2496/xs/GtkTreeViewColumn.xs 2014-11-26 07:18:28.000000000 +0100 @@ -381,6 +381,7 @@ #if GTK_CHECK_VERSION(2,2,0) +# FIXME: The boolean return value should not be ignored. #### gboolean gtk_tree_view_column_cell_get_position (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell_renderer, gint *start_pos, gint *width) void gtk_tree_view_column_cell_get_position (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell_renderer, OUTLIST gint start_pos, OUTLIST gint width) ++++++ perl-Gtk2-fix-test-failure.patch ++++++ From: Torsten Schönfeld <kaffeetisch@gmx.de> Date: 2015-08-14 21:37:46 +0000 Subject: Fix a test failure in t/GdkWindow.t References: bnc#932349 Upstream: merged It occurs only on gtk+ >= 2.24.26 and < 2.24.29. --- t/GdkWindow.t | 12 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) --- a/t/GdkWindow.t +++ b/t/GdkWindow.t @@ -191,9 +191,19 @@ $window -> shape_combine_region($region, 1, 1); $window -> shape_combine_mask(undef, 0, 0); $window -> shape_combine_region(undef, 0, 0); +SKIP: { + skip 'child shapes functions trigger a bug', 0 + if (Gtk2->CHECK_VERSION (2, 24, 26) && !Gtk2->CHECK_VERSION (2, 24, 29)); + + # Introduced in + # <https://git.gnome.org/browse/gtk+/commit/?h=gtk-2-24&id=aff976ef0dad471edc35d65b9d1b5ba97da1698e>, + # fixed in + # <https://git.gnome.org/browse/gtk+/commit/?h=gtk-2-24&id=7ee8b1fd9af52842e87c26465b9aa8921e62ec90>. + + $window -> set_child_shapes(); + $window -> merge_child_shapes(); +} -$window -> set_child_shapes(); -$window -> merge_child_shapes(); $window -> set_static_gravities(0); # FIXME: check retval? $window -> set_title("Blub"); $window -> set_background(Gtk2::Gdk::Color -> new(255, 255, 255));