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

#
#
# add_file "contrib/cairo-1.8.6.diff"
#  content [2a856ed8a7a3b5a45d4debcdc94c7b455352ccd7]
#
# add_file "contrib/glib-2.18.4-win32.diff"
#  content [5866de48dd8efc89f955768301d381eab40259d1]
#
# add_file "contrib/gtk+-2.14.7-darwin.diff"
#  content [7147be20cbcb9b5caf7db5e58cadb53eec03b696]
#
# add_file "contrib/gtk+-2.14.7-win32.diff"
#  content [ad276f715279536a6705886815b1f58c6aaf1a5a]
#
# add_file "contrib/gtk+-2.14.7.diff"
#  content [ba080512c44b00bb11f16afbd897f57c481c6ccf]
#
# patch "README"
#  from [0ca8c6ead2b666b82a98de15b666f78e2de9ae4a]
#    to [724a5d2bb49ece3ce71969a01f408ff659641fcf]
#
# patch "configure"
#  from [5b211214d466cb0532a023d7a25dee6656e3f17d]
#    to [2a0c47618af215c6a45a70469554924ae8e86fa0]
#
# patch "configure.in"
#  from [b93bf9dff34e4870abd61cc04a0607c2895eb51c]
#    to [13e616415969b698f50b0d0f067b22fe42d890b9]
#
# patch "contrib/gtk+-2.16.5.diff"
#  from [717df07498689c5bf8d34e07d0cf9672447f60d4]
#    to [6044693b5079a9f91191db8554e5f4c6caf9839c]
#
# patch "src/gtk-extra-plot.adb"
#  from [5ce758d93da3632aa19d5baa9befb1b66b671493]
#    to [d217f35999435fe1f99f44a5ada34bfcb1176116]
#
# patch "src/gtk-text_buffer.adb"
#  from [8baae7d93901f253f2df70ead9ecc7689e21fc52]
#    to [1cb71213aa06933f752cc9deba3117dc6e600885]
#
# patch "src/gtk-text_buffer.ads"
#  from [6b2f0547f7464d7a6ecc37d5622a9dd58620d762]
#    to [c70db353dc955f4df5aa88821f826978edc560e2]
#
# patch "src/gtkada-abstract_tree_model.ads"
#  from [fad8fa7caa7ff088d870740c5b1faa79f34cb525]
#    to [8e8f3e0f5be9076e8016222cdfb8589f90e8e1f0]
#
# patch "src/gtkada-mdi.adb"
#  from [2ef07b84f3c134facb0923e416d1daf89fd3ab1d]
#    to [861ae4469ffa0dc44ad98784f675fde349de9307]
#
# patch "src/misc.c"
#  from [72a474be0ac8ea13cdab1d248d96cd783cdd084f]
#    to [78525f7572974968cbbfbab1faead285fe4f6ce9]
#
============================================================
--- contrib/cairo-1.8.6.diff	2a856ed8a7a3b5a45d4debcdc94c7b455352ccd7
+++ contrib/cairo-1.8.6.diff	2a856ed8a7a3b5a45d4debcdc94c7b455352ccd7
@@ -0,0 +1,15 @@
+2008-10-30  Arnaud Charlet  <charlet@adacore.com>
+
+	* src/cairo-quartz-font.c: Add missing prototype
+
+--- src/cairo-quartz-font.c.old	2008-10-30 11:36:44.000000000 +0100
++++ src/cairo-quartz-font.c	2008-10-30 12:35:26.000000000 +0100
+@@ -786,6 +786,8 @@ _cairo_quartz_scaled_font_get_cg_font_re
+ cairo_font_face_t *
+ cairo_quartz_font_face_create_for_atsu_font_id (ATSUFontID font_id)
+ {
++    extern ATSFontRef FMGetATSFontRefFromFont (FMFont iFont);
++
+     ATSFontRef atsFont = FMGetATSFontRefFromFont (font_id);
+     CGFontRef cgFont = CGFontCreateWithPlatformFont (&atsFont);
+     cairo_font_face_t *ff;
============================================================
--- contrib/glib-2.18.4-win32.diff	5866de48dd8efc89f955768301d381eab40259d1
+++ contrib/glib-2.18.4-win32.diff	5866de48dd8efc89f955768301d381eab40259d1
@@ -0,0 +1,35 @@
+	* glib/convert.c, glib/gmem.c: Do not crash when trying to convert
+	a huge file, return NULL instead.
+
+--- glib/gconvert.c.old	2007-01-26 17:16:07.171875000 +0100
++++ glib/gconvert.c	2007-01-26 17:17:35.812500000 +0100
+@@ -610,7 +610,15 @@ g_convert_with_iconv (const gchar *str,
+
+ 		outbuf_size *= 2;
+ 		dest = g_realloc (dest, outbuf_size);
+-
++
++		if (dest == NULL)
++		  {
++		    g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_FAILED,
++			         _("Error during conversion: %s"),
++			         g_strerror (errno));
++		    return NULL;
++		  }
++
+ 		outp = dest + used;
+ 		outbytes_remaining = outbuf_size - used - 1; /* -1 for nul */
+ 	      }
+--- glib/gmem.c.orig	2008-04-08 05:47:29.000000000 +0200
++++ glib/gmem.c	2008-04-17 18:26:07.765625000 +0200
+@@ -171,8 +171,10 @@ g_realloc (gpointer mem,
+       if (mem)
+ 	return mem;
+
++      /*
+       g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
+                G_STRLOC, n_bytes);
++      */
+     }
+
+   if (mem)
============================================================
--- contrib/gtk+-2.14.7-darwin.diff	7147be20cbcb9b5caf7db5e58cadb53eec03b696
+++ contrib/gtk+-2.14.7-darwin.diff	7147be20cbcb9b5caf7db5e58cadb53eec03b696
@@ -0,0 +1,17 @@
+2009-03-18	Nicolas Setton  <setton@adacore.com>
+
+	* configure: Under darwin versions > 9.4.0, xrandr.pc describes
+       	 version 1.2.2, but the Xrandr.h shipped with the system does not
+         define symbols used by Gtk+, so we disable the use of RANDR.
+
+--- configure.original	2009-03-19 17:55:51.000000000 +0100
++++ configure	2009-03-19 17:56:20.000000000 +0100
+@@ -33743,7 +33743,7 @@
+   if $PKG_CONFIG --exists "xrandr >= 1.2" ; then
+
+ cat >>confdefs.h <<\_ACEOF
+-#define HAVE_RANDR 1
++#undef HAVE_RANDR
+ _ACEOF
+
+
============================================================
--- contrib/gtk+-2.14.7-win32.diff	ad276f715279536a6705886815b1f58c6aaf1a5a
+++ contrib/gtk+-2.14.7-win32.diff	ad276f715279536a6705886815b1f58c6aaf1a5a
@@ -0,0 +1,143 @@
+2008-12-02	Arnaud Charlet	<charlet@adacore.com>
+
+	* gdk/win32/gdkevents-win32.c (gdk_events_translate): Fix build failure.
+
+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/Makefile.in: Remove gdk-win32res.o dependency,
+	since we do not want to use the default Gtk+ icon.
+
+2002-09-12	Florent Duguet	<duguet@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.
+	Add handling of WM_NCPAINT message to refresh some areas when a window
+	from another application is moved on top of the current app.
+
+--- gdk/win32/gdkevents-win32.c.old	2006-02-21 10:02:58.000000000 +0100
++++ gdk/win32/gdkevents-win32.c	2006-02-21 10:08:22.000000000 +0100
+@@ -2125,6 +2125,12 @@ handle_wm_paint (MSG        *msg,
+   _gdk_window_process_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);
+ }
+
+@@ -2964,6 +2970,35 @@ gdk_event_translate (MSG  *msg,
+       *ret_valp = 1;
+       break;
+
++    case WM_NCPAINT:
++      if (msg->wParam < 1)
++	break;
++
++      {
++	HRGN hrgn;
++
++	hrgn = CreateRectRgn (0, 0, 0, 0);
++	if (GetUpdateRgn (msg->hwnd, hrgn, FALSE) == ERROR)
++	  {
++	    WIN32_GDI_FAILED ("GetUpdateRgn");
++	    break;
++	  }
++
++	{
++	  GdkRegion *update_region = _gdk_win32_hrgn_to_region (hrgn);
++
++	  _gdk_windowing_window_get_offsets (window, &xoffset, &yoffset);
++	  gdk_region_offset (update_region, xoffset, yoffset);
++
++	  _gdk_window_process_expose (window, update_region);
++	  gdk_region_destroy (update_region);
++
++	  DeleteObject (hrgn);
++	  return_val = FALSE;
++	}
++      }
++      break;
++
+     case WM_PAINT:
+       handle_wm_paint (msg, window, FALSE, NULL);
+       break;
+--- 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);
+
+--- gdk/Makefile.in.orig	2008-07-01 15:44:02.000000000 +0200
++++ gdk/Makefile.in	2008-08-28 14:35:53.531250000 +0200
+@@ -498,8 +498,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/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;
+--- gdk/win32/gdkevents-win32.c.old	2008-12-02 10:23:48.109375000 +0100
++++ gdk/win32/gdkevents-win32.c	2008-12-02 10:23:51.984375000 +0100
+@@ -3011,7 +3011,7 @@ gdk_event_translate (MSG  *msg,
+ 	{
+ 	  GdkRegion *update_region = _gdk_win32_hrgn_to_region (hrgn);
+
+-	  _gdk_windowing_window_get_offsets (window, &xoffset, &yoffset);
++	  _gdk_win32_windowing_window_get_offsets (window, &xoffset, &yoffset);
+ 	  gdk_region_offset (update_region, xoffset, yoffset);
+
+ 	  _gdk_window_process_expose (window, update_region);
============================================================
--- contrib/gtk+-2.14.7.diff	ba080512c44b00bb11f16afbd897f57c481c6ccf
+++ contrib/gtk+-2.14.7.diff	ba080512c44b00bb11f16afbd897f57c481c6ccf
@@ -0,0 +1,267 @@
+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).
+
+2008-10-30  Arnaud Charlet  <charlet@adacore.com>
+
+	* gdk/quartz/gdkkeys-quartz.c: Use new input API, since old keyboard
+	API is not available for x86-64.
+	Submitted at http://bugzilla.gnome.org/show_bug.cgi?id=558586
+	Committed on Gtk+ trunk on 2008-11-06
+
+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"
+--- gdk/quartz/gdkkeys-quartz.c.old	2008-10-30 14:31:20.000000000 +0100
++++ gdk/quartz/gdkkeys-quartz.c	2008-10-30 15:31:09.000000000 +0100
+@@ -61,7 +61,7 @@
+
+ static GdkKeymap *default_keymap = NULL;
+
+-static KeyboardLayoutRef current_layout = NULL;
++static TISInputSourceRef current_layout = NULL;
+
+ /* This is a table of all keyvals. Each keycode gets KEYVALS_PER_KEYCODE entries.
+  * TThere is 1 keyval per modifier (Nothing, Shift, Alt, Shift+Alt);
+@@ -179,114 +179,32 @@ const static struct {
+ static void
+ maybe_update_keymap (void)
+ {
+-  KeyboardLayoutRef new_layout;
++  TISInputSourceRef new_layout;
+
+-  KLGetCurrentKeyboardLayout (&new_layout);
++  new_layout = TISCopyCurrentKeyboardLayoutInputSource ();
+
+   if (new_layout != current_layout)
+     {
+       guint *p;
+       int i;
+
+-      KeyboardLayoutKind layout_kind;
+-
+       g_free (keyval_array);
+       keyval_array = g_new0 (guint, NUM_KEYCODES * KEYVALS_PER_KEYCODE);
+-
+-      /* Get the layout kind */
+-      KLGetKeyboardLayoutProperty (new_layout, kKLKind, (const void **)&layout_kind);
+-
+-      /* 8-bit-only keyabord layout */
+-      if (layout_kind == kKLKCHRKind)
++
+ 	{
+-	  const void *chr_data;
++	  const void *chr_data = NULL;
+
+ 	  /* Get chr data */
+-	  KLGetKeyboardLayoutProperty (new_layout, kKLKCHRData, (const void **)&chr_data);
++	  CFDataRef currentKeyLayoutDataRef = (CFDataRef) TISGetInputSourceProperty (new_layout, kTISPropertyUnicodeKeyLayoutData);
++	  if (currentKeyLayoutDataRef)
++	    chr_data = CFDataGetBytePtr (currentKeyLayoutDataRef);
+
+-	  for (i = 0; i < NUM_KEYCODES; i++)
++	  if (chr_data == NULL)
+ 	    {
+-	      int j;
+-	      UInt32 modifiers[] = {0, shiftKey, optionKey, shiftKey | optionKey};
+-
+-	      p = keyval_array + i * KEYVALS_PER_KEYCODE;
+-
+-	      for (j = 0; j < KEYVALS_PER_KEYCODE; j++)
+-		{
+-		  UInt32 c, state = 0;
+-		  UInt16 key_code;
+-		  UniChar uc;
+-
+-		  key_code = modifiers[j] | i;
+-		  c = KeyTranslate (chr_data, key_code, &state);
+-
+-		  if (state != 0)
+-		    {
+-		      UInt32 state2 = 0;
+-		      c = KeyTranslate (chr_data, key_code | 128, &state2);
+-		    }
+-
+-		  if (c != 0 && c != 0x10)
+-		    {
+-		      int k;
+-		      gboolean found = FALSE;
+-
+-		      /* FIXME: some keyboard layouts (e.g. Russian) use
+-                       * a different 8-bit character set. We should
+-                       * check for this. Not a serious problem, because
+-		       * most (all?) of these layouts also have a
+-		       * uchr version.
+-		       */
+-		      uc = macroman2ucs (c);
+-
+-		      for (k = 0; k < G_N_ELEMENTS (special_ucs_table); k++)
+-			{
+-			  if (special_ucs_table[k].ucs_value == uc)
+-			    {
+-			      p[j] = special_ucs_table[k].keyval;
+-			      found = TRUE;
+-			      break;
+-			    }
+-			}
+-
+-		      /* Special-case shift-tab since GTK+ expects
+-		       * GDK_ISO_Left_Tab for that.
+-		       */
+-		      if (found && p[j] == GDK_Tab && modifiers[j] == shiftKey)
+-			p[j] = GDK_ISO_Left_Tab;
+-
+-		      if (!found)
+-                        {
+-                          guint tmp;
+-
+-                          tmp = gdk_unicode_to_keyval (uc);
+-                          if (tmp != (uc | 0x01000000))
+-                            p[j] = tmp;
+-                          else
+-                            p[j] = 0;
+-                        }
+-		    }
+-		}
+-
+-	      if (p[3] == p[2])
+-		p[3] = 0;
+-	      if (p[2] == p[1])
+-		p[2] = 0;
+-	      if (p[1] == p[0])
+-		p[1] = 0;
+-	      if (p[0] == p[2] &&
+-		  p[1] == p[3])
+-		p[2] = p[3] = 0;
++	      g_error ("cannot get keyboard layout data");
++	      return;
+ 	    }
+-	}
+-      /* unicode keyboard layout */
+-      else if (layout_kind == kKLKCHRuchrKind || layout_kind == kKLuchrKind)
+-	{
+-	  const void *chr_data;
+-
+-	  /* Get chr data */
+-	  KLGetKeyboardLayoutProperty (new_layout, kKLuchrData, (const void **)&chr_data);
+-
++
+ 	  for (i = 0; i < NUM_KEYCODES; i++)
+ 	    {
+ 	      int j;
+@@ -362,11 +280,6 @@ maybe_update_keymap (void)
+ 		p[2] = p[3] = 0;
+ 	    }
+ 	}
+-      else
+-	{
+-	  g_error ("unknown type of keyboard layout (neither KCHR nor uchr)"
+-	           " - not supported right now");
+-	}
+
+       for (i = 0; i < G_N_ELEMENTS (known_keys); i++)
+ 	{
+--- 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);
+ }
============================================================
--- README	0ca8c6ead2b666b82a98de15b666f78e2de9ae4a
+++ README	724a5d2bb49ece3ce71969a01f408ff659641fcf
@@ -22,12 +22,12 @@

 This home page will always contain the latest news for this toolkit.

