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 - [email protected]
+
+- 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 - [email protected]
+
+- 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
[email protected] at lists.gnome.org.
+To discuss gtk2-perl, ask questions and flame/praise the authors,
+join [email protected] 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 <[email protected]>
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));

Reply via email to