The unified diff between revisions [df87519a..] and [ac7bb8ae..] is displayed below. It can also be downloaded as a raw diff.

#
#
# delete "contrib/glib-2.22.4.diff"
#
# delete "contrib/gtk+-2.18.6.diff"
#
# rename "contrib/cairo-1.8.8-win32.diff"
#     to "contrib/cairo-1.8.10-win32.diff"
#
# rename "contrib/cairo-1.8.8.diff"
#     to "contrib/cairo-1.8.10.diff"
#
# rename "contrib/glib-2.22.4-win32.diff"
#     to "contrib/glib-2.23.4-win32.diff"
#
# rename "contrib/gtk+-2.18.6-darwin.diff"
#     to "contrib/gtk+-2.18.7-darwin.diff"
#
# rename "contrib/gtk+-2.18.6-win32.diff"
#     to "contrib/gtk+-2.18.7-win32.diff"
#
# rename "contrib/pango-1.26.1.diff"
#     to "contrib/pango-1.26.2.diff"
#
# add_file "contrib/glib-2.23.4.diff"
#  content [4de82618c1de6b76e9a00617e65ced4d4e6b3f73]
#
# add_file "contrib/gtk+-2.16.6-win32.diff"
#  content [509e0ed1347abba8c4cb0640d870bb3f6d64e044]
#
# add_file "contrib/gtk+-2.16.6.diff"
#  content [886f94618eaaa9e5e1f0de6c4e1bf4f45eab0c60]
#
# add_file "contrib/gtk+-2.18.7.diff"
#  content [272d25fb3b97154d4022a1ddc58900b338017c49]
#
# add_file "contrib/pygobject-2.18.0.diff"
#  content [80dccaf30dea2450b944cb363a19534bf8f85001]
#
# add_file "contrib/pygobject-2.21.1.diff"
#  content [397690d8c804d1a9cff28b4b823ba43ef5fd4881]
#
# patch "aclocal.m4"
#  from [ef4fcd7ab8e103b3bf67d9ae454422f4e940ecb4]
#    to [bd6dd214273d1df21a52647496c8847a2654e089]
#
# patch "configure"
#  from [bcd142d75c0713ecb3dc2b0fecda10372b998e94]
#    to [d661cc5f697815d3ea6c56cd34be9092a1c0d3ad]
#
# patch "contrib/README"
#  from [53ec377f471be3e7d085c1a08bbed1d07044bf9a]
#    to [8e9b9dd6454ff90995161d1524b4d98f4f5c8ab8]
#
# patch "contrib/pango-1.26.2.diff"
#  from [531522a0f5422e89c61a075aeb62362d29956e1a]
#    to [58fa0101ed1829b6aa355012b17a1123303a6216]
#
# patch "src/gtk-enums.ads"
#  from [530680cac74db7b197195e912ce32b9aec3c6970]
#    to [97e99d580f5c41a6b3ce2e116a24fb70467beced]
#
# patch "src/gtk-toolbar.ads"
#  from [3b2f216a48641a8d1d9050e585923172420f225e]
#    to [a105af5adf57ea05a80186ef517672aa2cf58563]
#
# patch "src/opengl/gl_h.ads"
#  from [756a57fcab1c7bb4dce9a4536644210decad7a42]
#    to [9a990b321c3af85868758a63ef9564cb05c83c3a]
#
============================================================
--- contrib/glib-2.23.4.diff	4de82618c1de6b76e9a00617e65ced4d4e6b3f73
+++ contrib/glib-2.23.4.diff	4de82618c1de6b76e9a00617e65ced4d4e6b3f73
@@ -0,0 +1,62 @@
+	* gio/gsocket.c: Fix build on Solaris 8 by providing needed macros
+	defined on Solaris 10.
+	Submitted at: https://bugzilla.gnome.org/show_bug.cgi?id=610664
+
+	* gio/Makefile.in: Disable build in subdirectory tests, which does
+	not build out of the box on Solaris
+
+--- gio/gsocket.c.old	2010-01-07 01:19:12.000000000 +0100
++++ gio/gsocket.c	2010-01-29 13:07:02.275043000 +0100
+@@ -55,6 +55,16 @@
+
+ #include "gioalias.h"
+
++#if defined (sun) && !defined (CMSG_SPACE)
++/* Amount of space + padding needed for a message of length l */
++#define CMSG_SPACE(l)                                                   \
++        ((unsigned int)_CMSG_HDR_ALIGN(sizeof (struct cmsghdr) + (l)))
++
++/* Value to be used in cmsg_len, does not include trailing padding */
++#define CMSG_LEN(l)                                                     \
++        ((unsigned int)_CMSG_DATA_ALIGN(sizeof (struct cmsghdr)) + (l))
++#endif
++
+ /**
+  * SECTION:gsocket
+  * @short_description: Low-level socket object
+*** gio/Makefile.in.original	Tue Feb 16 17:28:32 2010
+--- gio/Makefile.in	Tue Feb 16 17:28:56 2010
+*************** ETAGS = etags
+*** 258,264 ****
+  CTAGS = ctags
+  am__tty_colors = \
+  red=; grn=; lgn=; blu=; std=
+! DIST_SUBDIRS = libasyncns xdgmime inotify fen win32 . fam tests
+  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+  am__relativize = \
+    dir0=`pwd`; \
+--- 258,264 ----
+  CTAGS = ctags
+  am__tty_colors = \
+  red=; grn=; lgn=; blu=; std=
+! DIST_SUBDIRS = libasyncns xdgmime inotify fen win32 . fam
+  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+  am__relativize = \
+    dir0=`pwd`; \
+*************** EXTRA_DIST = gio-marshal.list gio.symbol
+*** 508,514 ****
+  TEST_PROGS =
+  NULL =
+  SUBDIRS = $(am__append_1) $(am__append_2) $(am__append_6) \
+! 	$(am__append_9) . $(am__append_12) tests
+  @MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@noinst_DATA = gio-2.0.lib
+  @MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@install_ms_lib_cmd = $(INSTALL) gio-2.0.lib $(DESTDIR)$(libdir)
+  @MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gio-2.0.lib
+--- 508,514 ----
+  TEST_PROGS =
+  NULL =
+  SUBDIRS = $(am__append_1) $(am__append_2) $(am__append_6) \
+! 	$(am__append_9) . $(am__append_12)
+  @MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@noinst_DATA = gio-2.0.lib
+  @MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@install_ms_lib_cmd = $(INSTALL) gio-2.0.lib $(DESTDIR)$(libdir)
+  @MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gio-2.0.lib
============================================================
--- contrib/gtk+-2.16.6-win32.diff	509e0ed1347abba8c4cb0640d870bb3f6d64e044
+++ contrib/gtk+-2.16.6-win32.diff	509e0ed1347abba8c4cb0640d870bb3f6d64e044
@@ -0,0 +1,252 @@
+2010-02-18      Arnaud Charlet  <charlet@adacore.com>
+
+	* modules/engines/ms-windows/xp_theme.c: Fix invisible menu separator.
+
+2010-02-01      Arnaud Charlet  <charlet@adacore.com>
+
+	* gdk/win32/gdkdrawable-win32.c	(draw_segments): Ignore LineTo
+	errors.
+
+2009-09-29      Nicolas Setton  <setton@adacore.com>
+
+	* gdk/win32/gdkevents-win32.c:
+	Protect against infinite loop in the events processing queue, in cases
+	where the translation of events cause the same events to be
+	regenerated. This protects against two cases of loops that have been
+	observed under Citrix.
+	(gdk_event_translate): Protect against reentry on move or size events
+	that are being re-posted by Gtk+, which happens when a Citrix window
+	receives move events but has never been mapped to a Gtk+ window.
+	(_gdk_event_queue): After having processed all the messages, reset the
+	reentry flags.
+
+2009-07-20	Arnaud Charlet	<charlet@adacore.com>
+
+	* configure: Work around ^M handling on cygwin with igncr
+
+2009-02-24	Arnaud Charlet	<charlet@adacore.com>
+
+	* gtk/gtkmain.c (gtk_grab_notify_foreach): Disable event crossing
+	handling, causing crashes.
+
+2007-10-10	Arnaud Charlet	<charlet@adacore.com>
+
+	* modules/engines/ms-windows/msw_style.c (draw_themed_tab_button):
+	Avoid SEGV in case pixbuf is null or clip_rect is empty.
+	Fixes G928-005
+
+2006-06-05	Arnaud Charlet	<charlet@adacore.com>
+
+	* gdk/win32/gdkgc-win32.c (_gdk_win32_gdkregion_to_hrgn): Disable
+	harmless warning which is occurring often with Gtk+ >= 2.8.18
+
+2002-11-25	Arnaud Charlet	<charlet@adacore.com>
+
+	* gdk/win32/gdkevents-win32.c (handle_wm_paint): Force an update when
+	paint message is received, otherwise windows in background are not
+	immediately refreshed when moving a modal window on top of them.
+
+	* gdk/Makefile.in: Remove gdk-win32res.o dependency,
+	since we do not want to use the default Gtk+ icon.
+
+--- gdk/win32/gdkevents-win32.c.old	2009-12-22 12:37:10.468370000 +0100
++++ gdk/win32/gdkevents-win32.c	2010-01-06 17:04:42.923000000 +0100
+@@ -1692,6 +1692,12 @@ handle_wm_paint (MSG        *msg,
+     _gdk_window_invalidate_for_expose (window, update_region);
+   gdk_region_destroy (update_region);
+
++  /* Force a process_updates to refresh visible windows
++   * when receiving a paint message. */
++
++  if (!GDK_WINDOW_DESTROYED (window) && gdk_window_is_visible (window))
++    gdk_window_process_updates (window, FALSE);
++
+   DeleteObject (hrgn);
+ }
+
+--- gdk/win32/gdkgc-win32.c.old	2005-07-18 17:20:28.000000000 +0200
++++ gdk/win32/gdkgc-win32.c	2006-06-05 14:56:59.515625000 +0200
+@@ -1160,8 +1160,7 @@ _gdk_win32_gdkregion_to_hrgn (GdkRegion
+       if (rect->bottom > rgndata->rdh.rcBound.bottom)
+ 	rgndata->rdh.rcBound.bottom = rect->bottom;
+     }
+-  if ((hrgn = ExtCreateRegion (NULL, nbytes, rgndata)) == NULL)
+-    WIN32_API_FAILED ("ExtCreateRegion");
++  hrgn = ExtCreateRegion (NULL, nbytes, rgndata);
+
+   g_free (rgndata);
+
+--- modules/engines/ms-windows/msw_style.c.orig	2008-03-12 05:17:03.000000000 +0100
++++ modules/engines/ms-windows/msw_style.c	2008-04-17 18:35:13.515625000 +0200
+@@ -2649,6 +2649,9 @@ draw_themed_tab_button (GtkStyle *style,
+       GdkPixbuf *pixbuf;
+       GdkPixbuf *rotated;
+
++      if (clip_rect.width <= 0 || clip_rect.height <= 0)
++        return TRUE;
++
+       if (gap_side == GTK_POS_LEFT || gap_side == GTK_POS_RIGHT)
+ 	{
+ 	  pixmap = gdk_pixmap_new (window, clip_rect.height, clip_rect.width, -1);
+@@ -2682,6 +2685,7 @@ draw_themed_tab_button (GtkStyle *style,
+ 	  g_object_unref (pixmap);
+ 	}
+
++      if (pixbuf != NULL) {
+       rotated = gdk_pixbuf_rotate_simple (pixbuf, rotation);
+       g_object_unref (pixbuf);
+       pixbuf = rotated;
+@@ -2710,6 +2714,7 @@ draw_themed_tab_button (GtkStyle *style,
+ 		       clip_rect.width, clip_rect.height, GDK_RGB_DITHER_NONE,
+ 		       0, 0);
+       g_object_unref (pixbuf);
++      }
+     }
+
+   return TRUE;
+--- gtk/gtkmain.c.old	2009-02-24 10:44:02.598600000 +0100
++++ gtk/gtkmain.c	2009-02-24 10:45:04.218600000 +0100
+@@ -1707,19 +1707,23 @@ gtk_grab_notify_foreach (GtkWidget *chil
+   if (is_shadowed)
+     {
+       GTK_PRIVATE_SET_FLAG (child, GTK_SHADOWED);
++#if !defined (_WIN32)
+       if (!was_shadowed && GTK_WIDGET_HAS_POINTER (child)
+ 	  && GTK_WIDGET_IS_SENSITIVE (child))
+ 	_gtk_widget_synthesize_crossing (child, info->new_grab_widget,
+ 					 GDK_CROSSING_GTK_GRAB);
++#endif
+     }
+   else
+     {
+       GTK_PRIVATE_UNSET_FLAG (child, GTK_SHADOWED);
++#if !defined (_WIN32)
+       if (was_shadowed && GTK_WIDGET_HAS_POINTER (child)
+ 	  && GTK_WIDGET_IS_SENSITIVE (child))
+ 	_gtk_widget_synthesize_crossing (info->old_grab_widget, child,
+ 					 info->from_grab ? GDK_CROSSING_GTK_GRAB
+ 					 : GDK_CROSSING_GTK_UNGRAB);
++#endif
+     }
+
+   if (was_shadowed != is_shadowed)
+--- configure.old	2009-02-23 15:54:03.650263500 +0100
++++ configure	2009-02-23 15:54:54.711263500 +0100
+@@ -36969,6 +36971,7 @@ if test "$ac_cs_awk_cr" = "a${ac_cr}b";
+ else
+   ac_cs_awk_cr=$ac_cr
+ fi
++ac_cs_awk_cr=$ac_cr
+
+ echo 'BEGIN {' >"$tmp/subs1.awk" &&
+ _ACEOF
+*** gdk/win32/gdkevents-win32.c.before_patch	2009-09-22 20:06:09.000000000 +0200
+--- gdk/win32/gdkevents-win32.c	2009-09-24 16:25:23.000000000 +0200
+*************** static UINT client_message;
+*** 133,138 ****
+--- 133,144 ----
+  static UINT got_gdk_events_message;
+  static HWND modal_win32_dialog = NULL;
+
++ /* The following variables are used to protect against re-entry in the
++    _gdk_event_queue main loop, which can happen under Citrix. */
++ static gint activate_events = 0;
++ static gint move_or_size_events = 0;
++ static gint reentry_threshold = 3;
++
+  #if 0
+  static HKL latin_locale = NULL;
+  #endif
+*************** gdk_event_translate (MSG  *msg,
+*** 2324,2330 ****
+  	   */
+  	  GDK_NOTE (EVENTS, g_print (" (posted)"));
+
+! 	  PostMessageW (msg->hwnd, msg->message, msg->wParam, msg->lParam);
+  	}
+        else if (msg->message == WM_CREATE)
+  	{
+--- 2330,2340 ----
+  	   */
+  	  GDK_NOTE (EVENTS, g_print (" (posted)"));
+
+! 	  /* Do not post this message if we have posted it too many times
+! 	     within the same event loop. */
+! 	  move_or_size_events += 1;
+! 	  if (move_or_size_events < reentry_threshold)
+! 	     PostMessageW (msg->hwnd, msg->message, msg->wParam, msg->lParam);
+  	}
+        else if (msg->message == WM_CREATE)
+  	{
+*************** gdk_event_translate (MSG  *msg,
+*** 3695,3701 ****
+        if (is_modally_blocked (window) && LOWORD (msg->wParam) == WA_ACTIVE)
+  	{
+  	  GdkWindow *modal_current = _gdk_modal_current ();
+! 	  SetActiveWindow (GDK_WINDOW_HWND (modal_current));
+  	  *ret_valp = 0;
+  	  return_val = TRUE;
+  	  break;
+--- 3705,3717 ----
+        if (is_modally_blocked (window) && LOWORD (msg->wParam) == WA_ACTIVE)
+  	{
+  	  GdkWindow *modal_current = _gdk_modal_current ();
+!
+! 	  /* Do not change the active window if we have done this too many
+! 	     times within the same event loop. */
+! 	  activate_events += 1;
+! 	  if (activate_events < reentry_threshold)
+! 	      SetActiveWindow (GDK_WINDOW_HWND (modal_current));
+!
+  	  *ret_valp = 0;
+  	  return_val = TRUE;
+  	  break;
+*************** _gdk_events_queue (GdkDisplay *display)
+*** 3775,3780 ****
+--- 3791,3801 ----
+        TranslateMessage (&msg);
+        DispatchMessageW (&msg);
+      }
++
++    /* we are leaving the events queue processing: reset flags that protect
++       against re-entry */
++    activate_events = 0;
++    move_or_size_events = 0;
+  }
+
+  static gboolean
+--- gdk/win32/gdkdrawable-win32.c.old	2010-01-31 18:48:07.679800000 +0100
++++ gdk/win32/gdkdrawable-win32.c	2010-01-31 18:48:32.429800000 +0100
+@@ -1246,7 +1246,7 @@ draw_segments (GdkGCWin32 *gcwin32,
+
+ 	  GDK_NOTE (DRAW, g_print (" +%d+%d..+%d+%d", x1, y1, x2, y2));
+ 	  GDI_CALL (MoveToEx, (hdc, x1, y1, NULL)) &&
+-	    GDI_CALL (LineTo, (hdc, x2, y2));
++	    LineTo (hdc, x2, y2);
+ 	}
+
+       GDK_NOTE (DRAW, g_print ("\n"));
+--- gdk/Makefile.in.orig	2009-08-29 05:43:07.000000000 +0200
++++ gdk/Makefile.in	2010-02-12 10:14:43.210000000 +0100
+@@ -596,8 +596,8 @@ libgdk_win32_2_0_la_SOURCES = $(common_s
+ libgdk_win32_2_0_la_LIBADD = win32/libgdk-win32.la $(GDK_DEP_LIBS) \
+   $(top_builddir)/gdk-pixbuf/libgdk_pixbuf-$(GTK_API_VERSION).la
+
+-libgdk_win32_2_0_la_DEPENDENCIES = win32/libgdk-win32.la win32/rc/gdk-win32-res.o gdk.def
+-libgdk_win32_2_0_la_LDFLAGS = -Wl,win32/rc/gdk-win32-res.o -export-symbols $(srcdir)/gdk.def $(LDADD)
++libgdk_win32_2_0_la_DEPENDENCIES = win32/libgdk-win32.la gdk.def
++libgdk_win32_2_0_la_LDFLAGS = -export-symbols $(srcdir)/gdk.def $(LDADD)
+
+ @MS_LIB_AVAILABLE_TRUE@noinst_DATA = gdk-win32-$(GTK_API_VERSION).lib
+
+--- modules/engines/ms-windows/xp_theme.c.old	2010-02-17 18:33:08
++++ modules/engines/ms-windows/xp_theme.c	2010-02-18 10:36:13
+@@ -150,7 +150,7 @@ static const short element_part_map[XP_T
+   RP_CHEVRON,
+   TP_BUTTON,
+   MENU_POPUPITEM, /*MP_MENUITEM,*/
+-  MENU_POPUPSEPARATOR,  /*MP_SEPARATOR,*/
++  /*MENU_POPUPSEPARATOR,*/  MP_SEPARATOR,
+   SP_GRIPPER,
+   SP_PANE,
+   GP_LINEHORZ,
============================================================
--- contrib/gtk+-2.16.6.diff	886f94618eaaa9e5e1f0de6c4e1bf4f45eab0c60
+++ contrib/gtk+-2.16.6.diff	886f94618eaaa9e5e1f0de6c4e1bf4f45eab0c60
@@ -0,0 +1,111 @@
+2009-09-19  Arnaud Charlet  <charlet@adacore.com>
+
+	* gtk/gtktreemodel.c (gtk_tree_model_row_has_child_toggled): Replace
+	g_return_if_fail by explicit check, since path may legitimately
+	be NULL (I918-021).
+
+2009-01-12  Nicolas Setton  <setton@adacore.com>
+
+	* gtktreeview.c (gtk_tree_view_enter_notify): Do not react to
+	 crossing events.
+	(gtk_tree_view_leave_notify): Likewise.
+        Prevents unwanted side-effects of synth-crossing. (I106-018)
+
+2009-01-06  Nicolas Setton  <setton@adacore.com>
+
+	* gtk/gtktreeview.c (gtk_tree_view_enter_notify): Put kludge to
+	work around Gtk+ bug in handling of keyboard keys+focus events in
+	tree view (HC15-032).
+
+2006-02-23  Arnaud Charlet  <charlet@adacore.com>
+
+	* gdk/x11/gdkasync.c: #define ANSICPP on Solaris, to work around
+	bug in X11/Xmd.h on Solaris 8.
+
+2003-11-27  Arnaud Charlet  <charlet@adacore.com>
+
+	* gtk/gtktextview.c (incremental_validate_callback): Increase amount
+	of characters validated at each call, this gives a better behavior
+	when loading big files.
+	Submitted at http://bugzilla.gnome.org/show_bug.cgi?id=332057
+
+--- gtk/gtktextview.c.old	2006-02-17 16:11:04.000000000 +0100
++++ gtk/gtktextview.c	2006-02-20 17:08:54.691581240 +0100
+@@ -3273,7 +3273,7 @@ incremental_validate_callback (gpointer
+
+   DV(g_print(G_STRLOC"\n"));
+
+-  gtk_text_layout_validate (text_view->layout, 2000);
++  gtk_text_layout_validate (text_view->layout, 20000);
+
+   gtk_text_view_update_adjustments (text_view);
+
+--- gdk/x11/gdkasync.c.old	Thu Feb 23 11:30:46 2006
++++ gdk/x11/gdkasync.c	Thu Feb 23 11:48:14 2006
+@@ -47,6 +47,11 @@ in this Software without prior written a
+ #ifdef NEED_XIPROTO_H_FOR_XREPLY
+ #include <X11/extensions/XIproto.h>
+ #endif
++
++#if defined (sun) && defined (__SVR4)
++#define ANSICPP
++#endif
++
+ #include <X11/Xlibint.h>
+ #include "gdkasync.h"
+ #include "gdkx.h"
+--- gtk/gtktreeview.c.old	2008-11-24 07:35:35.000000000 +0100
++++ gtk/gtktreeview.c	2009-01-06 15:14:25.171875000 +0100
+@@ -5459,6 +5459,9 @@ gtk_tree_view_enter_notify (GtkWidget
+   if (tree_view->priv->tree == NULL)
+     return FALSE;
+
++  if (event->y == 0)
++    return FALSE;
++
+   /* find the node internally */
+   new_y = TREE_WINDOW_Y_TO_RBTREE_Y(tree_view, event->y);
+   if (new_y < 0)
+--- gtk/gtktreeview.c.orig	2009-01-12 11:49:09.000000000 +0100
++++ gtk/gtktreeview.c	2009-01-12 15:44:05.000000000 +0100
+@@ -5461,6 +5461,12 @@ gtk_tree_view_enter_notify (GtkWidget
+   GtkRBNode *node;
+   gint new_y;
+
++  if (event->mode == GDK_CROSSING_GRAB
++      || event->mode == GDK_CROSSING_NORMAL
++      || event->mode == GDK_CROSSING_GTK_GRAB
++      || event->mode == GDK_CROSSING_GTK_UNGRAB)
++    return TRUE;
++
+   /* Sanity check it */
+   if (event->window != tree_view->priv->bin_window)
+     return FALSE;
+@@ -5487,7 +5493,10 @@ gtk_tree_view_leave_notify (GtkWidget
+ {
+   GtkTreeView *tree_view;
+
+-  if (event->mode == GDK_CROSSING_GRAB)
++  if (event->mode == GDK_CROSSING_GRAB
++      || event->mode == GDK_CROSSING_NORMAL
++      || event->mode == GDK_CROSSING_GTK_GRAB
++      || event->mode == GDK_CROSSING_GTK_UNGRAB)
+     return TRUE;
+
+   tree_view = GTK_TREE_VIEW (widget);
+--- gtk/gtktreemodel.c.old	2009-09-19 12:03:49.804000000 +0200
++++ gtk/gtktreemodel.c	2009-09-19 12:41:00.954000000 +0200
+@@ -1512,8 +1512,11 @@ gtk_tree_model_row_has_child_toggled (Gt
+ 				      GtkTreeIter  *iter)
+ {
+   g_return_if_fail (GTK_IS_TREE_MODEL (tree_model));
+-  g_return_if_fail (path != NULL);
+-  g_return_if_fail (iter != NULL);
++
++  if (path == NULL)
++    return;
++  if (iter == NULL)
++    return;
+
+   g_signal_emit (tree_model, tree_model_signals[ROW_HAS_CHILD_TOGGLED], 0, path, iter);
+ }
============================================================
--- contrib/gtk+-2.18.7.diff	272d25fb3b97154d4022a1ddc58900b338017c49
+++ contrib/gtk+-2.18.7.diff	272d25fb3b97154d4022a1ddc58900b338017c49
@@ -0,0 +1,143 @@
+2010-02-24  Arnaud Charlet  <charlet@adacore.com>
+
+	* gdk/x11/gdkdnd-x11.c: Fix build on Solaris 8.
+	Submitted at https://bugzilla.gnome.org/show_bug.cgi?id=610966
+
+2010-01-11  Arnaud Charlet  <charlet@adacore.com>
+
+	* gdk/gdkwindow.c (gdk_window_get_composite_drawable): Protect
+	against NULL access.
+	Observed when creating a new file in GPS under Windows.
+
+2009-09-19  Arnaud Charlet  <charlet@adacore.com>
+
+	* gtk/gtktreemodel.c (gtk_tree_model_row_has_child_toggled): Replace
+	g_return_if_fail by explicit check, since path may legitimately
+	be NULL (I918-021).
+
+2009-01-12  Nicolas Setton  <setton@adacore.com>
+
+	* gtktreeview.c (gtk_tree_view_enter_notify): Do not react to
+	crossing events.
+	(gtk_tree_view_leave_notify): Likewise.
+        Prevents unwanted side-effects of synth-crossing. (I106-018)
+
+2009-01-06  Nicolas Setton  <setton@adacore.com>
+
+	* gtk/gtktreeview.c (gtk_tree_view_enter_notify): Put kludge to
+	work around Gtk+ bug in handling of keyboard keys+focus events in
+	tree view (HC15-032).
+
+2006-02-23  Arnaud Charlet  <charlet@adacore.com>
+
+	* gdk/x11/gdkasync.c: #define ANSICPP on Solaris, to work around
+	bug in X11/Xmd.h on Solaris 8.
+
+2003-11-27  Arnaud Charlet  <charlet@adacore.com>
+
+	* gtk/gtktextview.c (incremental_validate_callback): Increase amount
+	of characters validated at each call, this gives a better behavior
+	when loading big files.
+	Submitted at http://bugzilla.gnome.org/show_bug.cgi?id=332057
+
+--- gtk/gtktextview.c.old	2006-02-17 16:11:04.000000000 +0100
++++ gtk/gtktextview.c	2006-02-20 17:08:54.691581240 +0100
+@@ -3273,7 +3273,7 @@ incremental_validate_callback (gpointer
+
+   DV(g_print(G_STRLOC"\n"));
+
+-  gtk_text_layout_validate (text_view->layout, 2000);
++  gtk_text_layout_validate (text_view->layout, 20000);
+
+   gtk_text_view_update_adjustments (text_view);
+
+--- gdk/x11/gdkasync.c.old	Thu Feb 23 11:30:46 2006
++++ gdk/x11/gdkasync.c	Thu Feb 23 11:48:14 2006
+@@ -47,6 +47,11 @@ in this Software without prior written a
+ #ifdef NEED_XIPROTO_H_FOR_XREPLY
+ #include <X11/extensions/XIproto.h>
+ #endif
++
++#if defined (sun) && defined (__SVR4)
++#define ANSICPP
++#endif
++
+ #include <X11/Xlibint.h>
+ #include "gdkasync.h"
+ #include "gdkx.h"
+--- gtk/gtktreeview.c.old	2008-11-24 07:35:35.000000000 +0100
++++ gtk/gtktreeview.c	2009-01-06 15:14:25.171875000 +0100
+@@ -5459,6 +5459,9 @@ gtk_tree_view_enter_notify (GtkWidget
+   if (tree_view->priv->tree == NULL)
+     return FALSE;
+
++  if (event->y == 0)
++    return FALSE;
++
+   /* find the node internally */
+   new_y = TREE_WINDOW_Y_TO_RBTREE_Y(tree_view, event->y);
+   if (new_y < 0)
+--- gtk/gtktreeview.c.orig	2009-01-12 11:49:09.000000000 +0100
++++ gtk/gtktreeview.c	2009-01-12 15:44:05.000000000 +0100
+@@ -5461,6 +5461,12 @@ gtk_tree_view_enter_notify (GtkWidget
+   GtkRBNode *node;
+   gint new_y;
+
++  if (event->mode == GDK_CROSSING_GRAB
++      || event->mode == GDK_CROSSING_NORMAL
++      || event->mode == GDK_CROSSING_GTK_GRAB
++      || event->mode == GDK_CROSSING_GTK_UNGRAB)
++    return TRUE;
++
+   /* Sanity check it */
+   if (event->window != tree_view->priv->bin_window)
+     return FALSE;
+@@ -5487,7 +5493,10 @@ gtk_tree_view_leave_notify (GtkWidget
+ {
+   GtkTreeView *tree_view;
+
+-  if (event->mode == GDK_CROSSING_GRAB)
++  if (event->mode == GDK_CROSSING_GRAB
++      || event->mode == GDK_CROSSING_NORMAL
++      || event->mode == GDK_CROSSING_GTK_GRAB
++      || event->mode == GDK_CROSSING_GTK_UNGRAB)
+     return TRUE;
+
+   tree_view = GTK_TREE_VIEW (widget);
+--- gtk/gtktreemodel.c.old	2009-09-19 12:03:49.804000000 +0200
++++ gtk/gtktreemodel.c	2009-09-19 12:41:00.954000000 +0200
+@@ -1512,8 +1512,11 @@ gtk_tree_model_row_has_child_toggled (Gt
+ 				      GtkTreeIter  *iter)
+ {
+   g_return_if_fail (GTK_IS_TREE_MODEL (tree_model));
+-  g_return_if_fail (path != NULL);
+-  g_return_if_fail (iter != NULL);
++
++  if (path == NULL)
++    return;
++  if (iter == NULL)
++    return;
+
+   g_signal_emit (tree_model, tree_model_signals[ROW_HAS_CHILD_TOGGLED], 0, path, iter);
+ }
+--- gdk/gdkwindow.c.old	2009-12-08 16:13:05.000000000 +0100
++++ gdk/gdkwindow.c	2010-01-10 20:33:05.783000000 +0100
+@@ -3858,7 +3858,7 @@ gdk_window_get_composite_drawable (GdkDr
+ 		     width, height);
+
+   /* paint the backing stores */
+-  if (implicit_paint)
++  if (implicit_paint && list != NULL)
+     {
+       GdkWindowPaint *paint = list->data;
+
+--- gdk/x11/gdkdnd-x11.c.old	2010-02-13 01:28:51.000000000 +0100
++++ gdk/x11/gdkdnd-x11.c	2010-02-24 17:05:07.428011000 +0100
+@@ -27,6 +27,7 @@
+ #include "config.h"
+ #include <X11/Xlib.h>
+ #include <X11/Xatom.h>
++#include <X11/Xutil.h>
+ #include <X11/extensions/shape.h>
+
+ #include <string.h>
============================================================
--- contrib/pygobject-2.18.0.diff	80dccaf30dea2450b944cb363a19534bf8f85001
+++ contrib/pygobject-2.18.0.diff	80dccaf30dea2450b944cb363a19534bf8f85001
@@ -0,0 +1,68 @@
+	* Fixes build with --disable-thread
+	Submitted at: http://bugzilla.gnome.org/show_bug.cgi?id=374603
+
+--- gobject/pygobject-private.h.orig	Wed May 13 23:56:45 2009
++++ gobject/pygobject-private.h	Tue Jul 21 09:02:57 2009
+@@ -32,12 +32,18 @@ extern struct _PyGObject_Functions pygob
+
+ #define pyg_threads_enabled (pygobject_api_functions.threads_enabled)
+
++#ifdef DISABLE_THREADING
++#define pyg_gil_state_ensure() 0
++#define pyg_gil_state_release(state) G_STMT_START {     \
++    } G_STMT_END
+
++#else
+ #define pyg_gil_state_ensure() (pygobject_api_functions.threads_enabled? (PyGILState_Ensure()) : 0)
+ #define pyg_gil_state_release(state) G_STMT_START {     \
+     if (pygobject_api_functions.threads_enabled)        \
+         PyGILState_Release(state);                      \
+     } G_STMT_END
++#endif
+
+ #define pyg_begin_allow_threads                         \
+     G_STMT_START {                                      \
+--- glib/pyglib.c.old	2009-07-21 10:32:50.000000000 +0200
++++ glib/pyglib.c	2009-07-21 11:29:23.000000000 +0200
+@@ -107,7 +107,11 @@ pyglib_gil_state_ensure(void)
+     if (!_PyGLib_API->threads_enabled)
+ 	return PyGILState_LOCKED;
+
++#ifdef DISABLE_THREADING
++    return PyGILState_LOCKED;
++#else
+     return PyGILState_Ensure();
++#endif
+ }
+
+ void
+@@ -118,7 +122,9 @@ pyglib_gil_state_release(PyGILState_STAT
+     if (!_PyGLib_API->threads_enabled)
+ 	return;
+
++#ifndef DISABLE_THREADING
+     PyGILState_Release(state);
++#endif
+ }
+
+ /**
+@@ -184,13 +190,19 @@ _pyglib_notify_on_enabling_threads(PyGLi
+ int
+ pyglib_gil_state_ensure_py23 (void)
+ {
++#ifdef DISABLE_THREADING
++    return 0;
++#else
+     return PyGILState_Ensure();
++#endif
+ }
+
+ void
+ pyglib_gil_state_release_py23 (int flag)
+ {
++#ifndef DISABLE_THREADING
+     PyGILState_Release(flag);
++#endif
+ }
+
+ /**
============================================================
--- contrib/pygobject-2.21.1.diff	397690d8c804d1a9cff28b4b823ba43ef5fd4881
+++ contrib/pygobject-2.21.1.diff	397690d8c804d1a9cff28b4b823ba43ef5fd4881
@@ -0,0 +1,48 @@
+	* Fixes build with --disable-thread
+	Submitted at: http://bugzilla.gnome.org/show_bug.cgi?id=374603
+
+--- gobject/pygobject-private.h.orig	Wed May 13 23:56:45 2009
++++ gobject/pygobject-private.h	Tue Jul 21 09:02:57 2009
+@@ -32,12 +32,18 @@ extern struct _PyGObject_Functions pygob
+
+ #define pyg_threads_enabled (pygobject_api_functions.threads_enabled)
+
++#ifdef DISABLE_THREADING
++#define pyg_gil_state_ensure() 0
++#define pyg_gil_state_release(state) G_STMT_START {     \
++    } G_STMT_END
+
++#else
+ #define pyg_gil_state_ensure() (pygobject_api_functions.threads_enabled? (PyGILState_Ensure()) : 0)
+ #define pyg_gil_state_release(state) G_STMT_START {     \
+     if (pygobject_api_functions.threads_enabled)        \
+         PyGILState_Release(state);                      \
+     } G_STMT_END
++#endif
+
+ #define pyg_begin_allow_threads                         \
+     G_STMT_START {                                      \
+--- glib/pyglib.h.old	2009-06-17 22:48:38.000000000 +0200
++++ glib/pyglib.h	2010-01-28 11:03:09.000000000 +0100
+@@ -28,6 +28,9 @@
+
+ G_BEGIN_DECLS
+
++#define PyGILState_Ensure() 0
++#define PyGILState_Release(x) do {} while (0)
++
+ typedef void (*PyGLibThreadsEnabledFunc) (void);
+ typedef void (*PyGLibThreadBlockFunc) (void);
+
+--- gobject/pygobject.h.old	2010-01-29 08:28:30.000000000 +0100
++++ gobject/pygobject.h	2010-01-29 08:28:53.000000000 +0100
+@@ -9,6 +9,9 @@
+
+ G_BEGIN_DECLS
+
++#define PyGILState_Ensure() 0
++#define PyGILState_Release(x) do {} while (0)
++
+ /* This is deprecated, don't use */
+ #define PYGIL_API_IS_BUGGY FALSE
+
============================================================
--- aclocal.m4	ef4fcd7ab8e103b3bf67d9ae454422f4e940ecb4
+++ aclocal.m4	bd6dd214273d1df21a52647496c8847a2654e089
@@ -573,15 +573,20 @@ AC_DEFUN(AM_CHECK_OPENGL,
    AC_ARG_WITH(GL,         [  --with-GL=value         Which OpenGL library to compile GtkAda with (auto,GL,MesaGL,no)])
    AC_ARG_WITH(GL-prefix,  [  --with-GL-prefix=DIR    Prefix where GL/MesaGL is installed])

-
    if test "x$with_GL_prefix" = "x" ; then
       GL_LDOPTS=""
       GL_CFLAGS=""
    else
-      GL_LDOPTS="-L$with_GL_prefix/lib"
       GL_CFLAGS="-I$with_GL_prefix/include"
+      case "${host}" in
+         *64*)
+            GL_LDOPTS="-L$with_GL_prefix/lib64"
+            ;;
+         *)
+            GL_LDOPTS="-L$with_GL_prefix/lib"
+            ;;
+      esac
    fi
-

    saved_LIBS="$LIBS"

============================================================
--- configure	bcd142d75c0713ecb3dc2b0fecda10372b998e94
+++ configure	d661cc5f697815d3ea6c56cd34be9092a1c0d3ad
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 124002 .
+# From configure.in Revision: 156012 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.57.
 #
@@ -3492,16 +3492,21 @@ fi;

 fi;

-
    if test "x$with_GL_prefix" = "x" ; then
       GL_LDOPTS=""
       GL_CFLAGS=""
    else
-      GL_LDOPTS="-L$with_GL_prefix/lib"
       GL_CFLAGS="-I$with_GL_prefix/include"
+      case "${host}" in
+         *64*)
+            GL_LDOPTS="-L$with_GL_prefix/lib64"
+            ;;
+         *)
+            GL_LDOPTS="-L$with_GL_prefix/lib"
+            ;;
+      esac
    fi

-
    saved_LIBS="$LIBS"

    if test "x$with_GL" != xno ; then
============================================================
--- contrib/README	53ec377f471be3e7d085c1a08bbed1d07044bf9a
+++ contrib/README	8e9b9dd6454ff90995161d1524b4d98f4f5c8ab8
@@ -5,24 +5,24 @@ binding.pl: perl script used to automate

 binding.pl: perl script used to automate generation and update of GtkAda files.

-gtk+-2.18.6.diff: a patch against Gtk+ sources containing some
+gtk+-2.18.7.diff: a patch against Gtk+ sources containing some
 improvements/fixes not incorporated yet.

-gtk+-2.18.6-win32.diff: ditto for Windows
+gtk+-2.16.6-win32.diff: ditto for Windows

-glib-2.22.4.diff: ditto for glib
+glib-2.23.4.diff: ditto for glib

-glib-2.22.4-win32.diff: ditto for Windows
+glib-2.23.4-win32.diff: ditto for Windows

-cairo-1.8.8.diff: ditto for cairo
+cairo-1.8.10.diff: ditto for cairo

-cairo-1.8.8-win32.diff: ditto for cairo under Windows
+cairo-1.8.10-win32.diff: ditto for cairo under Windows

 pixman-0.15.12.diff: ditto for pixman

 pixman-0.15.12-win32.diff: ditto for pixman under Windows

-pango-1.26.1.diff: ditto for pango
+pango-1.26.2.diff: ditto for pango

 pango-1.20.3-win32.diff: ditto for pango under Windows
 pango-1.26.1-win32.diff: ditto for pango under Windows
============================================================
--- contrib/pango-1.26.1.diff	531522a0f5422e89c61a075aeb62362d29956e1a
+++ contrib/pango-1.26.2.diff	58fa0101ed1829b6aa355012b17a1123303a6216
@@ -7,7 +7,7 @@
  #define HB_COMMON_H

 +#ifdef sun
-+#include <sys/inttypes.h>
++#include <inttypes.h>
 +#else
  #include <stdint.h>
 +#endif
============================================================
--- src/gtk-enums.ads	530680cac74db7b197195e912ce32b9aec3c6970
+++ src/gtk-enums.ads	97e99d580f5c41a6b3ce2e116a24fb70467beced
@@ -2,7 +2,7 @@
 --               GtkAda - Ada95 binding for Gtk+/Gnome               --
 --                                                                   --
 --   Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet   --
---                Copyright (C) 2000-2006, AdaCore                   --
+--                Copyright (C) 2000-2010, AdaCore                   --
 --                                                                   --
 -- This library is free software; you can redistribute it and/or     --
 -- modify it under the terms of the GNU General Public               --
@@ -475,6 +475,8 @@ package Gtk.Enums is
      Generic_Internal_Discrete_Property (Gtk_Metric_Type);
    package Pack_Type_Properties is new
      Generic_Internal_Discrete_Property (Gtk_Pack_Type);
+   package Icon_Size_Properties is new
+     Generic_Internal_Discrete_Property (Gtk_Icon_Size);

    type Property_Gtk_Relief_Style  is new Relief_Style_Properties.Property;
    type Property_Gtk_Resize_Mode   is new Resize_Mode_Properties.Property;
@@ -497,6 +499,7 @@ package Gtk.Enums is
    type Property_Sort_Type         is new Sort_Type_Properties.Property;
    type Property_Metric_Type       is new Metric_Type_Properties.Property;
    type Property_Pack_Type         is new Pack_Type_Properties.Property;
+   type Property_Gtk_Icon_Size     is new Icon_Size_Properties.Property;

    -----------------
    -- Obsolescent --
============================================================
--- src/gtk-toolbar.ads	3b2f216a48641a8d1d9050e585923172420f225e
+++ src/gtk-toolbar.ads	a105af5adf57ea05a80186ef517672aa2cf58563
@@ -2,7 +2,7 @@
 --               GtkAda - Ada95 binding for Gtk+/Gnome               --
 --                                                                   --
 --   Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet   --
---                Copyright (C) 2000-2007 AdaCore                    --
+--                Copyright (C) 2000-2010, AdaCore                   --
 --                                                                   --
 -- This library is free software; you can redistribute it and/or     --
 -- modify it under the terms of the GNU General Public               --
@@ -395,6 +395,7 @@ package Gtk.Toolbar is
    Shadow_Type_Property      : constant Gtk.Enums.Property_Gtk_Shadow_Type;
    Space_Size_Property       : constant Glib.Properties.Property_Int;
    Space_Style_Property      : constant Gtk.Enums.Property_Toolbar_Space_Style;
+   Icon_Size_Property        : constant Gtk.Enums.Property_Gtk_Icon_Size;

    -------------
    -- Signals --
@@ -474,6 +475,8 @@ private
      Glib.Properties.Build ("internal-padding");
    Shadow_Type_Property : constant Gtk.Enums.Property_Gtk_Shadow_Type :=
      Gtk.Enums.Build ("shadow-type");
+   Icon_Size_Property : constant Gtk.Enums.Property_Gtk_Icon_Size :=
+     Gtk.Enums.Build ("icon-size");
    Space_Size_Property : constant Glib.Properties.Property_Int :=
      Glib.Properties.Build ("space-size");
    Space_Style_Property : constant Gtk.Enums.Property_Toolbar_Space_Style :=
============================================================
--- src/opengl/gl_h.ads	756a57fcab1c7bb4dce9a4536644210decad7a42
+++ src/opengl/gl_h.ads	9a990b321c3af85868758a63ef9564cb05c83c3a
@@ -1,3 +1,24 @@
+-----------------------------------------------------------------------
+--               GtkAda - Ada95 binding for Gtk+/Gnome               --
+--                                                                   --
+--                 Copyright (C) 2001-2010, AdaCore                  --
+--                                                                   --
+-- This library is free software; you can redistribute it and/or     --
+-- modify it under the terms of the GNU General Public               --
+-- License as published by the Free Software Foundation; either      --
+-- version 2 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 --
+-- General Public License for more details.                          --
+--                                                                   --
+-- You should have received a copy of the GNU 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.                                       --
+-----------------------------------------------------------------------
+--
 --  Generated from GL/gl.h
 --  Date: Wed Sep 22 12:47:08 1999
 --
@@ -58,6 +79,21 @@ package gl_h is
    GL_DOUBLE         : constant GLenum := 16#140A#;

    --   Primitives (see glBegin)
+   --  GL_POINTS => each vertex set by glVertex* is one point to draw on the
+   --               screen
+   --  GL_LINES  => each pair of vertex is one line
+   --  GL_TRIANGLES => each group of three vertices is a triangle
+   --  GL_TRIANGLE_STRIP => first three vertices are a triangle, then each new
+   --               vertex is combined with the previous two to build a new
+   --               triangle. The triangles are [123], [234], [345],...
+   --  GL_TRIANGLE_FAN => first vertex is the central vertex, then each vertex
+   --               is combined with previous to make a triangle. So the
+   --               triangles are [123], [134], [145],...
+   --  GL_QUADS => Each group of four vertices is a quadrilateral
+   --  GL_QUAD_STRIP => first four vertices are one polygon, then each pair of
+   --               vertices are combined with the previous two.
+   --  GL_POLYGON   => A single polygon
+
    GL_POINTS         : constant GLenum := 0;
    GL_LINES          : constant GLenum := 1;
    GL_LINE_LOOP      : constant GLenum := 2;
@@ -913,6 +949,7 @@ package gl_h is
    procedure glLoadMatrixf (m : access GLfloat);
    procedure glMultMatrixd (m : access GLdouble);
    procedure glMultMatrixf (m : access GLfloat);
+
    procedure glRotated (angle : GLdouble;
                         x     : GLdouble;
                         y     : GLdouble;
@@ -921,6 +958,8 @@ package gl_h is
                         x     : GLfloat;
                         y     : GLfloat;
                         z     : GLfloat);
+   --  The angle is specified in degrees, counter-clockwise.
+
    procedure glScaled (x : GLdouble; y : GLdouble; z : GLdouble);
    procedure glScalef (x : GLfloat; y : GLfloat; z : GLfloat);
    procedure glTranslated (x : GLdouble; y : GLdouble; z : GLdouble);