-This is GtkAda version 2.14.0. This package is an Ada graphical library
+This is GtkAda version 2.14.2. This package is an Ada graphical library
 for the Gimp Toolkit, which means this is a set of packages to allow you
 to easily create some graphical interfaces under X11 and Win32, using Ada
 as the programming language.

-This library has been tested using Gtk+ 2.14.5 on the following systems:
+This library has been tested using Gtk+ 2.14.7 on the following systems:

    - GNU Linux/x86
    - GNU Linux/x86-64
============================================================
--- configure	5b211214d466cb0532a023d7a25dee6656e3f17d
+++ configure	2a0c47618af215c6a45a70469554924ae8e86fa0
@@ -1234,7 +1234,7 @@ GTKADA_MINOR_VERSION=14
 # Current release settings
 GTKADA_MAJOR_VERSION=2
 GTKADA_MINOR_VERSION=14
-GTKADA_MICRO_VERSION=1
+GTKADA_MICRO_VERSION=2
 GTKADA_VERSION=$GTKADA_MAJOR_VERSION.$GTKADA_MINOR_VERSION.$GTKADA_MICRO_VERSION

 ac_aux_dir=
============================================================
--- configure.in	b93bf9dff34e4870abd61cc04a0607c2895eb51c
+++ configure.in	13e616415969b698f50b0d0f067b22fe42d890b9
@@ -1,10 +1,10 @@
-AC_REVISION($Revision: 134931 $)
+AC_REVISION($Revision: 149669 $)
 AC_INIT(src/glib.ads)

 # Current release settings
 GTKADA_MAJOR_VERSION=2
 GTKADA_MINOR_VERSION=14
-GTKADA_MICRO_VERSION=1
+GTKADA_MICRO_VERSION=2
 GTKADA_VERSION=$GTKADA_MAJOR_VERSION.$GTKADA_MINOR_VERSION.$GTKADA_MICRO_VERSION

 AC_CANONICAL_SYSTEM
============================================================
--- contrib/gtk+-2.16.5.diff	717df07498689c5bf8d34e07d0cf9672447f60d4
+++ contrib/gtk+-2.16.5.diff	6044693b5079a9f91191db8554e5f4c6caf9839c
@@ -1,3 +1,9 @@
+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-09-19  Arnaud Charlet  <charlet@adacore.com>
+
 2009-01-12  Nicolas Setton  <setton@adacore.com>

 	* gtktreeview.c (gtk_tree_view_enter_notify): Do not react to
@@ -87,3 +93,19 @@ 2003-11-27  Arnaud Charlet  <charlet@ada
      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);
+ }
============================================================
--- src/gtk-extra-plot.adb	5ce758d93da3632aa19d5baa9befb1b66b671493
+++ src/gtk-extra-plot.adb	d217f35999435fe1f99f44a5ada34bfcb1176116
@@ -3,7 +3,7 @@
 --                                                                   --
 --                 Copyright (C) 2000-2008, AdaCore                  --
 --        Emmanuel Briot, Joel Brobecker and Arnaud Charlet          --
---                 Copyright (C) 2001-2008, AdaCore                  --
+--                 Copyright (C) 2001-2009, AdaCore                  --
 --                                                                   --
 -- This library is free software; you can redistribute it and/or     --
 -- modify it under the terms of the GNU General Public               --
@@ -41,7 +41,7 @@ package body Gtk.Extra.Plot is
    -------------

    procedure Gtk_New (Plot     : out Gtk_Plot;
-                      Drawable : in Gdk.Drawable.Gdk_Drawable
+                      Drawable : Gdk.Drawable.Gdk_Drawable
                         :=  Gdk.Drawable.Null_Drawable)
    is
    begin
@@ -54,9 +54,9 @@ package body Gtk.Extra.Plot is
    ----------------

    procedure Initialize (Plot     : access Gtk_Plot_Record'Class;
-                         Drawable : in Gdk.Drawable.Gdk_Drawable)
+                         Drawable : Gdk.Drawable.Gdk_Drawable)
    is
-      function Internal (Drawable : in Gdk.Drawable.Gdk_Drawable)
+      function Internal (Drawable : Gdk.Drawable.Gdk_Drawable)
                          return        System.Address;
       pragma Import (C, Internal, "gtk_plot_new");
    begin
@@ -68,9 +68,9 @@ package body Gtk.Extra.Plot is
    -------------

    procedure Gtk_New (Plot     : out Gtk_Plot;
-                      Width    : in Gdouble;
-                      Height   : in Gdouble;
-                      Drawable : in Gdk.Drawable.Gdk_Drawable
+                      Width    : Gdouble;
+                      Height   : Gdouble;
+                      Drawable : Gdk.Drawable.Gdk_Drawable
                         :=  Gdk.Drawable.Null_Drawable)
    is
    begin
@@ -83,13 +83,13 @@ package body Gtk.Extra.Plot is
    ----------------

    procedure Initialize (Plot     : access Gtk_Plot_Record'Class;
-                         Drawable : in Gdk.Drawable.Gdk_Drawable;
-                         Width    : in Gdouble;
-                         Height   : in Gdouble)
+                         Drawable : Gdk.Drawable.Gdk_Drawable;
+                         Width    : Gdouble;
+                         Height   : Gdouble)
    is
-      function Internal (Drawable : in Gdk.Drawable.Gdk_Drawable;
-                         Width    : in Gdouble;
-                         Height   : in Gdouble)
+      function Internal (Drawable : Gdk.Drawable.Gdk_Drawable;
+                         Width    : Gdouble;
+                         Height   : Gdouble)
                         return        System.Address;
       pragma Import (C, Internal, "gtk_plot_new_with_size");
    begin
@@ -101,10 +101,10 @@ package body Gtk.Extra.Plot is
    ------------------

    procedure Set_Drawable (Plot     : access Gtk_Plot_Record;
-                           Drawable : in     Gdk.Drawable.Gdk_Drawable)
+                           Drawable : Gdk.Drawable.Gdk_Drawable)
    is
-      procedure Internal (Plot     : in System.Address;
-                          Drawable : in Gdk.Drawable.Gdk_Drawable);
+      procedure Internal (Plot     : System.Address;
+                          Drawable : Gdk.Drawable.Gdk_Drawable);
       pragma Import (C, Internal, "gtk_plot_set_drawable");
    begin
       Internal (Get_Object (Plot), Drawable);
@@ -117,7 +117,7 @@ package body Gtk.Extra.Plot is
    function Get_Drawable (Plot   : access Gtk_Plot_Record)
                           return      Gdk.Drawable.Gdk_Drawable
    is
-      function Internal (Plot : in System.Address)
+      function Internal (Plot : System.Address)
                         return Gdk.Drawable.Gdk_Drawable;
       pragma Import (C, Internal, "gtk_plot_get_drawable");
    begin
@@ -132,7 +132,7 @@ package body Gtk.Extra.Plot is
                            X    : out Gdouble;
                            Y    : out Gdouble)
    is
-      procedure Internal (Plot : in System.Address;
+      procedure Internal (Plot : System.Address;
                           X    : out Gdouble;
                           Y    : out Gdouble);
       pragma Import (C, Internal, "gtk_plot_get_position");
@@ -148,7 +148,7 @@ package body Gtk.Extra.Plot is
                        Width  : out Gdouble;
                        Height : out Gdouble)
    is
-      procedure Internal (Plot   : in  System.Address;
+      procedure Internal (Plot   : System.Address;
                           Width  : out Gdouble;
                           Height : out Gdouble);
       pragma Import (C, Internal, "gtk_plot_get_size");
@@ -163,7 +163,7 @@ package body Gtk.Extra.Plot is
    function Get_Internal_Allocation (Plot   : access Gtk_Plot_Record)
                                      return      Gtk.Widget.Gtk_Allocation
    is
-      function Internal (Plot   : in System.Address)
+      function Internal (Plot   : System.Address)
                          return      Gtk.Widget.Gtk_Allocation;
       pragma Import (C, Internal, "gtk_plot_get_internal_allocation");
    begin
@@ -175,10 +175,10 @@ package body Gtk.Extra.Plot is
    --------------------

    procedure Set_Background (Plot       : access Gtk_Plot_Record;
-                             Background : in Gdk.Color.Gdk_Color)
+                             Background : Gdk.Color.Gdk_Color)
    is
-      procedure Internal (Plot       : in System.Address;
-                          Background : in System.Address);
+      procedure Internal (Plot       : System.Address;
+                          Background : System.Address);
       pragma Import (C, Internal, "gtk_plot_set_background");

       Back : aliased Gdk.Color.Gdk_Color := Background;
@@ -196,7 +196,7 @@ package body Gtk.Extra.Plot is
    -----------

    procedure Paint (Plot : access Gtk_Plot_Record) is
-      procedure Internal (Widget : in System.Address);
+      procedure Internal (Widget : System.Address);
       pragma Import (C, Internal, "gtk_plot_paint");
    begin
       Internal (Get_Object (Plot));
@@ -208,9 +208,9 @@ package body Gtk.Extra.Plot is

    procedure Refresh
       (Plot : access Gtk_Plot_Record;
-       Area : in Gdk.Rectangle.Gdk_Rectangle)
+       Area : Gdk.Rectangle.Gdk_Rectangle)
    is
-      procedure Internal (Plot : in System.Address;
+      procedure Internal (Plot : System.Address;
                           Area : System.Address);
       pragma Import (C, Internal, "gtk_plot_refresh");

@@ -228,12 +228,12 @@ package body Gtk.Extra.Plot is
    ----------

    procedure Move (Plot : access Gtk_Plot_Record;
-                   X    : in Gdouble;
-                   Y    : in Gdouble)
+                   X    : Gdouble;
+                   Y    : Gdouble)
    is
-      procedure Internal (Plot : in System.Address;
-                          X    : in Gdouble;
-                          Y    : in Gdouble);
+      procedure Internal (Plot : System.Address;
+                          X    : Gdouble;
+                          Y    : Gdouble);
       pragma Import (C, Internal, "gtk_plot_move");
    begin
       Internal (Get_Object (Plot), X, Y);
@@ -244,12 +244,12 @@ package body Gtk.Extra.Plot is
    ------------

    procedure Resize (Plot   : access Gtk_Plot_Record;
-                     Width  : in Gdouble;
-                     Height : in Gdouble)
+                     Width  : Gdouble;
+                     Height : Gdouble)
    is
-      procedure Internal (Plot   : in System.Address;
-                          Width  : in Gdouble;
-                          Height : in Gdouble);
+      procedure Internal (Plot   : System.Address;
+                          Width  : Gdouble;
+                          Height : Gdouble);
       pragma Import (C, Internal, "gtk_plot_resize");
    begin
       Internal (Get_Object (Plot), Width, Height);
@@ -260,16 +260,16 @@ package body Gtk.Extra.Plot is
    -----------------

    procedure Move_Resize (Plot   : access Gtk_Plot_Record;
-                          X      : in Gdouble;
-                          Y      : in Gdouble;
-                          Width  : in Gdouble;
-                          Height : in Gdouble)
+                          X      : Gdouble;
+                          Y      : Gdouble;
+                          Width  : Gdouble;
+                          Height : Gdouble)
    is
-      procedure Internal (Plot   : in System.Address;
-                          X      : in Gdouble;
-                          Y      : in Gdouble;
-                          Width  : in Gdouble;
-                          Height : in Gdouble);
+      procedure Internal (Plot   : System.Address;
+                          X      : Gdouble;
+                          Y      : Gdouble;
+                          Width  : Gdouble;
+                          Height : Gdouble);
       pragma Import (C, Internal, "gtk_plot_move_resize");
    begin
       Internal (Get_Object (Plot), X, Y, Width, Height);
@@ -280,14 +280,14 @@ package body Gtk.Extra.Plot is
    ---------------

    procedure Get_Pixel (Plot : access Gtk_Plot_Record;
-                        Xx   : in Gdouble;
-                        Yy   : in Gdouble;
+                        Xx   : Gdouble;
+                        Yy   : Gdouble;
                         X    : out Gdouble;
                         Y    : out Gdouble)
    is
-      procedure Internal (Plot : in System.Address;
-                          Xx   : in Gdouble;
-                          Yy   : in Gdouble;
+      procedure Internal (Plot : System.Address;
+                          Xx   : Gdouble;
+                          Yy   : Gdouble;
                           X    : out Gdouble;
                           Y    : out Gdouble);
       pragma Import (C, Internal, "gtk_plot_get_pixel");
@@ -300,7 +300,7 @@ package body Gtk.Extra.Plot is
    ---------------

    procedure Clip_Data (Plot : access Gtk_Plot_Record; Clip : Boolean) is
-      procedure Internal (Plot : in System.Address; Clip : Gint);
+      procedure Internal (Plot : System.Address; Clip : Gint);
       pragma Import (C, Internal, "gtk_plot_clip_data");
    begin
       Internal (Get_Object (Plot), Boolean'Pos (Clip));
@@ -311,14 +311,14 @@ package body Gtk.Extra.Plot is
    ---------------

    procedure Get_Point (Plot : access Gtk_Plot_Record;
-                        X    : in Gint;
-                        Y    : in Gint;
+                        X    : Gint;
+                        Y    : Gint;
                         Xx   : out Gdouble;
                         Yy   : out Gdouble)
    is
-      procedure Internal (Plot : in System.Address;
-                          X    : in Gint;
-                          Y    : in Gint;
+      procedure Internal (Plot : System.Address;
+                          X    : Gint;
+                          Y    : Gint;
                           Xx   : out Gdouble;
                           Yy   : out Gdouble);
       pragma Import (C, Internal, "gtk_plot_get_point");
@@ -331,12 +331,12 @@ package body Gtk.Extra.Plot is
    ----------------

    procedure Set_Xrange (Plot : access Gtk_Plot_Record;
-                         Xmin : in Gdouble := 0.0;
-                         Xmax : in Gdouble := 1.0)
+                         Xmin : Gdouble := 0.0;
+                         Xmax : Gdouble := 1.0)
    is
-      procedure Internal (Plot : in System.Address;
-                          Xmin : in Gdouble;
-                          Xmax : in Gdouble);
+      procedure Internal (Plot : System.Address;
+                          Xmin : Gdouble;
+                          Xmax : Gdouble);
       pragma Import (C, Internal, "gtk_plot_set_xrange");
    begin
       Internal (Get_Object (Plot), Xmin, Xmax);
@@ -347,12 +347,12 @@ package body Gtk.Extra.Plot is
    ----------------

    procedure Set_Yrange (Plot : access Gtk_Plot_Record;
-                         Ymin : in Gdouble := 0.0;
-                         Ymax : in Gdouble := 1.0)
+                         Ymin : Gdouble := 0.0;
+                         Ymax : Gdouble := 1.0)
    is
-      procedure Internal (Plot : in System.Address;
-                          Ymin : in Gdouble;
-                          Ymax : in Gdouble);
+      procedure Internal (Plot : System.Address;
+                          Ymin : Gdouble;
+                          Ymax : Gdouble);
       pragma Import (C, Internal, "gtk_plot_set_yrange");
    begin
       Internal (Get_Object (Plot), Ymin, Ymax);
@@ -363,16 +363,16 @@ package body Gtk.Extra.Plot is
    ---------------

    procedure Set_Range (Plot : access Gtk_Plot_Record;
-                        Xmin : in Gdouble := 0.0;
-                        Xmax : in Gdouble := 1.0;
-                        Ymin : in Gdouble := 0.0;
-                        Ymax : in Gdouble := 1.0)
+                        Xmin : Gdouble := 0.0;
+                        Xmax : Gdouble := 1.0;
+                        Ymin : Gdouble := 0.0;
+                        Ymax : Gdouble := 1.0)
    is
-      procedure Internal (Plot : in System.Address;
-                          Xmin : in Gdouble;
-                          Xmax : in Gdouble;
-                          Ymin : in Gdouble;
-                          Ymax : in Gdouble);
+      procedure Internal (Plot : System.Address;
+                          Xmin : Gdouble;
+                          Xmax : Gdouble;
+                          Ymin : Gdouble;
+                          Ymax : Gdouble);
       pragma Import (C, Internal, "gtk_plot_set_range");
    begin
       Internal (Get_Object (Plot), Xmin, Xmax, Ymin, Ymax);
@@ -383,7 +383,7 @@ package body Gtk.Extra.Plot is
    ---------------

    procedure Autoscale (Plot : access Gtk_Plot_Record) is
-      procedure Internal (Plot : in System.Address);
+      procedure Internal (Plot : System.Address);
       pragma Import (C, Internal, "gtk_plot_autoscale");
    begin
       Internal (Get_Object (Plot));
@@ -397,7 +397,7 @@ package body Gtk.Extra.Plot is
                          Xmin : out Gdouble;
                          Xmax : out Gdouble)
    is
-      procedure Internal (Plot : in System.Address;
+      procedure Internal (Plot : System.Address;
                           Xmin : out Gdouble;
                           Xmax : out Gdouble);
       pragma Import (C, Internal, "gtk_plot_get_xrange");
@@ -413,7 +413,7 @@ package body Gtk.Extra.Plot is
                          Ymin : out Gdouble;
                          Ymax : out Gdouble)
    is
-      procedure Internal (Plot : in System.Address;
+      procedure Internal (Plot : System.Address;
                           Ymin : out Gdouble;
                           Ymax : out Gdouble);
       pragma Import (C, Internal, "gtk_plot_get_yrange");
@@ -426,7 +426,7 @@ package body Gtk.Extra.Plot is
    ----------------

    procedure Set_Xscale (Plot       : access Gtk_Plot_Record;
-                         Scale_Type : in Plot_Scale)
+                         Scale_Type : Plot_Scale)
    is
       procedure Internal
         (Plot       : System.Address;
@@ -442,7 +442,7 @@ package body Gtk.Extra.Plot is
    ----------------

    procedure Set_Yscale (Plot       : access Gtk_Plot_Record;
-                         Scale_Type : in Plot_Scale)
+                         Scale_Type : Plot_Scale)
    is
       procedure Internal
         (Plot       : System.Address;
@@ -460,7 +460,7 @@ package body Gtk.Extra.Plot is
    function Get_Xscale (Plot   : access Gtk_Plot_Record)
                         return      Plot_Scale
    is
-      function Internal (Plot   : in System.Address)
+      function Internal (Plot   : System.Address)
                          return      Gint;
       pragma Import (C, Internal, "gtk_plot_get_xscale");
    begin
@@ -474,7 +474,7 @@ package body Gtk.Extra.Plot is
    function Get_Yscale (Plot   : access Gtk_Plot_Record)
                         return      Plot_Scale
    is
-      function Internal (Plot   : in System.Address)
+      function Internal (Plot   : System.Address)
                          return      Gint;
       pragma Import (C, Internal, "gtk_plot_get_yscale");
    begin
@@ -487,16 +487,16 @@ package body Gtk.Extra.Plot is

    function Put_Text
       (Plot          : access Gtk_Plot_Record;
-       X             : in Gdouble;
-       Y             : in Gdouble;
-       Font          : in String := "";
-       Font_Height   : in Gint := 10;
-       Angle         : in Plot_Angle;
+       X             : Gdouble;
+       Y             : Gdouble;
+       Font          : String := "";
+       Font_Height   : Gint := 10;
+       Angle         : Plot_Angle;
        Foreground    : Gdk.Color.Gdk_Color := Gdk.Color.Null_Color;
        Background    : Gdk.Color.Gdk_Color := Gdk.Color.Null_Color;
-       Transparent   : in Boolean := False;
+       Transparent   : Boolean := False;
        Justification : Gtk.Enums.Gtk_Justification := Gtk.Enums.Justify_Center;
-       Text          : in String := "") return Gtk_Plot_Text
+       Text          : String := "") return Gtk_Plot_Text
    is
       function Internal
         (Plot          : System.Address;
@@ -571,7 +571,7 @@ package body Gtk.Extra.Plot is
      (Axis   : access Gtk_Plot_Axis_Record) return Boolean
    is
       function Internal
-        (Axis : System.Address)return Gint;
+        (Axis : System.Address) return Gint;
       pragma Import (C, Internal, "gtk_plot_axis_visible");

    begin
@@ -662,8 +662,8 @@ package body Gtk.Extra.Plot is

    procedure Axis_Set_Attributes
      (Axis  : access Gtk_Plot_Axis_Record;
-      Width : in     Gfloat;
-      Color : in     Gdk.Color.Gdk_Color)
+      Width : Gfloat;
+      Color : Gdk.Color.Gdk_Color)
    is
       procedure Internal
         (Axis  : System.Address;
@@ -707,8 +707,8 @@ package body Gtk.Extra.Plot is

    procedure Axis_Set_Ticks
      (Axis        : access Gtk_Plot_Axis_Record;
-      Major_Step  : in Gdouble;
-      Num_Minor   : in Gint)
+      Major_Step  : Gdouble;
+      Num_Minor   : Gint)
    is
       procedure Internal
         (Axis        : System.Address;
@@ -726,7 +726,7 @@ package body Gtk.Extra.Plot is

    procedure Axis_Set_Major_Ticks
      (Axis        : access Gtk_Plot_Axis_Record;
-      Major_Step  : in Gdouble)
+      Major_Step  : Gdouble)
    is
       procedure Internal
         (Axis        : System.Address;
@@ -743,7 +743,7 @@ package body Gtk.Extra.Plot is

    procedure Axis_Set_Minor_Ticks
      (Axis        : access Gtk_Plot_Axis_Record;
-      Num_Minor   : in Gint)
+      Num_Minor   : Gint)
    is
       procedure Internal
         (Axis        : System.Address;
@@ -760,7 +760,7 @@ package body Gtk.Extra.Plot is

    procedure Axis_Set_Ticks_Length
      (Axis   : access Gtk_Plot_Axis_Record;
-      Length : in Gint)
+      Length : Gint)
    is
       procedure Internal
         (Axis   : System.Address;
@@ -777,7 +777,7 @@ package body Gtk.Extra.Plot is

    procedure Axis_Set_Ticks_Width
      (Axis  : access Gtk_Plot_Axis_Record;
-      Width : in Gfloat)
+      Width : Gfloat)
    is
       procedure Internal
         (Axis  : System.Address;
@@ -794,8 +794,8 @@ package body Gtk.Extra.Plot is

    procedure Axis_Show_Ticks
      (Axis       : access Gtk_Plot_Axis_Record;
-      Major_Mask : in Plot_Ticks_Pos;
-      Minor_Mask : in Plot_Ticks_Pos)
+      Major_Mask : Plot_Ticks_Pos;
+      Minor_Mask : Plot_Ticks_Pos)
    is
       procedure Internal
          (Axis       : System.Address;
@@ -813,8 +813,8 @@ package body Gtk.Extra.Plot is

    procedure Axis_Set_Ticks_Limits
      (Axis        : access Gtk_Plot_Axis_Record;
-      Ticks_Begin : in Gdouble;
-      Ticks_End   : in Gdouble)
+      Ticks_Begin : Gdouble;
+      Ticks_End   : Gdouble)
    is
       procedure Internal
         (Axis        : System.Address;
@@ -846,7 +846,7 @@ package body Gtk.Extra.Plot is

    procedure Axis_Show_Labels
      (Axis        : access Gtk_Plot_Axis_Record;
-      Labels_Mask : in Plot_Label_Pos)
+      Labels_Mask : Plot_Label_Pos)
    is
       procedure Internal
         (Axis        : System.Address;
@@ -863,13 +863,13 @@ package body Gtk.Extra.Plot is

    procedure Axis_Title_Set_Attributes
      (Axis       : access Gtk_Plot_Axis_Record;
-      Font       : in String;
-      Height     : in Gint;
-      Angle      : in Plot_Angle;
-      Foreground : in Gdk.Color.Gdk_Color;
-      Background : in Gdk.Color.Gdk_Color;
-      Transparent   : in Boolean;
-      Justification : in Gtk.Enums.Gtk_Justification)
+      Font       : String;
+      Height     : Gint;
+      Angle      : Plot_Angle;
+      Foreground : Gdk.Color.Gdk_Color;
+      Background : Gdk.Color.Gdk_Color;
+      Transparent   : Boolean;
+      Justification : Gtk.Enums.Gtk_Justification)
    is
       procedure Internal
         (Axis          : System.Address;
@@ -950,7 +950,7 @@ package body Gtk.Extra.Plot is

    procedure Axis_Use_Custom_Tick_Labels
      (Axis   : access Gtk_Plot_Axis_Record;
-      Custom : in Boolean := True)
+      Custom : Boolean := True)
    is
       procedure Internal
         (Axis   : System.Address;
@@ -968,7 +968,7 @@ package body Gtk.Extra.Plot is
    function X0_Visible (Plot   : access Gtk_Plot_Record)
                        return Boolean
    is
-      function Internal (Plot   : in System.Address) return Gint;
+      function Internal (Plot   : System.Address) return Gint;
       pragma Import (C, Internal, "gtk_plot_x0_visible");
    begin
       return Boolean'Val (Internal (Get_Object (Plot)));
@@ -979,11 +979,11 @@ package body Gtk.Extra.Plot is
    --------------------

    procedure X0_Set_Visible (Plot    : access Gtk_Plot_Record;
-                             Visible : in Boolean)
+                             Visible : Boolean)
    is
       procedure Internal
-         (Plot    : in System.Address;
-          Visible : in Gint);
+         (Plot    : System.Address;
+          Visible : Gint);
       pragma Import (C, Internal, "gtk_plot_x0_set_visible");

    begin
@@ -997,7 +997,7 @@ package body Gtk.Extra.Plot is
    function Y0_Visible (Plot   : access Gtk_Plot_Record)
                        return Boolean
    is
-      function Internal (Plot   : in System.Address) return Gint;
+      function Internal (Plot   : System.Address) return Gint;
       pragma Import (C, Internal, "gtk_plot_y0_visible");
    begin
       return Boolean'Val (Internal (Get_Object (Plot)));
@@ -1008,11 +1008,11 @@ package body Gtk.Extra.Plot is
    --------------------

    procedure Y0_Set_Visible (Plot    : access Gtk_Plot_Record;
-                             Visible : in Boolean)
+                             Visible : Boolean)
    is
       procedure Internal
-         (Plot    : in System.Address;
-          Visible : in Gint);
+         (Plot    : System.Address;
+          Visible : Gint);
       pragma Import (C, Internal, "gtk_plot_y0_set_visible");
    begin
       Internal (Get_Object (Plot), Boolean'Pos (Visible));
@@ -1028,7 +1028,7 @@ package body Gtk.Extra.Plot is
                             Hmajor : out Boolean;
                             Hminor : out Boolean)
    is
-      procedure Internal (Plot   : in System.Address;
+      procedure Internal (Plot   : System.Address;
                           Vmajor : out Gboolean;
                           Vminor : out Gboolean;
                           Hmajor : out Gboolean;
@@ -1049,17 +1049,17 @@ package body Gtk.Extra.Plot is
    -----------------------

    procedure Grids_Set_Visible (Plot   : access Gtk_Plot_Record;
-                                Vmajor : in Boolean;
-                                Vminor : in Boolean;
-                                Hmajor : in Boolean;
-                                Hminor : in Boolean)
+                                Vmajor : Boolean;
+                                Vminor : Boolean;
+                                Hmajor : Boolean;
+                                Hminor : Boolean)
    is
       procedure Internal
-         (Plot   : in System.Address;
-          Vmajor : in Gint;
-          Vminor : in Gint;
-          Hmajor : in Gint;
-          Hminor : in Gint);
+         (Plot   : System.Address;
+          Vmajor : Gint;
+          Vminor : Gint;
+          Hmajor : Gint;
+          Hminor : Gint);
       pragma Import (C, Internal, "gtk_plot_grids_set_visible");
    begin
       Internal (Get_Object (Plot),
@@ -1074,9 +1074,9 @@ package body Gtk.Extra.Plot is
    ---------------------------

    procedure X0line_Set_Attributes (Plot  : access Gtk_Plot_Record;
-                                    Style : in Plot_Line_Style;
-                                    Width : in Gfloat;
-                                    Color : in Gdk.Color.Gdk_Color)
+                                    Style : Plot_Line_Style;
+                                    Width : Gfloat;
+                                    Color : Gdk.Color.Gdk_Color)
    is
       procedure Internal
         (Plot  : System.Address;
@@ -1101,9 +1101,9 @@ package body Gtk.Extra.Plot is
    ---------------------------

    procedure Y0line_Set_Attributes (Plot  : access Gtk_Plot_Record;
-                                    Style : in Plot_Line_Style;
-                                    Width : in Gfloat;
-                                    Color : in Gdk.Color.Gdk_Color)
+                                    Style : Plot_Line_Style;
+                                    Width : Gfloat;
+                                    Color : Gdk.Color.Gdk_Color)
    is
       procedure Internal
          (Plot  : System.Address;
@@ -1128,9 +1128,9 @@ package body Gtk.Extra.Plot is
    --------------------------------

    procedure Major_Hgrid_Set_Attributes (Plot  : access Gtk_Plot_Record;
-                                         Style : in Plot_Line_Style;
-                                         Width : in Gfloat;
-                                         Color : in Gdk.Color.Gdk_Color)
+                                         Style : Plot_Line_Style;
+                                         Width : Gfloat;
+                                         Color : Gdk.Color.Gdk_Color)
    is
       procedure Internal
         (Plot  : System.Address;
@@ -1155,9 +1155,9 @@ package body Gtk.Extra.Plot is
    --------------------------------

    procedure Major_Vgrid_Set_Attributes (Plot  : access Gtk_Plot_Record;
-                                         Style : in Plot_Line_Style;
-                                         Width : in Gfloat;
-                                         Color : in Gdk.Color.Gdk_Color)
+                                         Style : Plot_Line_Style;
+                                         Width : Gfloat;
+                                         Color : Gdk.Color.Gdk_Color)
    is
       procedure Internal
         (Plot  : System.Address;
@@ -1182,9 +1182,9 @@ package body Gtk.Extra.Plot is
    --------------------------------

    procedure Minor_Hgrid_Set_Attributes (Plot  : access Gtk_Plot_Record;
-                                         Style : in Plot_Line_Style;
-                                         Width : in Gfloat;
-                                         Color : in Gdk.Color.Gdk_Color)
+                                         Style : Plot_Line_Style;
+                                         Width : Gfloat;
+                                         Color : Gdk.Color.Gdk_Color)
    is
       procedure Internal
         (Plot  : System.Address;
@@ -1209,9 +1209,9 @@ package body Gtk.Extra.Plot is
    --------------------------------

    procedure Minor_Vgrid_Set_Attributes (Plot  : access Gtk_Plot_Record;
-                                         Style : in Plot_Line_Style;
-                                         Width : in Gfloat;
-                                         Color : in Gdk.Color.Gdk_Color)
+                                         Style : Plot_Line_Style;
+                                         Width : Gfloat;
+                                         Color : Gdk.Color.Gdk_Color)
    is
       procedure Internal
         (Plot  : System.Address;
@@ -1237,7 +1237,7 @@ package body Gtk.Extra.Plot is

    procedure Show_Legends (Plot : access Gtk_Plot_Record)
    is
-      procedure Internal (Plot : in System.Address);
+      procedure Internal (Plot : System.Address);
       pragma Import (C, Internal, "gtk_plot_show_legends");
    begin
       Internal (Get_Object (Plot));
@@ -1249,7 +1249,7 @@ package body Gtk.Extra.Plot is

    procedure Hide_Legends (Plot : access Gtk_Plot_Record)
    is
-      procedure Internal (Plot : in System.Address);
+      procedure Internal (Plot : System.Address);
       pragma Import (C, Internal, "gtk_plot_hide_legends");
    begin
       Internal (Get_Object (Plot));
@@ -1264,7 +1264,7 @@ package body Gtk.Extra.Plot is
                                  Shadow_Width : Gint)
    is
       procedure Internal
-        (Plot         : in System.Address;
+        (Plot         : System.Address;
          Border       : Plot_Border_Style;
          Shadow_Width : Gint);
       pragma Import (C, Internal, "gtk_plot_set_legends_border");
@@ -1278,12 +1278,12 @@ package body Gtk.Extra.Plot is
    ------------------

    procedure Legends_Move (Plot : access Gtk_Plot_Record;
-                           X    : in Gdouble;
-                           Y    : in Gdouble)
+                           X    : Gdouble;
+                           Y    : Gdouble)
    is
-      procedure Internal (Plot : in System.Address;
-                          X    : in Gdouble;
-                          Y    : in Gdouble);
+      procedure Internal (Plot : System.Address;
+                          X    : Gdouble;
+                          Y    : Gdouble);
       pragma Import (C, Internal, "gtk_plot_legends_move");
    begin
       Internal (Get_Object (Plot), X, Y);
@@ -1297,7 +1297,7 @@ package body Gtk.Extra.Plot is
                                    X    : out Gdouble;
                                    Y    : out Gdouble)
    is
-      procedure Internal (Plot : in System.Address;
+      procedure Internal (Plot : System.Address;
                           X    : out Gdouble;
                           Y    : out Gdouble);
       pragma Import (C, Internal, "gtk_plot_legends_get_position");
@@ -1312,7 +1312,7 @@ package body Gtk.Extra.Plot is
    function Legends_Get_Allocation (Plot   : access Gtk_Plot_Record)
                                     return      Gtk.Widget.Gtk_Allocation
    is
-      function Internal (Plot   : in System.Address)
+      function Internal (Plot   : System.Address)
                          return      Gtk.Widget.Gtk_Allocation;
       pragma Import (C, Internal, "gtk_plot_legends_get_allocation");
    begin
@@ -1324,16 +1324,16 @@ package body Gtk.Extra.Plot is
    ----------------------------

    procedure Legends_Set_Attributes (Plot       : access Gtk_Plot_Record;
-                                     Ps_Font    : in String;
-                                     Height     : in Gint;
-                                     Foreground : in Gdk.Color.Gdk_Color;
-                                     Background : in Gdk.Color.Gdk_Color)
+                                     Ps_Font    : String;
+                                     Height     : Gint;
+                                     Foreground : Gdk.Color.Gdk_Color;
+                                     Background : Gdk.Color.Gdk_Color)
    is
-      procedure Internal (Plot       : in System.Address;
-                          Font       : in System.Address;
-                          Height     : in Gint;
-                          Foreground : in System.Address;
-                          Background : in System.Address);
+      procedure Internal (Plot       : System.Address;
+                          Font       : System.Address;
+                          Height     : Gint;
+                          Foreground : System.Address;
+                          Background : System.Address);
       pragma Import (C, Internal, "gtk_plot_legends_set_attributes");

       Fore  : aliased Gdk.Color.Gdk_Color := Foreground;
@@ -1367,8 +1367,8 @@ package body Gtk.Extra.Plot is
      (Plot : access Gtk_Plot_Record;
       Data : access Gtk_Plot_Data_Record'Class)
    is
-      procedure Internal (Plot : in System.Address;
-                          Data : in System.Address);
+      procedure Internal (Plot : System.Address;
+                          Data : System.Address);
       pragma Import (C, Internal, "gtk_plot_add_data");
    begin
       Internal (Get_Object (Plot), Get_Object (Data));
@@ -1379,11 +1379,11 @@ package body Gtk.Extra.Plot is
    ------------------

    function Add_Function (Plot   : access Gtk_Plot_Record;
-                          Func   : in Plot_Function)
+                          Func   : Plot_Function)
                          return      Gtk_Plot_Data
    is
-      function Internal (Plot   : in System.Address;
-                         Func   : in Plot_Function)
+      function Internal (Plot   : System.Address;
+                         Func   : Plot_Function)
                         return System.Address;
       pragma Import (C, Internal, "gtk_plot_add_function");
       Stub : Gtk_Plot_Data_Record;
@@ -1401,7 +1401,7 @@ package body Gtk.Extra.Plot is
       Data : access Gtk_Plot_Data_Record'Class) return Boolean
    is
       function Internal
-        (Plot : in System.Address; Data : in System.Address) return Gint;
+        (Plot : System.Address; Data : System.Address) return Gint;
       pragma Import (C, Internal, "gtk_plot_remove_data");

    begin
@@ -1414,10 +1414,10 @@ package body Gtk.Extra.Plot is

    function Get_Axis
      (Plot   : access Gtk_Plot_Record;
-      Axis   : in Plot_Axis_Pos) return Gtk_Plot_Axis
+      Axis   : Plot_Axis_Pos) return Gtk_Plot_Axis
    is
       function Internal
-        (Plot : in System.Address; Axis : Plot_Axis_Pos) return System.Address;
+        (Plot : System.Address; Axis : Plot_Axis_Pos) return System.Address;
       pragma Import (C, Internal, "gtk_plot_get_axis");

       Stub : Gtk_Plot_Axis_Record;
@@ -1474,7 +1474,7 @@ package body Gtk.Extra.Plot is
    -----------------

    procedure Remove_Text (Plot : access Gtk_Plot_Record;
-                          Text : in Gtk_Plot_Text)
+                          Text : Gtk_Plot_Text)
    is
       procedure Internal (Plot : System.Address;
                           Text : Gtk_Plot_Text);
@@ -1502,16 +1502,16 @@ package body Gtk.Extra.Plot is
    -------------------------

    procedure Text_Set_Attributes
-     (Text          : in Gtk_Plot_Text;
-      Font          : in String;
-      Height        : in Gint;
-      Angle         : in Plot_Angle;
-      Fg            : in Gdk.Color.Gdk_Color;
-      Bg            : in Gdk.Color.Gdk_Color;
-      Transparent   : in Boolean := False;
-      Justification : in Gtk.Enums.Gtk_Justification :=
+     (Text          : Gtk_Plot_Text;
+      Font          : String;
+      Height        : Gint;
+      Angle         : Plot_Angle;
+      Fg            : Gdk.Color.Gdk_Color;
+      Bg            : Gdk.Color.Gdk_Color;
+      Transparent   : Boolean := False;
+      Justification : Gtk.Enums.Gtk_Justification :=
         Gtk.Enums.Justify_Center;
-      Str           : in String := "")
+      Str           : String := "")
    is
       procedure Internal
         (Text          : Gtk_Plot_Text;
@@ -1548,19 +1548,19 @@ package body Gtk.Extra.Plot is
    -- Text_Get_Size --
    -------------------

-   procedure Text_Get_Size (Text          : in Gtk_Plot_Text;
-                            Angle         : in Plot_Angle;
-                            Font_Name     : in String;
-                            Font_Size     : in Gint;
+   procedure Text_Get_Size (Text          : Gtk_Plot_Text;
+                            Angle         : Plot_Angle;
+                            Font_Name     : String;
+                            Font_Size     : Gint;
                             Width         : out Gint;
                             Height        : out Gint;
                             Ascent        : out Gint;
                             Descent       : out Gint)
    is
-      procedure Internal (Text          : in Gtk_Plot_Text;
-                          Angle         : in Plot_Angle;
-                          Font_Name     : in String;
-                          Font_Size     : in Gint;
+      procedure Internal (Text          : Gtk_Plot_Text;
+                          Angle         : Plot_Angle;
+                          Font_Name     : String;
+                          Font_Size     : Gint;
                           Width         : out Gint;
                           Height        : out Gint;
                           Ascent        : out Gint;
@@ -1575,21 +1575,21 @@ package body Gtk.Extra.Plot is
    -- Text_Get_Area --
    -------------------

-   procedure Text_Get_Area (Text          : in  Gtk_Plot_Text;
-                            Angle         : in Plot_Angle;
-                            Just          : in Gtk_Justification;
-                            Font_Name     : in String;
-                            Font_Size     : in Gint;
+   procedure Text_Get_Area (Text          : Gtk_Plot_Text;
+                            Angle         : Plot_Angle;
+                            Just          : Gtk_Justification;
+                            Font_Name     : String;
+                            Font_Size     : Gint;
                             X             : out Gint;
                             Y             : out Gint;
                             Width         : out Gint;
                             Height        : out Gint)
    is
-      procedure Internal (Text          : in  Gtk_Plot_Text;
-                          Angle         : in Plot_Angle;
-                          Just          : in Gtk_Justification;
-                          Font_Name     : in String;
-                          Font_Size     : in Gint;
+      procedure Internal (Text          : Gtk_Plot_Text;
+                          Angle         : Plot_Angle;
+                          Just          : Gtk_Justification;
+                          Font_Name     : String;
+                          Font_Size     : Gint;
                           X             : out Gint;
                           Y             : out Gint;
                           Width         : out Gint;
============================================================
--- src/gtk-text_buffer.adb	8baae7d93901f253f2df70ead9ecc7689e21fc52
+++ src/gtk-text_buffer.adb	1cb71213aa06933f752cc9deba3117dc6e600885
@@ -151,6 +151,26 @@ package body Gtk.Text_Buffer is
       Internal (Get_Object (Buffer), Iter, Text, Text'Length);
    end Insert;

+   ------------
+   -- Insert --
+   ------------
+
+   procedure Insert
+     (Buffer : access Gtk_Text_Buffer_Record;
+      Iter   : in out Gtk.Text_Iter.Gtk_Text_Iter;
+      Text   : Gtkada.Types.Chars_Ptr)
+   is
+      procedure Internal
+        (Buffer : System.Address;
+         Iter   : Gtk.Text_Iter.Gtk_Text_Iter;
+         Text   : Gtkada.Types.Chars_Ptr;
+         Len    : Gint := -1);
+      pragma Import (C, Internal, "gtk_text_buffer_insert");
+
+   begin
+      Internal (Get_Object (Buffer), Iter, Text);
+   end Insert;
+
    ----------------------
    -- Insert_With_Tags --
    ----------------------
@@ -174,6 +194,28 @@ package body Gtk.Text_Buffer is
         (Get_Object (Buffer), Iter, Text, Text'Length, Get_Object (Tag));
    end Insert_With_Tags;

+   ----------------------
+   -- Insert_With_Tags --
+   ----------------------
+
+   procedure Insert_With_Tags
+     (Buffer : access Gtk_Text_Buffer_Record;
+      Iter   : in out Gtk.Text_Iter.Gtk_Text_Iter;
+      Text   : Gtkada.Types.Chars_Ptr;
+      Tag    : Gtk.Text_Tag.Gtk_Text_Tag)
+   is
+      procedure Internal
+        (Buffer : System.Address;
+         Iter   : Gtk.Text_Iter.Gtk_Text_Iter;
+         Text   : Gtkada.Types.Chars_Ptr;
+         Len    : Gint := -1;
+         Tag    : System.Address);
+      pragma Import (C, Internal, "ada_gtk_text_buffer_insert_with_tags");
+
+   begin
+      Internal (Get_Object (Buffer), Iter, Text, Tag => Get_Object (Tag));
+   end Insert_With_Tags;
+
    ------------------------------
    -- Insert_With_Tags_By_Name --
    ------------------------------
============================================================
--- src/gtk-text_buffer.ads	6b2f0547f7464d7a6ecc37d5622a9dd58620d762
+++ src/gtk-text_buffer.ads	c70db353dc955f4df5aa88821f826978edc560e2
@@ -1,7 +1,7 @@
 -----------------------------------------------------------------------
 --              GtkAda - Ada95 binding for Gtk+/Gnome                --
 --                                                                   --
---                Copyright (C) 2001-2007 AdaCore                    --
+--                Copyright (C) 2001-2009, AdaCore                   --
 --                                                                   --
 -- This library is free software; you can redistribute it and/or     --
 -- modify it under the terms of the GNU General Public               --
@@ -98,6 +98,10 @@ package Gtk.Text_Buffer is
      (Buffer : access Gtk_Text_Buffer_Record;
       Iter   : in out Gtk.Text_Iter.Gtk_Text_Iter;
       Text   : UTF8_String);
+   procedure Insert
+     (Buffer : access Gtk_Text_Buffer_Record;
+      Iter   : in out Gtk.Text_Iter.Gtk_Text_Iter;
+      Text   : Gtkada.Types.Chars_Ptr);
    --  Insert Text at position Iter.
    --  Emit the "insert_text" signal; insertion actually occurs
    --  in the default handler for the signal. Iter is invalidated when
@@ -111,6 +115,11 @@ package Gtk.Text_Buffer is
       Iter   : in out Gtk.Text_Iter.Gtk_Text_Iter;
       Text   : UTF8_String;
       Tag    : Gtk.Text_Tag.Gtk_Text_Tag);
+   procedure Insert_With_Tags
+     (Buffer : access Gtk_Text_Buffer_Record;
+      Iter   : in out Gtk.Text_Iter.Gtk_Text_Iter;
+      Text   : Gtkada.Types.Chars_Ptr;
+      Tag    : Gtk.Text_Tag.Gtk_Text_Tag);
    --  Same as Insert, but specifies the tag to apply to the range.

    procedure Insert_With_Tags_By_Name
============================================================
--- src/gtkada-abstract_tree_model.ads	fad8fa7caa7ff088d870740c5b1faa79f34cb525
+++ src/gtkada-abstract_tree_model.ads	8e8f3e0f5be9076e8016222cdfb8589f90e8e1f0
@@ -1,7 +1,7 @@
 -----------------------------------------------------------------------
 --          GtkAda - Ada95 binding for the Gimp Toolkit              --
 --                                                                   --
---                     Copyright (C) 2008, AdaCore                   --
+--                     Copyright (C) 2008-2009, AdaCore              --
 --                                                                   --
 -- This library is free software; you can redistribute it and/or     --
 -- modify it under the terms of the GNU General Public               --
@@ -126,6 +126,13 @@ package Gtkada.Abstract_Tree_Model is
    --  based model would not want to keep the entire file-hierarchy in memory,
    --  just the sections that are currently being displayed by every current
    --  view.
+   --  Technically, the idea is to increase the refcount for the node itself,
+   --  not for any data associated with it (should you want to associate a
+   --  reference counted type with the rows). Most of the time you will not
+   --  need to do anything here.
+   --  Every time the view makes a row visible (for instance when you expand
+   --  a node), it calls Ref_Node for that row. When the row is hidden again,
+   --  it calls Unref_Node.

    procedure Unref_Node
      (Self : access Gtk_Abstract_Tree_Model_Record;
@@ -136,6 +143,10 @@ package Gtkada.Abstract_Tree_Model is
    --  reasons. For more information on what this means, please see
    --  Tree_Model_Ref_Node. Please note that nodes that are deleted are not
    --  unreferenced.
+   --  Technically, your model is the one deleting a row (and it should do so
+   --  only if the refcount for the row is not 1, see Ref_Node). Thus gtk+
+   --  avoids a potential callback to your application by not emitting
+   --  Unref_Node in such a case.

 private

============================================================
--- src/gtkada-mdi.adb	2ef07b84f3c134facb0923e416d1daf89fd3ab1d
+++ src/gtkada-mdi.adb	861ae4469ffa0dc44ad98784f675fde349de9307
@@ -4490,6 +4490,15 @@ package body Gtkada.MDI is

          if Raised_Child /= null then
             Prepend (To_Raise, Gtk_Widget (Raised_Child));
+
+            --  Make sure the child appears first in the list for this
+            --  notebook. That way, if the current focus child is closed by the
+            --  user, we know the focus won't fallback to a child currently not
+            --  visible in the notebook, which would result in a raise.
+            Ref (Raised_Child);
+            Remove (MDI.Items, Gtk_Widget (Raised_Child));
+            Prepend (MDI.Items, Gtk_Widget (Raised_Child));
+            Unref (Raised_Child);
          end if;
       end Parse_Notebook_Node;

============================================================
--- src/misc.c	72a474be0ac8ea13cdab1d248d96cd783cdd084f
+++ src/misc.c	78525f7572974968cbbfbab1faead285fe4f6ce9
@@ -591,8 +591,7 @@ ada_initialize_class_record

       /* Need to create a new type, otherwise Gtk+ won't free objects of
          this type */
-      new_type = g_type_register_static
-	(ancestor, g_strdup (type_name), class_info, 0);
+      new_type = g_type_register_static (ancestor, type_name, class_info, 0);
       klass = g_type_class_ref (new_type);

       g_assert (klass != NULL);