]> Pileus Git - ~andy/gtk/blobdiff - tests/testgtk.c
tests/makefile.msc is in CVS for a long time, finally added to EXTRA_DIST
[~andy/gtk] / tests / testgtk.c
index 2baf054e8679745261558df764e44e9f821c94d7..fb0e54409e93936d16038a25a50c33178ac96c5a 100644 (file)
@@ -24,7 +24,9 @@
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
-#include "config.h"
+#undef GTK_DISABLE_DEPRECATED
+
+#include <config.h>
 
 #undef G_LOG_DOMAIN
 
@@ -114,8 +116,8 @@ build_option_menu (gchar           *items[],
   gint i;
 
   omenu = gtk_option_menu_new ();
-  gtk_signal_connect (GTK_OBJECT (omenu), "changed",
-                     GTK_SIGNAL_FUNC (func), data);
+  g_signal_connect (omenu, "changed",
+                   G_CALLBACK (func), data);
       
   menu = gtk_menu_new ();
   group = NULL;
@@ -123,7 +125,7 @@ build_option_menu (gchar           *items[],
   for (i = 0; i < num_items; i++)
     {
       menu_item = gtk_radio_menu_item_new_with_label (group, items[i]);
-      group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_item));
+      group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_item));
       gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
       if (i == history)
        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item), TRUE);
@@ -139,8 +141,8 @@ build_option_menu (gchar           *items[],
 static void
 destroy_tooltips (GtkWidget *widget, GtkWindow **window)
 {
-  GtkTooltips *tt = gtk_object_get_data (GTK_OBJECT (*window), "tooltips");
-  gtk_object_unref (GTK_OBJECT (tt));
+  GtkTooltips *tt = g_object_get_data (G_OBJECT (*window), "tooltips");
+  g_object_unref (tt);
   *window = NULL;
 }
 
@@ -167,7 +169,7 @@ pattern_expose (GtkWidget      *widget,
                          event->area.x, event->area.y,
                          event->area.width, event->area.height);
 
-      g_object_unref (G_OBJECT (tmp_gc));
+      g_object_unref (tmp_gc);
     }
 
   return FALSE;
@@ -184,7 +186,7 @@ pattern_set_bg (GtkWidget   *widget,
     { 0, 0xaaaa, 0xaaaa, 0xffff }
   };
     
-  g_object_set_data (G_OBJECT (child), "pattern-color", (gpointer)&colors[level]);
+  g_object_set_data (G_OBJECT (child), "pattern-color", (gpointer) &colors[level]);
   gdk_window_set_user_data (child, widget);
 }
 
@@ -307,13 +309,13 @@ create_big_windows (GtkWidget *widget)
 
       gtk_window_set_default_size (GTK_WINDOW (window), 200, 300);
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
-      gtk_signal_connect (GTK_OBJECT (window), "response",
-                          GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                          NULL);
+      g_signal_connect (window, "response",
+                        G_CALLBACK (gtk_widget_destroy),
+                        NULL);
 
       table = gtk_table_new (2, 2, FALSE);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
@@ -322,21 +324,21 @@ create_big_windows (GtkWidget *widget)
       darea = gtk_drawing_area_new ();
 
       hadj = (GtkAdjustment *)gtk_adjustment_new (0, 0, PATTERN_SIZE, 10, 100, 100);
-      gtk_signal_connect (GTK_OBJECT (hadj), "value_changed",
-                         GTK_SIGNAL_FUNC (pattern_hadj_changed), darea);
+      g_signal_connect (hadj, "value_changed",
+                       G_CALLBACK (pattern_hadj_changed), darea);
       g_object_set_data (G_OBJECT (hadj), "old-value", &current_x);
       
       vadj = (GtkAdjustment *)gtk_adjustment_new (0, 0, PATTERN_SIZE, 10, 100, 100);
-      gtk_signal_connect (GTK_OBJECT (vadj), "value_changed",
-                         GTK_SIGNAL_FUNC (pattern_vadj_changed), darea);
+      g_signal_connect (vadj, "value_changed",
+                       G_CALLBACK (pattern_vadj_changed), darea);
       g_object_set_data (G_OBJECT (vadj), "old-value", &current_y);
       
-      gtk_signal_connect (GTK_OBJECT (darea), "realize",
-                          GTK_SIGNAL_FUNC (pattern_realize),
-                          NULL);
-      gtk_signal_connect (GTK_OBJECT (darea), "expose_event",
-                          GTK_SIGNAL_FUNC (pattern_expose),
-                          NULL);
+      g_signal_connect (darea, "realize",
+                        G_CALLBACK (pattern_realize),
+                        NULL);
+      g_signal_connect (darea, "expose_event",
+                        G_CALLBACK (pattern_expose),
+                        NULL);
 
       eventbox = gtk_event_box_new ();
       gtk_table_attach (GTK_TABLE (table), eventbox,
@@ -396,9 +398,9 @@ create_buttons (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkButton");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -422,59 +424,59 @@ create_buttons (GtkWidget *widget)
       button[7] = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
       button[8] = gtk_button_new_with_label ("button9");
       
-      gtk_signal_connect (GTK_OBJECT (button[0]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[1]);
+      g_signal_connect (button[0], "clicked",
+                       G_CALLBACK (button_window),
+                       button[1]);
 
       gtk_table_attach (GTK_TABLE (table), button[0], 0, 1, 0, 1,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button[1]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[2]);
+      g_signal_connect (button[1], "clicked",
+                       G_CALLBACK (button_window),
+                       button[2]);
 
       gtk_table_attach (GTK_TABLE (table), button[1], 1, 2, 1, 2,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button[2]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[3]);
+      g_signal_connect (button[2], "clicked",
+                       G_CALLBACK (button_window),
+                       button[3]);
       gtk_table_attach (GTK_TABLE (table), button[2], 2, 3, 2, 3,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button[3]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[4]);
+      g_signal_connect (button[3], "clicked",
+                       G_CALLBACK (button_window),
+                       button[4]);
       gtk_table_attach (GTK_TABLE (table), button[3], 0, 1, 2, 3,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button[4]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[5]);
+      g_signal_connect (button[4], "clicked",
+                       G_CALLBACK (button_window),
+                       button[5]);
       gtk_table_attach (GTK_TABLE (table), button[4], 2, 3, 0, 1,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button[5]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[6]);
+      g_signal_connect (button[5], "clicked",
+                       G_CALLBACK (button_window),
+                       button[6]);
       gtk_table_attach (GTK_TABLE (table), button[5], 1, 2, 2, 3,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button[6]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[7]);
+      g_signal_connect (button[6], "clicked",
+                       G_CALLBACK (button_window),
+                       button[7]);
       gtk_table_attach (GTK_TABLE (table), button[6], 1, 2, 0, 1,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button[7]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[8]);
+      g_signal_connect (button[7], "clicked",
+                       G_CALLBACK (button_window),
+                       button[8]);
       gtk_table_attach (GTK_TABLE (table), button[7], 2, 3, 1, 2,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button[8]), "clicked",
-                         GTK_SIGNAL_FUNC(button_window),
-                         button[0]);
+      g_signal_connect (button[8], "clicked",
+                       G_CALLBACK (button_window),
+                       button[0]);
       gtk_table_attach (GTK_TABLE (table), button[8], 0, 1, 1, 2,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
@@ -486,9 +488,9 @@ create_buttons (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button[9] = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button[9]), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button[9], "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button[9], TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button[9], GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button[9]);
@@ -519,9 +521,9 @@ create_toggle_buttons (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkToggleButton");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -554,9 +556,9 @@ create_toggle_buttons (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -568,6 +570,62 @@ create_toggle_buttons (GtkWidget *widget)
     gtk_widget_destroy (window);
 }
 
+static GtkWidget *
+create_widget_grid (GType widget_type)
+{
+  GtkWidget *table;
+  GtkWidget *group_widget = NULL;
+  gint i, j;
+  
+  table = gtk_table_new (FALSE, 3, 3);
+  
+  for (i = 0; i < 5; i++)
+    {
+      for (j = 0; j < 5; j++)
+       {
+         GtkWidget *widget;
+         char *tmp;
+         
+         if (i == 0 && j == 0)
+           {
+             widget = NULL;
+           }
+         else if (i == 0)
+           {
+             tmp = g_strdup_printf ("%d", j);
+             widget = gtk_label_new (tmp);
+             g_free (tmp);
+           }
+         else if (j == 0)
+           {
+             tmp = g_strdup_printf ("%c", 'A' + i - 1);
+             widget = gtk_label_new (tmp);
+             g_free (tmp);
+           }
+         else
+           {
+             widget = g_object_new (widget_type, NULL);
+             
+             if (g_type_is_a (widget_type, GTK_TYPE_RADIO_BUTTON))
+               {
+                 if (!group_widget)
+                   group_widget = widget;
+                 else
+                   g_object_set (widget, "group", group_widget, NULL);
+               }
+           }
+         
+         if (widget)
+           gtk_table_attach (GTK_TABLE (table), widget,
+                             i, i + 1, j, j + 1,
+                             0,        0,
+                             0,        0);
+       }
+    }
+
+  return table;
+}
+
 /*
  * GtkCheckButton
  */
@@ -580,23 +638,28 @@ create_check_buttons (GtkWidget *widget)
   GtkWidget *box2;
   GtkWidget *button;
   GtkWidget *separator;
+  GtkWidget *table;
   
   if (!window)
     {
-      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+      window = gtk_dialog_new_with_buttons ("Check Buttons",
+                                            NULL, 0,
+                                            GTK_STOCK_CLOSE,
+                                            GTK_RESPONSE_NONE,
+                                            NULL);
+
       gtk_window_set_screen (GTK_WINDOW (window), 
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
-
-      gtk_window_set_title (GTK_WINDOW (window), "GtkCheckButton");
-      gtk_container_set_border_width (GTK_CONTAINER (window), 0);
-
-      box1 = gtk_vbox_new (FALSE, 0);
-      gtk_container_add (GTK_CONTAINER (window), box1);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
+      g_signal_connect (window, "response",
+                        G_CALLBACK (gtk_widget_destroy),
+                        NULL);
 
+      box1 = GTK_DIALOG (window)->vbox;
+      
       box2 = gtk_vbox_new (FALSE, 10);
       gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
       gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
@@ -613,21 +676,13 @@ create_check_buttons (GtkWidget *widget)
       button = gtk_check_button_new_with_label ("inconsistent");
       gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (button), TRUE);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
-      
+
       separator = gtk_hseparator_new ();
       gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
 
-      box2 = gtk_vbox_new (FALSE, 10);
-      gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
-      gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
-
-      button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
-      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
-      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
-      gtk_widget_grab_default (button);
+      table = create_widget_grid (GTK_TYPE_CHECK_BUTTON);
+      gtk_container_set_border_width (GTK_CONTAINER (table), 10);
+      gtk_box_pack_start (GTK_BOX (box1), table, TRUE, TRUE, 0);
     }
 
   if (!GTK_WIDGET_VISIBLE (window))
@@ -648,23 +703,27 @@ create_radio_buttons (GtkWidget *widget)
   GtkWidget *box2;
   GtkWidget *button;
   GtkWidget *separator;
+  GtkWidget *table;
 
   if (!window)
     {
-      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+      window = gtk_dialog_new_with_buttons ("Radio Buttons",
+                                            NULL, 0,
+                                            GTK_STOCK_CLOSE,
+                                            GTK_RESPONSE_NONE,
+                                            NULL);
 
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
-
-      gtk_window_set_title (GTK_WINDOW (window), "radio buttons");
-      gtk_container_set_border_width (GTK_CONTAINER (window), 0);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
+      g_signal_connect (window, "response",
+                        G_CALLBACK (gtk_widget_destroy),
+                        NULL);
 
-      box1 = gtk_vbox_new (FALSE, 0);
-      gtk_container_add (GTK_CONTAINER (window), box1);
+      box1 = GTK_DIALOG (window)->vbox;
 
       box2 = gtk_vbox_new (FALSE, 10);
       gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
@@ -717,17 +776,9 @@ create_radio_buttons (GtkWidget *widget)
       separator = gtk_hseparator_new ();
       gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
 
-      box2 = gtk_vbox_new (FALSE, 10);
-      gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
-      gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
-
-      button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
-      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
-      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
-      gtk_widget_grab_default (button);
+      table = create_widget_grid (GTK_TYPE_RADIO_BUTTON);
+      gtk_container_set_border_width (GTK_CONTAINER (table), 10);
+      gtk_box_pack_start (GTK_BOX (box1), table, TRUE, TRUE, 0);
     }
 
   if (!GTK_WIDGET_VISIBLE (window))
@@ -744,8 +795,8 @@ static GtkWidget *
 create_bbox (gint  horizontal,
             char* title, 
             gint  spacing,
-            gint  child_w, 
-            gint  child_h, 
+            gint  child_w,
+            gint  child_h,
             gint  layout)
 {
   GtkWidget *frame;
@@ -794,9 +845,9 @@ create_button_box (GtkWidget *widget)
     gtk_window_set_screen (GTK_WINDOW (window), gtk_widget_get_screen (widget));
     gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
     
-    gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                       GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                       &window);
+    g_signal_connect (window, "destroy",
+                     G_CALLBACK (gtk_widget_destroyed),
+                     &window);
     
     gtk_container_set_border_width (GTK_CONTAINER (window), 10);
 
@@ -881,7 +932,7 @@ new_pixmap (char      *filename,
                                         background,
                                         filename);
   
-  wpixmap = gtk_pixmap_new (pixmap, mask);
+  wpixmap = gtk_image_new_from_pixmap (pixmap, mask);
 
   return wpixmap;
 }
@@ -971,11 +1022,10 @@ create_toolbar (GtkWidget *widget)
                             gtk_widget_get_screen (widget));
       
       gtk_window_set_title (GTK_WINDOW (window), "Toolbar test");
-      gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
       gtk_widget_realize (window);
@@ -985,42 +1035,42 @@ create_toolbar (GtkWidget *widget)
       gtk_toolbar_insert_stock (GTK_TOOLBAR (toolbar),
                                GTK_STOCK_NEW,
                                "Stock icon: New", "Toolbar/New",
-                               (GtkSignalFunc) set_toolbar_small_stock, toolbar, -1);
+                               G_CALLBACK (set_toolbar_small_stock), toolbar, -1);
       
       gtk_toolbar_insert_stock (GTK_TOOLBAR (toolbar),
                                GTK_STOCK_OPEN,
                                "Stock icon: Open", "Toolbar/Open",
-                               (GtkSignalFunc) set_toolbar_large_stock, toolbar, -1);
+                               G_CALLBACK (set_toolbar_large_stock), toolbar, -1);
       
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Horizontal", "Horizontal toolbar layout", "Toolbar/Horizontal",
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) set_toolbar_horizontal, toolbar);
+                              G_CALLBACK (set_toolbar_horizontal), toolbar);
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Vertical", "Vertical toolbar layout", "Toolbar/Vertical",
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) set_toolbar_vertical, toolbar);
+                              G_CALLBACK (set_toolbar_vertical), toolbar);
 
       gtk_toolbar_append_space (GTK_TOOLBAR(toolbar));
 
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Icons", "Only show toolbar icons", "Toolbar/IconsOnly",
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) set_toolbar_icons, toolbar);
+                              G_CALLBACK (set_toolbar_icons), toolbar);
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Text", "Only show toolbar text", "Toolbar/TextOnly",
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) set_toolbar_text, toolbar);
+                              G_CALLBACK (set_toolbar_text), toolbar);
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Both", "Show toolbar icons and text", "Toolbar/Both",
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) set_toolbar_both, toolbar);
+                              G_CALLBACK (set_toolbar_both), toolbar);
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Both (horizontal)",
                               "Show toolbar icons and text in a horizontal fashion",
                               "Toolbar/BothHoriz",
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) set_toolbar_both_horiz, toolbar);
+                              G_CALLBACK (set_toolbar_both_horiz), toolbar);
                               
       gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
 
@@ -1036,35 +1086,37 @@ create_toolbar (GtkWidget *widget)
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Enable", "Enable tooltips", NULL,
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) set_toolbar_enable, toolbar);
+                              G_CALLBACK (set_toolbar_enable), toolbar);
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Disable", "Disable tooltips", NULL,
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) set_toolbar_disable, toolbar);
+                              G_CALLBACK (set_toolbar_disable), toolbar);
 
       gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
 
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Frobate", "Frobate tooltip", NULL,
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) NULL, toolbar);
+                              NULL, toolbar);
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Baz", "Baz tooltip", NULL,
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) NULL, toolbar);
+                              NULL, toolbar);
 
       gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
       
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Blah", "Blah tooltip", NULL,
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) NULL, toolbar);
+                              NULL, toolbar);
       gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                               "Bar", "Bar tooltip", NULL,
                               new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                              (GtkSignalFunc) NULL, toolbar);
+                              NULL, toolbar);
 
       gtk_container_add (GTK_CONTAINER (window), toolbar);
+
+      gtk_widget_set_size_request (toolbar, 200, -1);
     }
 
   if (!GTK_WIDGET_VISIBLE (window))
@@ -1086,59 +1138,59 @@ make_toolbar (GtkWidget *window)
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Horizontal", "Horizontal toolbar layout", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) set_toolbar_horizontal, toolbar);
+                          G_CALLBACK (set_toolbar_horizontal), toolbar);
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Vertical", "Vertical toolbar layout", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) set_toolbar_vertical, toolbar);
+                          G_CALLBACK (set_toolbar_vertical), toolbar);
 
   gtk_toolbar_append_space (GTK_TOOLBAR(toolbar));
 
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Icons", "Only show toolbar icons", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) set_toolbar_icons, toolbar);
+                          G_CALLBACK (set_toolbar_icons), toolbar);
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Text", "Only show toolbar text", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) set_toolbar_text, toolbar);
+                          G_CALLBACK (set_toolbar_text), toolbar);
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Both", "Show toolbar icons and text", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) set_toolbar_both, toolbar);
+                          G_CALLBACK (set_toolbar_both), toolbar);
 
   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
 
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Woot", "Woot woot woot", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) NULL, toolbar);
+                          NULL, toolbar);
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Blah", "Blah blah blah", "Toolbar/Big",
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) NULL, toolbar);
+                          NULL, toolbar);
 
   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
 
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Enable", "Enable tooltips", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) set_toolbar_enable, toolbar);
+                          G_CALLBACK (set_toolbar_enable), toolbar);
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Disable", "Disable tooltips", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) set_toolbar_disable, toolbar);
+                          G_CALLBACK (set_toolbar_disable), toolbar);
 
   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
   
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Hoo", "Hoo tooltip", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) NULL, toolbar);
+                          NULL, toolbar);
   gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                           "Woo", "Woo tooltip", NULL,
                           new_pixmap ("test.xpm", window->window, &window->style->bg[GTK_STATE_NORMAL]),
-                          (GtkSignalFunc) NULL, toolbar);
+                          NULL, toolbar);
 
   return toolbar;
 }
@@ -1230,9 +1282,9 @@ create_statusbar (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "statusbar");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -1246,17 +1298,17 @@ create_statusbar (GtkWidget *widget)
 
       statusbar = gtk_statusbar_new ();
       gtk_box_pack_end (GTK_BOX (box1), statusbar, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (statusbar),
-                         "text_popped",
-                         GTK_SIGNAL_FUNC (statusbar_popped),
-                         NULL);
+      g_signal_connect (statusbar,
+                       "text_popped",
+                       G_CALLBACK (statusbar_popped),
+                       NULL);
 
       button = gtk_widget_new (gtk_button_get_type (),
                               "label", "push something",
                               "visible", TRUE,
                               "parent", box2,
                               NULL);
-      g_object_connect (G_OBJECT (button),
+      g_object_connect (button,
                        "signal::clicked", statusbar_push, statusbar,
                        NULL);
 
@@ -1292,9 +1344,9 @@ create_statusbar (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -1316,7 +1368,7 @@ cb_tree_destroy_event(GtkWidget* w)
   sTreeButtons* tree_buttons;
 
   /* free buttons structure associate at this tree */
-  tree_buttons = gtk_object_get_user_data (GTK_OBJECT (w));
+  tree_buttons = g_object_get_data (G_OBJECT (w), "user_data");
   g_free (tree_buttons);
 }
 
@@ -1330,7 +1382,7 @@ cb_add_new_item(GtkWidget* w, GtkTree* tree)
   GtkWidget* item_new;
   char buffer[255];
 
-  tree_buttons = gtk_object_get_user_data(GTK_OBJECT(tree));
+  tree_buttons = g_object_get_data (G_OBJECT (tree), "user_data");
 
   selected_list = GTK_TREE_SELECTION_OLD(tree);
 
@@ -1410,7 +1462,7 @@ cb_tree_changed(GtkTree* tree)
   GList* selected_list;
   guint nb_selected;
 
-  tree_buttons = gtk_object_get_user_data(GTK_OBJECT(tree));
+  tree_buttons = g_object_get_data (G_OBJECT (tree), "user_data");
 
   selected_list = GTK_TREE_SELECTION_OLD(tree);
   nb_selected = g_list_length(selected_list);
@@ -1498,9 +1550,9 @@ create_tree_sample(GdkScreen *screen, guint selection_mode,
   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_set_screen (GTK_WINDOW (window), screen);
   gtk_window_set_title(GTK_WINDOW(window), "Tree Sample");
-  gtk_signal_connect(GTK_OBJECT(window), "destroy",
-                    (GtkSignalFunc) cb_tree_destroy_event, NULL);
-  gtk_object_set_user_data(GTK_OBJECT(window), tree_buttons);
+  g_signal_connect (window, "destroy",
+                   G_CALLBACK (cb_tree_destroy_event), NULL);
+  g_object_set_data (G_OBJECT (window), "user_data", tree_buttons);
 
   box1 = gtk_vbox_new(FALSE, 0);
   gtk_container_add(GTK_CONTAINER(window), box1);
@@ -1517,15 +1569,15 @@ create_tree_sample(GdkScreen *screen, guint selection_mode,
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
                                  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start (GTK_BOX (box2), scrolled_win, TRUE, TRUE, 0);
-  gtk_widget_set_usize (scrolled_win, 200, 200);
+  gtk_widget_set_size_request (scrolled_win, 200, 200);
   gtk_widget_show (scrolled_win);
   
   /* create root tree widget */
   root_tree = gtk_tree_new();
-  gtk_signal_connect(GTK_OBJECT(root_tree), "selection_changed",
-                    (GtkSignalFunc)cb_tree_changed,
-                    (gpointer)NULL);
-  gtk_object_set_user_data(GTK_OBJECT(root_tree), tree_buttons);
+  g_signal_connect (root_tree, "selection_changed",
+                   G_CALLBACK (cb_tree_changed),
+                   NULL);
+  g_object_set_data (G_OBJECT (root_tree), "user_data", tree_buttons);
   gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_win), root_tree);
   gtk_tree_set_selection_mode(GTK_TREE(root_tree), selection_mode);
   gtk_tree_set_view_lines(GTK_TREE(root_tree), draw_line);
@@ -1553,27 +1605,27 @@ create_tree_sample(GdkScreen *screen, guint selection_mode,
 
   button = gtk_button_new_with_label("Add Item");
   gtk_widget_set_sensitive(button, FALSE);
-  gtk_signal_connect(GTK_OBJECT (button), "clicked",
-                    (GtkSignalFunc) cb_add_new_item, 
-                    (gpointer)root_tree);
+  g_signal_connect (button, "clicked",
+                   G_CALLBACK (cb_add_new_item),
+                   root_tree);
   gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
   gtk_widget_show(button);
   tree_buttons->add_button = button;
 
   button = gtk_button_new_with_label("Remove Item(s)");
   gtk_widget_set_sensitive(button, FALSE);
-  gtk_signal_connect(GTK_OBJECT (button), "clicked",
-                    (GtkSignalFunc) cb_remove_item, 
-                    (gpointer)root_tree);
+  g_signal_connect (button, "clicked",
+                   G_CALLBACK (cb_remove_item),
+                   root_tree);
   gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
   gtk_widget_show(button);
   tree_buttons->remove_button = button;
 
   button = gtk_button_new_with_label("Remove Subtree");
   gtk_widget_set_sensitive(button, FALSE);
-  gtk_signal_connect(GTK_OBJECT (button), "clicked",
-                    (GtkSignalFunc) cb_remove_subtree, 
-                    (gpointer)root_tree);
+  g_signal_connect (button, "clicked",
+                   G_CALLBACK (cb_remove_subtree),
+                   root_tree);
   gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
   gtk_widget_show(button);
   tree_buttons->subtree_button = button;
@@ -1591,9 +1643,9 @@ create_tree_sample(GdkScreen *screen, guint selection_mode,
 
   button = gtk_button_new_with_label("Close");
   gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
-  gtk_signal_connect_object(GTK_OBJECT (button), "clicked",
-                           (GtkSignalFunc) gtk_widget_destroy, 
-                           GTK_OBJECT(window));
+  g_signal_connect_swapped (button, "clicked",
+                           G_CALLBACK (gtk_widget_destroy),
+                           window);
   gtk_widget_show(button);
 
   gtk_widget_show(window);
@@ -1662,9 +1714,9 @@ create_tree_mode_window(GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
       gtk_window_set_title(GTK_WINDOW(window), "Set Tree Parameters");
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
       box1 = gtk_vbox_new(FALSE, 0);
       gtk_container_add(GTK_CONTAINER(window), box1);
 
@@ -1771,14 +1823,14 @@ create_tree_mode_window(GtkWidget *widget)
 
       button = gtk_button_new_with_label("Create Tree");
       gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
-      gtk_signal_connect(GTK_OBJECT (button), "clicked",
-                        (GtkSignalFunc) cb_create_tree, NULL);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (cb_create_tree), NULL);
 
       button = gtk_button_new_with_label("Close");
       gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                 GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                 GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
     }
   if (!GTK_WIDGET_VISIBLE (window))
     gtk_widget_show_all (window);
@@ -1946,8 +1998,8 @@ handle_box_child_signal (GtkHandleBox *hb,
                         const gchar  *action)
 {
   printf ("%s: child <%s> %sed\n",
-         gtk_type_name (GTK_OBJECT_TYPE (hb)),
-         gtk_type_name (GTK_OBJECT_TYPE (child)),
+         g_type_name (G_OBJECT_TYPE (hb)),
+         g_type_name (G_OBJECT_TYPE (child)),
          action);
 }
 
@@ -1974,9 +2026,9 @@ create_handle_box (GtkWidget *widget)
                          "Handle Box Test");
     gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
     
-    gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                       GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                       &window);
+    g_signal_connect (window, "destroy",
+                     G_CALLBACK (gtk_widget_destroyed),
+                     &window);
     
     gtk_container_set_border_width (GTK_CONTAINER (window), 20);
 
@@ -2006,14 +2058,14 @@ create_handle_box (GtkWidget *widget)
 
     handle_box = gtk_handle_box_new ();
     gtk_box_pack_start (GTK_BOX (hbox), handle_box, FALSE, FALSE, 0);
-    gtk_signal_connect (GTK_OBJECT (handle_box),
-                       "child_attached",
-                       GTK_SIGNAL_FUNC (handle_box_child_signal),
-                       "attached");
-    gtk_signal_connect (GTK_OBJECT (handle_box),
-                       "child_detached",
-                       GTK_SIGNAL_FUNC (handle_box_child_signal),
-                       "detached");
+    g_signal_connect (handle_box,
+                     "child_attached",
+                     G_CALLBACK (handle_box_child_signal),
+                     "attached");
+    g_signal_connect (handle_box,
+                     "child_detached",
+                     G_CALLBACK (handle_box_child_signal),
+                     "detached");
     gtk_widget_show (handle_box);
 
     toolbar = make_toolbar (window);
@@ -2023,26 +2075,26 @@ create_handle_box (GtkWidget *widget)
 
     handle_box = gtk_handle_box_new ();
     gtk_box_pack_start (GTK_BOX (hbox), handle_box, FALSE, FALSE, 0);
-    gtk_signal_connect (GTK_OBJECT (handle_box),
-                       "child_attached",
-                       GTK_SIGNAL_FUNC (handle_box_child_signal),
-                       "attached");
-    gtk_signal_connect (GTK_OBJECT (handle_box),
-                       "child_detached",
-                       GTK_SIGNAL_FUNC (handle_box_child_signal),
-                       "detached");
+    g_signal_connect (handle_box,
+                     "child_attached",
+                     G_CALLBACK (handle_box_child_signal),
+                     "attached");
+    g_signal_connect (handle_box,
+                     "child_detached",
+                     G_CALLBACK (handle_box_child_signal),
+                     "detached");
     gtk_widget_show (handle_box);
 
     handle_box2 = gtk_handle_box_new ();
     gtk_container_add (GTK_CONTAINER (handle_box), handle_box2);
-    gtk_signal_connect (GTK_OBJECT (handle_box2),
-                       "child_attached",
-                       GTK_SIGNAL_FUNC (handle_box_child_signal),
-                       "attached");
-    gtk_signal_connect (GTK_OBJECT (handle_box2),
-                       "child_detached",
-                       GTK_SIGNAL_FUNC (handle_box_child_signal),
-                       "detached");
+    g_signal_connect (handle_box2,
+                     "child_attached",
+                     G_CALLBACK (handle_box_child_signal),
+                     "attached");
+    g_signal_connect (handle_box2,
+                     "child_detached",
+                     G_CALLBACK (handle_box_child_signal),
+                     "detached");
     gtk_widget_show (handle_box2);
 
     label = gtk_label_new ("Fooo!");
@@ -2213,7 +2265,7 @@ take_snapshot (GtkWidget *button,
   gtk_image_set_from_image (GTK_IMAGE (gid->snap),
                             shot, NULL);
 
-  g_object_unref (G_OBJECT (shot));
+  g_object_unref (shot);
   
   gdk_window_end_paint (gid->src->window);
   gdk_window_end_paint (gid->src->window);
@@ -2227,7 +2279,7 @@ take_snapshot (GtkWidget *button,
                       target.x, target.y,
                       target.width, target.height);
   
-  g_object_unref (G_OBJECT (gc));
+  g_object_unref (gc);
 }
 
 static gint
@@ -2278,7 +2330,7 @@ image_source_expose (GtkWidget *da,
       ++x;
     }
 
-  g_object_unref (G_OBJECT (gc));
+  g_object_unref (gc);
   
   return TRUE;
 }
@@ -2295,8 +2347,8 @@ create_get_image (GtkWidget *widget)
       GtkWidget *sw;
       GtkWidget *src;
       GtkWidget *snap;
-      GtkWidget *vbox;
       GtkWidget *hbox;
+      GtkWidget *vbox;
       GtkWidget *button;
       struct GetImageData *gid;
 
@@ -2307,19 +2359,19 @@ create_get_image (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window),
-                          "destroy",
-                          GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                          &window);
+      g_signal_connect (window,
+                        "destroy",
+                        G_CALLBACK (gtk_widget_destroyed),
+                        &window);
 
-      gtk_object_set_data_full (GTK_OBJECT (window),
-                                "testgtk-get-image-data",
-                                gid,
-                                g_free);
+      g_object_set_data_full (G_OBJECT (window),
+                              "testgtk-get-image-data",
+                              gid,
+                              g_free);
       
-      vbox = gtk_vbox_new (FALSE, 0);
+      hbox = gtk_hbox_new (FALSE, 0);
       
-      gtk_container_add (GTK_CONTAINER (window), vbox);
+      gtk_container_add (GTK_CONTAINER (window), hbox);
       
       sw = gtk_scrolled_window_new (NULL, NULL);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
@@ -2328,26 +2380,26 @@ create_get_image (GtkWidget *widget)
 
       gid->sw = sw;
 
-      gtk_widget_set_usize (sw, 400, 400);
+      gtk_widget_set_size_request (sw, 400, 400);
       
       src = gtk_drawing_area_new ();
-      gtk_widget_set_usize (src, 10000, 10000);
+      gtk_widget_set_size_request (src, 10000, 10000);
 
-      gtk_signal_connect (GTK_OBJECT (src),
-                          "expose_event",
-                          GTK_SIGNAL_FUNC (image_source_expose),
-                          gid);
+      g_signal_connect (src,
+                        "expose_event",
+                        G_CALLBACK (image_source_expose),
+                        gid);
       
       gid->src = src;
       
       gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw),
                                              src);
       
-      gtk_box_pack_start (GTK_BOX (vbox),
+      gtk_box_pack_start (GTK_BOX (hbox),
                           sw, TRUE, TRUE, 0);                          
 
 
-      hbox = gtk_hbox_new (FALSE, 3);
+      vbox = gtk_vbox_new (FALSE, 3);
 
       snap = gtk_widget_new (GTK_TYPE_IMAGE, NULL);
 
@@ -2357,22 +2409,22 @@ create_get_image (GtkWidget *widget)
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_AUTOMATIC);
-      gtk_widget_set_usize (sw, 300, 300);
+      gtk_widget_set_size_request (sw, 300, 300);
       
       gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), snap);
 
-      gtk_box_pack_end (GTK_BOX (hbox), sw, FALSE, FALSE, 5);
+      gtk_box_pack_end (GTK_BOX (vbox), sw, FALSE, FALSE, 5);
 
       button = gtk_button_new_with_label ("Get image from drawable");
 
-      gtk_signal_connect (GTK_OBJECT (button),
-                          "clicked",
-                          GTK_SIGNAL_FUNC (take_snapshot),
-                          gid);
+      g_signal_connect (button,
+                        "clicked",
+                        G_CALLBACK (take_snapshot),
+                        gid);
       
-      gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+      gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
-      gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+      gtk_box_pack_end (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
       
       gtk_widget_show_all (window);
     }
@@ -2398,10 +2450,10 @@ create_sensitivity_control (GtkWidget *widget)
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
                                 GTK_WIDGET_IS_SENSITIVE (widget));
   
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "toggled",
-                      GTK_SIGNAL_FUNC (sensitivity_toggled),
-                      widget);
+  g_signal_connect (button,
+                    "toggled",
+                    G_CALLBACK (sensitivity_toggled),
+                    widget);
   
   gtk_widget_show_all (button);
 
@@ -2417,7 +2469,7 @@ set_selectable_recursive (GtkWidget *widget,
       GList *children;
       GList *tmp;
       
-      children = gtk_container_children (GTK_CONTAINER (widget));
+      children = gtk_container_get_children (GTK_CONTAINER (widget));
       tmp = children;
       while (tmp)
         {
@@ -2451,10 +2503,10 @@ create_selectable_control (GtkWidget *widget)
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
                                 FALSE);
   
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "toggled",
-                      GTK_SIGNAL_FUNC (selectable_toggled),
-                      widget);
+  g_signal_connect (button,
+                    "toggled",
+                    G_CALLBACK (selectable_toggled),
+                    widget);
   
   gtk_widget_show_all (button);
 
@@ -2477,9 +2529,9 @@ void create_labels (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Label");
 
@@ -2528,21 +2580,19 @@ void create_labels (GtkWidget *widget)
       frame = gtk_frame_new ("Internationalized Label");
       label = gtk_label_new (NULL);
       gtk_label_set_markup (GTK_LABEL (label),
-                           "French (Français) Bonjour, Salut\n"
-                           "Korean (한글)   안녕하세요, 안녕하십니까\n"
-                           "Russian (Русский) Здравствуйте!\n"
-                           "Chinese (Simplified) <span lang=\"zh-cn\">元气   开发</span>\n"
-                           "Chinese (Traditional) <span lang=\"zh-tw\">元氣  開發</span>\n"
-                           "Japanese <span lang=\"ja\">元気  開発</span>");
+                           "French (Fran\303\247ais) Bonjour, Salut\n"
+                           "Korean (\355\225\234\352\270\200)   \354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\225\210\353\205\225\355\225\230\354\213\255\353\213\210\352\271\214\n"
+                           "Russian (\320\240\321\203\321\201\321\201\320\272\320\270\320\271) \320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265!\n"
+                           "Chinese (Simplified) <span lang=\"zh-cn\">\345\205\203\346\260\224 \345\274\200\345\217\221</span>\n"
+                           "Chinese (Traditional) <span lang=\"zh-tw\">\345\205\203\346\260\243        \351\226\213\347\231\274</span>\n"
+                           "Japanese <span lang=\"ja\">\345\205\203\346\260\227        \351\226\213\347\231\272</span>");
       gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
       gtk_container_add (GTK_CONTAINER (frame), label);
       gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
 
       frame = gtk_frame_new ("Bidirection Label");
-      label = gtk_label_new ("Arabic   السلام عليكم\n"
-                            "Hebrew    שלום");
-      gtk_widget_set_direction (label, GTK_TEXT_DIR_RTL);
-      gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_RIGHT);
+      label = gtk_label_new ("\342\200\217Arabic       \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205\n"
+                            "\342\200\217Hebrew        \327\251\327\234\327\225\327\235");
       gtk_container_add (GTK_CONTAINER (frame), label);
       gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
 
@@ -2576,7 +2626,7 @@ void create_labels (GtkWidget *widget)
 
       frame = gtk_frame_new ("Underlined label");
       label = gtk_label_new ("This label is underlined!\n"
-                            "This one is underlined (こんにちは) in quite a funky fashion");
+                            "This one is underlined (\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257) in quite a funky fashion");
       gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
       gtk_label_set_pattern (GTK_LABEL (label), "_________________________ _ _________ _ _____ _ __ __  ___ ____ _____");
       gtk_container_add (GTK_CONTAINER (frame), label);
@@ -2626,7 +2676,7 @@ reparent_label (GtkWidget *widget,
 {
   GtkWidget *label;
 
-  label = gtk_object_get_user_data (GTK_OBJECT (widget));
+  label = g_object_get_data (G_OBJECT (widget), "user_data");
 
   gtk_widget_reparent (label, new_parent);
 }
@@ -2637,9 +2687,9 @@ set_parent_signal (GtkWidget *child,
                   gpointer   func_data)
 {
   g_print ("set_parent for \"%s\": new parent: \"%s\", old parent: \"%s\", data: %d\n",
-          gtk_type_name (GTK_OBJECT_TYPE (child)),
-          child->parent ? gtk_type_name (GTK_OBJECT_TYPE (child->parent)) : "NULL",
-          old_parent ? gtk_type_name (GTK_OBJECT_TYPE (old_parent)) : "NULL",
+          g_type_name (G_OBJECT_TYPE (child)),
+          child->parent ? g_type_name (G_OBJECT_TYPE (child->parent)) : "NULL",
+          old_parent ? g_type_name (G_OBJECT_TYPE (old_parent)) : "NULL",
           GPOINTER_TO_INT (func_data));
 }
 
@@ -2663,9 +2713,9 @@ create_reparent (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "reparent");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -2687,22 +2737,20 @@ create_reparent (GtkWidget *widget)
       gtk_container_add (GTK_CONTAINER (frame), box3);
 
       button = gtk_button_new_with_label ("switch");
-      gtk_object_set_user_data (GTK_OBJECT (button), label);
+      g_object_set_data (G_OBJECT (button), "user_data", label);
       gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
 
       event_box = gtk_event_box_new ();
       gtk_box_pack_start (GTK_BOX (box3), event_box, FALSE, TRUE, 0);
       gtk_container_add (GTK_CONTAINER (event_box), label);
                         
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(reparent_label),
-                         event_box);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (reparent_label),
+                       event_box);
       
-      gtk_signal_connect (GTK_OBJECT (label),
-                         "parent_set",
-                         GTK_SIGNAL_FUNC (set_parent_signal),
-                         GINT_TO_POINTER (42));
-
+      g_signal_connect (label, "parent_set",
+                       G_CALLBACK (set_parent_signal),
+                       GINT_TO_POINTER (42));
 
       frame = gtk_frame_new ("Frame 2");
       gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);
@@ -2712,15 +2760,15 @@ create_reparent (GtkWidget *widget)
       gtk_container_add (GTK_CONTAINER (frame), box3);
 
       button = gtk_button_new_with_label ("switch");
-      gtk_object_set_user_data (GTK_OBJECT (button), label);
+      g_object_set_data (G_OBJECT (button), "user_data", label);
       gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);
       
       event_box = gtk_event_box_new ();
       gtk_box_pack_start (GTK_BOX (box3), event_box, FALSE, TRUE, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(reparent_label),
-                         event_box);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (reparent_label),
+                       event_box);
 
       separator = gtk_hseparator_new ();
       gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
@@ -2730,9 +2778,8 @@ create_reparent (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy), window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -2744,6 +2791,157 @@ create_reparent (GtkWidget *widget)
     gtk_widget_destroy (window);
 }
 
+/*
+ * Resize Grips
+ */
+static gboolean
+grippy_button_press (GtkWidget *area, GdkEventButton *event, GdkWindowEdge edge)
+{
+  if (event->type == GDK_BUTTON_PRESS) 
+    {
+      if (event->button == 1)
+       gtk_window_begin_resize_drag (GTK_WINDOW (gtk_widget_get_toplevel (area)), edge,
+                                     event->button, event->x_root, event->y_root,
+                                     event->time);
+      else if (event->button == 2)
+       gtk_window_begin_move_drag (GTK_WINDOW (gtk_widget_get_toplevel (area)), 
+                                   event->button, event->x_root, event->y_root,
+                                   event->time);
+    }
+  return TRUE;
+}
+
+static gboolean
+grippy_expose (GtkWidget *area, GdkEventExpose *event, GdkWindowEdge edge)
+{
+  gtk_paint_resize_grip (area->style,
+                        area->window,
+                        GTK_WIDGET_STATE (area),
+                        &event->area,
+                        area,
+                        "statusbar",
+                        edge,
+                        0, 0,
+                        area->allocation.width,
+                        area->allocation.height);
+
+  return TRUE;
+}
+
+static void
+create_resize_grips (GtkWidget *widget)
+{
+  static GtkWidget *window = NULL;
+  GtkWidget *area;
+  GtkWidget *hbox, *vbox;
+  if (!window)
+    {
+      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+      gtk_window_set_screen (GTK_WINDOW (window),
+                            gtk_widget_get_screen (widget));
+
+      gtk_window_set_title (GTK_WINDOW (window), "resize grips");
+      
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
+
+      vbox = gtk_vbox_new (FALSE, 0);
+      gtk_container_add (GTK_CONTAINER (window), vbox);
+      
+      hbox = gtk_hbox_new (FALSE, 0);
+      gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+
+      /* North west */
+      area = gtk_drawing_area_new ();
+      gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+      g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH_WEST));
+      g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH_WEST));
+      
+      /* North */
+      area = gtk_drawing_area_new ();
+      gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+      g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH));
+      g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH));
+
+      /* North east */
+      area = gtk_drawing_area_new ();
+      gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+      g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH_EAST));
+      g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH_EAST));
+
+      hbox = gtk_hbox_new (FALSE, 0);
+      gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+
+      /* West */
+      area = gtk_drawing_area_new ();
+      gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+      g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_WEST));
+      g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_WEST));
+
+      /* Middle */
+      area = gtk_drawing_area_new ();
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+
+      /* East */
+      area = gtk_drawing_area_new ();
+      gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+      g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_EAST));
+      g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_EAST));
+
+
+      hbox = gtk_hbox_new (FALSE, 0);
+      gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+
+      /* South west */
+      area = gtk_drawing_area_new ();
+      gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+      g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_SOUTH_WEST));
+      g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_SOUTH_WEST));
+      /* South */
+      area = gtk_drawing_area_new ();
+      gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+      g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_SOUTH));
+      g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_SOUTH));
+      
+      /* South east */
+      area = gtk_drawing_area_new ();
+      gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+      gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+      g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_SOUTH_EAST));
+      g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+                       GINT_TO_POINTER (GDK_WINDOW_EDGE_SOUTH_EAST));
+    }
+
+  if (!GTK_WIDGET_VISIBLE (window))
+    gtk_widget_show_all (window);
+  else
+    gtk_widget_destroy (window);
+}
+
 /*
  * Saved Position
  */
@@ -2757,8 +2955,8 @@ uposition_configure (GtkWidget *window)
   GtkLabel *ly;
   gchar buffer[64];
 
-  lx = gtk_object_get_data (GTK_OBJECT (window), "x");
-  ly = gtk_object_get_data (GTK_OBJECT (window), "y");
+  lx = g_object_get_data (G_OBJECT (window), "x");
+  ly = g_object_get_data (G_OBJECT (window), "y");
 
   gdk_window_get_root_origin (window->window, &upositionx, &upositiony);
   sprintf (buffer, "%d", upositionx);
@@ -2774,9 +2972,9 @@ uposition_stop_configure (GtkToggleButton *toggle,
                          GtkObject       *window)
 {
   if (toggle->active)
-    gtk_signal_handler_block_by_func (window, GTK_SIGNAL_FUNC (uposition_configure), NULL);
+    g_signal_handlers_block_by_func (window, G_CALLBACK (uposition_configure), NULL);
   else
-    gtk_signal_handler_unblock_by_func (window, GTK_SIGNAL_FUNC (uposition_configure), NULL);
+    g_signal_handlers_unblock_by_func (window, G_CALLBACK (uposition_configure), NULL);
 }
 
 static void
@@ -2797,20 +2995,20 @@ create_saved_position (GtkWidget *widget)
 
       window = g_object_connect (gtk_widget_new (GTK_TYPE_WINDOW,
                                                 "type", GTK_WINDOW_TOPLEVEL,
-                                                "x", upositionx,
-                                                "y", upositiony,
                                                 "title", "Saved Position",
                                                 NULL),
                                 "signal::configure_event", uposition_configure, NULL,
                                 NULL);
 
+      gtk_window_move (GTK_WINDOW (window), upositionx, upositiony);
+
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
       
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       main_vbox = gtk_vbox_new (FALSE, 5);
       gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 0);
@@ -2842,7 +3040,7 @@ create_saved_position (GtkWidget *widget)
 
       x_label = gtk_label_new ("");
       gtk_box_pack_start (GTK_BOX (hbox), x_label, TRUE, TRUE, 0);
-      gtk_object_set_data (GTK_OBJECT (window), "x", x_label);
+      g_object_set_data (G_OBJECT (window), "x", x_label);
 
       hbox = gtk_hbox_new (FALSE, 0);
       gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
@@ -2854,7 +3052,7 @@ create_saved_position (GtkWidget *widget)
 
       y_label = gtk_label_new ("");
       gtk_box_pack_start (GTK_BOX (hbox), y_label, TRUE, TRUE, 0);
-      gtk_object_set_data (GTK_OBJECT (window), "y", y_label);
+      g_object_set_data (G_OBJECT (window), "y", y_label);
 
       any =
        gtk_widget_new (gtk_hseparator_get_type (),
@@ -2867,9 +3065,9 @@ create_saved_position (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("Close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 5);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -2903,9 +3101,9 @@ create_pixmap (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                          GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                          &window);
+      g_signal_connect (window, "destroy",
+                        G_CALLBACK (gtk_widget_destroyed),
+                        &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkPixmap");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -2952,9 +3150,9 @@ create_pixmap (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                 GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                 GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -2977,7 +3175,7 @@ tips_query_widget_entered (GtkTipsQuery   *tips_query,
     {
       gtk_label_set_text (GTK_LABEL (tips_query), tip_text ? "There is a Tip!" : "There is no Tip!");
       /* don't let GtkTipsQuery reset its label */
-      gtk_signal_emit_stop_by_name (GTK_OBJECT (tips_query), "widget_entered");
+      g_signal_stop_emission_by_name (tips_query, "widget_entered");
     }
 }
 
@@ -2992,7 +3190,7 @@ tips_query_widget_selected (GtkWidget      *tips_query,
   if (widget)
     g_print ("Help \"%s\" requested for <%s>\n",
             tip_private ? tip_private : "None",
-            gtk_type_name (GTK_OBJECT_TYPE (widget)));
+            g_type_name (G_OBJECT_TYPE (widget)));
   return TRUE;
 }
 
@@ -3019,21 +3217,19 @@ create_tooltips (GtkWidget *widget)
                        "GtkWindow::title", "Tooltips",
                        "GtkWindow::allow_shrink", TRUE,
                        "GtkWindow::allow_grow", FALSE,
-                       "GtkWindow::auto_shrink", TRUE,
-                       "GtkWidget::width", 200,
                        NULL);
 
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                          GTK_SIGNAL_FUNC (destroy_tooltips),
-                          &window);
+      g_signal_connect (window, "destroy",
+                        G_CALLBACK (destroy_tooltips),
+                        &window);
 
       tooltips=gtk_tooltips_new();
       g_object_ref (tooltips);
       gtk_object_sink (GTK_OBJECT (tooltips));
-      gtk_object_set_data (GTK_OBJECT (window), "tooltips", tooltips);
+      g_object_set_data (G_OBJECT (window), "tooltips", tooltips);
       
       box1 = gtk_vbox_new (FALSE, 0);
       gtk_container_add (GTK_CONTAINER (window), box1);
@@ -3045,7 +3241,10 @@ create_tooltips (GtkWidget *widget)
       button = gtk_toggle_button_new_with_label ("button1");
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
 
-      gtk_tooltips_set_tip (tooltips,button,"This is button 1", "ContextHelp/buttons/1");
+      gtk_tooltips_set_tip (tooltips,
+                           button,
+                           "This is button 1",
+                           "ContextHelp/buttons/1");
 
       button = gtk_toggle_button_new_with_label ("button2");
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
@@ -3058,7 +3257,10 @@ create_tooltips (GtkWidget *widget)
       toggle = gtk_toggle_button_new_with_label ("Override TipsQuery Label");
       gtk_box_pack_start (GTK_BOX (box2), toggle, TRUE, TRUE, 0);
 
-      gtk_tooltips_set_tip (tooltips, toggle, "Toggle TipsQuery view.", "Hi msw! ;)");
+      gtk_tooltips_set_tip (tooltips,
+                           toggle,
+                           "Toggle TipsQuery view.",
+                           "Hi msw! ;)");
 
       box3 =
        gtk_widget_new (gtk_vbox_get_type (),
@@ -3076,7 +3278,7 @@ create_tooltips (GtkWidget *widget)
                        "visible", TRUE,
                        "parent", box3,
                        NULL);
-      g_object_connect (G_OBJECT (button),
+      g_object_connect (button,
                        "swapped_signal::clicked", gtk_tips_query_start_query, tips_query,
                        NULL);
       gtk_box_set_child_packing (GTK_BOX (box3), button, FALSE, FALSE, 0, GTK_PACK_START);
@@ -3113,9 +3315,9 @@ create_tooltips (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                 GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                 GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -3166,11 +3368,11 @@ create_image (GtkWidget *widget)
       /* this is bogus for testing drawing when allocation < request,
        * don't copy into real code
        */
-      gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE);
+      g_object_set (window, "allow_shrink", TRUE, "allow_grow", TRUE, NULL);
       
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       vbox = gtk_vbox_new (FALSE, 5);
 
@@ -3238,10 +3440,12 @@ create_menu (GdkScreen *screen, gint depth, gint length, gboolean tearoff)
       sprintf (buf, "item %2d - %d", depth, j);
 
       menuitem = gtk_radio_menu_item_new_with_label (group, buf);
-      group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menuitem));
+      group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem));
 
+#if 0
       if (depth % 2)
        gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (menuitem), TRUE);
+#endif
 
       gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
       gtk_widget_show (menuitem);
@@ -3260,6 +3464,195 @@ create_menu (GdkScreen *screen, gint depth, gint length, gboolean tearoff)
   return menu;
 }
 
+static GtkWidget*
+create_table_menu (GdkScreen *screen, gint cols, gint rows, gboolean tearoff)
+{
+  GtkWidget *menu;
+  GtkWidget *menuitem;
+  GtkWidget *submenu;
+  GtkWidget *image;
+  char buf[32];
+  int i, j;
+
+  menu = gtk_menu_new ();
+  gtk_menu_set_screen (GTK_MENU (menu), screen);
+
+  j = 0;
+  if (tearoff)
+    {
+      menuitem = gtk_tearoff_menu_item_new ();
+      gtk_menu_attach (GTK_MENU (menu), menuitem, 0, cols, j, j + 1);
+      gtk_widget_show (menuitem);
+      j++;
+    }
+  
+  menuitem = gtk_menu_item_new_with_label ("items");
+  gtk_menu_attach (GTK_MENU (menu), menuitem, 0, cols, j, j + 1);
+
+  submenu = gtk_menu_new ();
+  gtk_menu_set_screen (GTK_MENU (submenu), screen);
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
+  gtk_widget_show (menuitem);
+  j++;
+
+  /* now fill the items submenu */
+  image = gtk_image_new_from_stock (GTK_STOCK_HELP,
+                                   GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image);
+  menuitem = gtk_image_menu_item_new_with_label ("Image");
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image);
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 0, 1);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("x");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 1, 2, 0, 1);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("x");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 1, 2);
+  gtk_widget_show (menuitem);
+  
+  image = gtk_image_new_from_stock (GTK_STOCK_HELP,
+                                   GTK_ICON_SIZE_MENU);
+  gtk_widget_show (image);
+  menuitem = gtk_image_menu_item_new_with_label ("Image");
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image);
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 1, 2, 1, 2);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_radio_menu_item_new_with_label (NULL, "Radio");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 2, 3);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("x");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 1, 2, 2, 3);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("x");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 3, 4);
+  gtk_widget_show (menuitem);
+  
+  menuitem = gtk_radio_menu_item_new_with_label (NULL, "Radio");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 1, 2, 3, 4);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_check_menu_item_new_with_label ("Check");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 4, 5);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("x");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 1, 2, 4, 5);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("x");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 5, 6);
+  gtk_widget_show (menuitem);
+  
+  menuitem = gtk_check_menu_item_new_with_label ("Check");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 1, 2, 5, 6);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("1. Inserted normally (8)");
+  gtk_widget_show (menuitem);
+  gtk_menu_shell_insert (GTK_MENU_SHELL (submenu), menuitem, 8);
+
+  menuitem = gtk_menu_item_new_with_label ("2. Inserted normally (2)");
+  gtk_widget_show (menuitem);
+  gtk_menu_shell_insert (GTK_MENU_SHELL (submenu), menuitem, 2);
+
+  menuitem = gtk_menu_item_new_with_label ("3. Inserted normally (0)");
+  gtk_widget_show (menuitem);
+  gtk_menu_shell_insert (GTK_MENU_SHELL (submenu), menuitem, 0);
+
+  menuitem = gtk_menu_item_new_with_label ("4. Inserted normally (-1)");
+  gtk_widget_show (menuitem);
+  gtk_menu_shell_insert (GTK_MENU_SHELL (submenu), menuitem, -1);
+  
+  /* end of items submenu */
+
+  menuitem = gtk_menu_item_new_with_label ("spanning");
+  gtk_menu_attach (GTK_MENU (menu), menuitem, 0, cols, j, j + 1);
+
+  submenu = gtk_menu_new ();
+  gtk_menu_set_screen (GTK_MENU (submenu), screen);
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
+  gtk_widget_show (menuitem);
+  j++;
+
+  /* now fill the spanning submenu */
+  menuitem = gtk_menu_item_new_with_label ("a");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 2, 0, 1);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("b");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 2, 3, 0, 2);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("c");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 1, 3);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("d");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 1, 2, 1, 2);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("e");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 1, 3, 2, 3);
+  gtk_widget_show (menuitem);
+  /* end of spanning submenu */
+  
+  menuitem = gtk_menu_item_new_with_label ("left");
+  gtk_menu_attach (GTK_MENU (menu), menuitem, 0, 1, j, j + 1);
+  submenu = gtk_menu_new ();
+  gtk_menu_set_screen (GTK_MENU (submenu), screen);
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("Empty");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 0, 1);
+  submenu = gtk_menu_new ();
+  gtk_menu_set_screen (GTK_MENU (submenu), screen);
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("right");
+  gtk_menu_attach (GTK_MENU (menu), menuitem, 1, 2, j, j + 1);
+  submenu = gtk_menu_new ();
+  gtk_menu_set_screen (GTK_MENU (submenu), screen);
+  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
+  gtk_widget_show (menuitem);
+
+  menuitem = gtk_menu_item_new_with_label ("Empty");
+  gtk_menu_attach (GTK_MENU (submenu), menuitem, 0, 1, 0, 1);
+  gtk_widget_show (menuitem);
+
+  j++;
+
+  for (; j < rows; j++)
+      for (i = 0; i < cols; i++)
+      {
+       sprintf (buf, "(%d %d)", i, j);
+       menuitem = gtk_menu_item_new_with_label (buf);
+       gtk_menu_attach (GTK_MENU (menu), menuitem, i, i + 1, j, j + 1);
+       gtk_widget_show (menuitem);
+      }
+  
+  menuitem = gtk_menu_item_new_with_label ("1. Inserted normally (8)");
+  gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 8);
+  gtk_widget_show (menuitem);
+  menuitem = gtk_menu_item_new_with_label ("2. Inserted normally (2)");
+  gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 2);
+  gtk_widget_show (menuitem);
+  menuitem = gtk_menu_item_new_with_label ("3. Inserted normally (0)");
+  gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 0);
+  gtk_widget_show (menuitem);
+  menuitem = gtk_menu_item_new_with_label ("4. Inserted normally (-1)");
+  gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, -1);
+  gtk_widget_show (menuitem);
+  
+  return menu;
+}
+
 static void
 create_menus (GtkWidget *widget)
 {
@@ -3283,12 +3676,12 @@ create_menus (GtkWidget *widget)
 
       gtk_window_set_screen (GTK_WINDOW (window), screen);
       
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
-      gtk_signal_connect (GTK_OBJECT (window), "delete-event",
-                         GTK_SIGNAL_FUNC (gtk_true),
-                         NULL);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
+      g_signal_connect (window, "delete-event",
+                       G_CALLBACK (gtk_true),
+                       NULL);
       
       accel_group = gtk_accel_group_new ();
       gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
@@ -3309,12 +3702,19 @@ create_menus (GtkWidget *widget)
       
       menuitem = gtk_menu_item_new_with_label ("test\nline2");
       gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
-      gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
+      gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
+      gtk_widget_show (menuitem);
+
+      menu = create_table_menu (screen, 2, 50, TRUE);
+      
+      menuitem = gtk_menu_item_new_with_label ("table");
+      gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
+      gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
       gtk_widget_show (menuitem);
       
       menuitem = gtk_menu_item_new_with_label ("foo");
       gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (screen, 3, 5, TRUE));
-      gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
+      gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
       gtk_widget_show (menuitem);
 
       image = gtk_image_new_from_stock (GTK_STOCK_HELP,
@@ -3324,7 +3724,7 @@ create_menus (GtkWidget *widget)
       gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image);
       gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (screen, 4, 5, TRUE));
       gtk_menu_item_set_right_justified (GTK_MENU_ITEM (menuitem), TRUE);
-      gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
+      gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
       gtk_widget_show (menuitem);
       
       menubar = gtk_menu_bar_new ();
@@ -3335,7 +3735,7 @@ create_menus (GtkWidget *widget)
       
       menuitem = gtk_menu_item_new_with_label ("Second menu bar");
       gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
-      gtk_menu_bar_append (GTK_MENU_BAR (menubar), menuitem);
+      gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
       gtk_widget_show (menuitem);
       
       box2 = gtk_vbox_new (FALSE, 10);
@@ -3400,9 +3800,9 @@ create_menus (GtkWidget *widget)
       gtk_widget_show (box2);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -3423,117 +3823,102 @@ gtk_ifactory_cb (gpointer             callback_data,
   g_message ("ItemFactory: activated \"%s\"", gtk_item_factory_path_from_widget (widget));
 }
 
-/* This file was automatically generated by the make-inline-pixbuf program.
- * It contains inline RGB image data.
- */
-static const guchar apple[] =
-{
-  /* File magic (1197763408) */
-  0x47, 0x64, 0x6b, 0x50,
-  /* Format of following stuff (0) */
-  0x00, 0x00, 0x00, 0x00,
-  /* Rowstride (64) */
-  0x00, 0x00, 0x00, 0x40,
-  /* Width (16) */
-  0x00, 0x00, 0x00, 0x10,
-  /* Height (16) */
-  0x00, 0x00, 0x00, 0x10,
-  /* Has an alpha channel (TRUE) */
-  0x01,
-  /* Colorspace (0 == RGB, no other options implemented) (0) */
-  0x00, 0x00, 0x00, 0x00,
-  /* Number of channels (4) */
-  0x00, 0x00, 0x00, 0x04,
-  /* Bits per sample (8) */
-  0x00, 0x00, 0x00, 0x08,
-  /* Image data */
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x16, 0x14, 0x0f, 0x04,
-  0x00, 0x00, 0x00, 0x01,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x61, 0x6d, 0x5b, 0x2b,  0x6e, 0x7c, 0x61, 0xd9,
-  0x71, 0x80, 0x63, 0xd7,  0x5f, 0x6b, 0x5b, 0x35,  0x00, 0x00, 0x00, 0x00,
-  0x3a, 0x35, 0x28, 0x8f,  0x00, 0x00, 0x00, 0x32,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x60, 0x6c, 0x5c, 0x07,  0x6d, 0x7b, 0x61, 0xd8,
-  0x75, 0x84, 0x65, 0xf6,  0x76, 0x86, 0x66, 0xf7,  0x6a, 0x77, 0x60, 0xec,
-  0x5e, 0x6a, 0x58, 0x47,  0x1c, 0x1a, 0x13, 0xa2,  0x4b, 0x47, 0x30, 0x07,
-  0x55, 0x4e, 0x33, 0x21,  0x48, 0x3e, 0x2a, 0x08,  0xd0, 0xb8, 0x84, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x69, 0x76, 0x5f, 0x74,
-  0x75, 0x84, 0x65, 0xf3,  0x67, 0x75, 0x5e, 0xc4,  0x69, 0x62, 0x55, 0x75,
-  0x94, 0x50, 0x50, 0x69,  0x75, 0x5c, 0x52, 0xb2,  0x69, 0x38, 0x34, 0xa2,
-  0xa7, 0x5b, 0x53, 0xea,  0xa3, 0x52, 0x4f, 0xff,  0x90, 0x47, 0x42, 0xfa,
-  0x76, 0x44, 0x36, 0xb9,  0x59, 0x38, 0x29, 0x3c,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x5f, 0x6b, 0x5a, 0x09,
-  0x69, 0x76, 0x5e, 0xb0,  0x5f, 0x6b, 0x59, 0x57,  0x9a, 0x4b, 0x4d, 0x5b,
-  0xb8, 0x5f, 0x63, 0xfa,  0xcc, 0x7d, 0x7e, 0xff,  0xc5, 0x69, 0x68, 0xff,
-  0xc7, 0x6b, 0x67, 0xff,  0xc5, 0x6f, 0x67, 0xff,  0xba, 0x5e, 0x5a, 0xff,
-  0xb1, 0x4d, 0x4d, 0xff,  0x92, 0x4b, 0x42, 0xff,  0x6a, 0x3e, 0x30, 0xfc,
-  0x5c, 0x3b, 0x27, 0x6d,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x5d, 0x69, 0x57, 0x09,  0x5d, 0x69, 0x57, 0x09,  0x92, 0x47, 0x46, 0x1e,
-  0xba, 0x65, 0x64, 0xf4,  0xe7, 0xbf, 0xc0, 0xff,  0xdf, 0xa5, 0xa3, 0xff,
-  0xd4, 0x84, 0x81, 0xff,  0xd1, 0x7c, 0x76, 0xff,  0xc9, 0x78, 0x6d, 0xff,
-  0xbb, 0x6a, 0x5d, 0xff,  0xb3, 0x5a, 0x52, 0xff,  0x9f, 0x4b, 0x47, 0xff,
-  0x78, 0x45, 0x35, 0xff,  0x5f, 0x3c, 0x28, 0xfa,  0x53, 0x5a, 0x38, 0x24,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0xa1, 0x54, 0x4d, 0x8c,  0xcf, 0x8e, 0x89, 0xff,  0xe3, 0xb1, 0xae, 0xff,
-  0xd8, 0x94, 0x8e, 0xff,  0xd3, 0x8a, 0x82, 0xff,  0xcf, 0x80, 0x76, 0xff,
-  0xc4, 0x75, 0x67, 0xff,  0xb7, 0x6c, 0x5c, 0xff,  0xab, 0x5e, 0x51, 0xff,
-  0x9c, 0x4c, 0x46, 0xff,  0x7e, 0x4a, 0x3a, 0xff,  0x5c, 0x3c, 0x26, 0xff,
-  0x58, 0x3d, 0x28, 0x55,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0xa2, 0x59, 0x4f, 0xc3,  0xcd, 0x8e, 0x88, 0xff,
-  0xd3, 0x93, 0x8c, 0xff,  0xd0, 0x8c, 0x83, 0xff,  0xcc, 0x84, 0x79, 0xff,
-  0xc7, 0x7c, 0x6e, 0xff,  0xbc, 0x73, 0x61, 0xff,  0xb1, 0x6b, 0x59, 0xff,
-  0xa3, 0x5f, 0x4f, 0xff,  0x93, 0x50, 0x44, 0xff,  0x78, 0x48, 0x35, 0xff,
-  0x59, 0x3b, 0x25, 0xff,  0x4f, 0x3d, 0x28, 0x4f,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x9b, 0x5b, 0x4d, 0xbc,
-  0xbd, 0x7e, 0x72, 0xff,  0xc6, 0x86, 0x7a, 0xff,  0xc5, 0x7f, 0x72, 0xff,
-  0xc2, 0x7b, 0x6c, 0xff,  0xbf, 0x77, 0x63, 0xff,  0xb7, 0x72, 0x5b, 0xff,
-  0xa9, 0x6b, 0x53, 0xff,  0x9a, 0x60, 0x4b, 0xff,  0x8b, 0x56, 0x41, 0xff,
-  0x6a, 0x44, 0x2e, 0xff,  0x53, 0x38, 0x21, 0xfd,  0x42, 0x4b, 0x2e, 0x1a,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x8e, 0x57, 0x48, 0x6e,  0xa6, 0x6b, 0x5a, 0xff,  0xb3, 0x74, 0x62, 0xff,
-  0xb8, 0x75, 0x61, 0xff,  0xba, 0x76, 0x61, 0xff,  0xb7, 0x74, 0x5c, 0xff,
-  0xae, 0x6e, 0x54, 0xff,  0x9f, 0x67, 0x4c, 0xff,  0x90, 0x5d, 0x43, 0xff,
-  0x79, 0x4d, 0x38, 0xff,  0x5c, 0x3d, 0x25, 0xff,  0x50, 0x39, 0x23, 0xb8,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x78, 0x52, 0x43, 0x07,  0x92, 0x5c, 0x47, 0xdc,
-  0x9e, 0x64, 0x4e, 0xff,  0xa8, 0x6b, 0x52, 0xff,  0xaa, 0x6d, 0x53, 0xff,
-  0xa7, 0x6d, 0x50, 0xff,  0x9c, 0x67, 0x4a, 0xff,  0x8e, 0x5d, 0x41, 0xff,
-  0x7d, 0x54, 0x3a, 0xff,  0x6a, 0x4b, 0x32, 0xff,  0x51, 0x39, 0x23, 0xff,
-  0x28, 0x20, 0x12, 0x77,  0x00, 0x00, 0x00, 0x12,  0x00, 0x00, 0x00, 0x01,
-  0x00, 0x00, 0x00, 0x03,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x6f, 0x4a, 0x37, 0x2a,  0x81, 0x54, 0x3d, 0xec,  0x8b, 0x5a, 0x41, 0xff,
-  0x8b, 0x5a, 0x3f, 0xff,  0x85, 0x56, 0x3c, 0xff,  0x7d, 0x52, 0x38, 0xff,
-  0x77, 0x51, 0x33, 0xff,  0x6f, 0x4e, 0x34, 0xff,  0x5f, 0x45, 0x2c, 0xff,
-  0x2e, 0x21, 0x14, 0xff,  0x00, 0x00, 0x00, 0xf8,  0x00, 0x00, 0x00, 0x92,
-  0x00, 0x00, 0x00, 0x0e,  0x00, 0x00, 0x00, 0x04,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x14,  0x11, 0x0b, 0x08, 0xb4,
-  0x50, 0x37, 0x25, 0xfe,  0x6d, 0x49, 0x2f, 0xff,  0x52, 0x37, 0x22, 0xff,
-  0x50, 0x37, 0x21, 0xff,  0x66, 0x45, 0x2b, 0xff,  0x60, 0x46, 0x2c, 0xff,
-  0x2d, 0x22, 0x16, 0xff,  0x00, 0x00, 0x00, 0xfe,  0x00, 0x00, 0x00, 0xd2,
-  0x00, 0x00, 0x00, 0x63,  0x00, 0x00, 0x00, 0x07,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x02,
-  0x00, 0x00, 0x00, 0x22,  0x00, 0x00, 0x00, 0x64,  0x09, 0x0a, 0x07, 0xa4,
-  0x00, 0x00, 0x00, 0xbd,  0x00, 0x00, 0x00, 0xbe,  0x00, 0x00, 0x00, 0xc4,
-  0x00, 0x00, 0x00, 0xb8,  0x00, 0x00, 0x00, 0x9d,  0x00, 0x00, 0x00, 0x6c,
-  0x00, 0x00, 0x00, 0x2c,  0x00, 0x00, 0x00, 0x07,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x01,
-  0x00, 0x00, 0x00, 0x05,  0x00, 0x00, 0x00, 0x0b,  0x00, 0x00, 0x00, 0x0d,
-  0x00, 0x00, 0x00, 0x0b,  0x00, 0x00, 0x00, 0x08,  0x00, 0x00, 0x00, 0x06,
-  0x00, 0x00, 0x00, 0x02,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00
-};
+/* GdkPixbuf RGBA C-Source image dump */
+
+static const guint8 apple[] = 
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (2304) */
+  "\0\0\11\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (96) */
+  "\0\0\0`"
+  /* width (24) */
+  "\0\0\0\30"
+  /* height (24) */
+  "\0\0\0\30"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\26\24"
+  "\17\11\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`m"
+  "[pn{a\344hv_\345_k[`\0\0\0\0\0\0\0\0\0\0\0\0D>/\305\0\0\0_\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`l[Blza\373s\202d\354w\206g\372p~c"
+  "\374`l[y\0\0\0\0[S\77/\27\25\17\335\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0`l\\\20iw_\356y\211h\373x\207g\364~\216i\364u\204e\366gt"
+  "_\374^jX\241A;-_\0\0\0~\0\0\0\0SM4)SM21B9&\22\320\270\204\1\320\270\204"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0eq"
+  "]\212r\200c\366v\205f\371jx_\323_kY\232_kZH^jY\26]iW\211@G9\272:6%j\220"
+  "\211]\320\221\211`\377\212\203Z\377~xP\377mkE\331]^;|/0\37\21\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ly`\40p~b\360lz`\353^kY\246["
+  "eT<\216\200Z\203\227\211_\354\234\217c\377\232\217b\362\232\220c\337"
+  "\243\233k\377\252\241p\377\250\236p\377\241\225h\377\231\214_\377\210"
+  "\202U\377srI\377[]:\355KO0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i"
+  "v^\200`lY\211^jY\"\0\0\0\0\221\204\\\273\250\233r\377\302\267\224\377"
+  "\311\300\237\377\272\256\204\377\271\256\177\377\271\257\200\377\267"
+  "\260\177\377\260\251x\377\250\236l\377\242\225e\377\226\213]\377~zP\377"
+  "ff@\377QT5\377LR2d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]iW(\0\0\0\0\0\0\0"
+  "\0\213\203[v\253\240t\377\334\326\301\377\344\340\317\377\321\312\253"
+  "\377\303\271\217\377\300\270\213\377\277\267\210\377\272\264\203\377"
+  "\261\255z\377\250\242n\377\243\232h\377\232\220`\377\210\202V\377nnE"
+  "\377SW6\377RX6\364Za<\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b]@\20"
+  "\234\222e\362\304\274\232\377\337\333\306\377\332\325\273\377\311\302"
+  "\232\377\312\303\236\377\301\273\216\377\300\271\212\377\270\264\200"
+  "\377\256\253v\377\246\243n\377\236\232h\377\230\220`\377\213\203V\377"
+  "wvL\377X]:\377KR0\377NU5v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\212"
+  "\203Zl\242\234l\377\321\315\260\377\331\324\271\377\320\313\251\377\307"
+  "\301\232\377\303\276\224\377\300\272\214\377\274\267\206\377\264\260"
+  "|\377\253\251s\377\244\243n\377\232\230e\377\223\216^\377\207\200U\377"
+  "ttJ\377[_<\377HO/\377GN0\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\210\204Y\240\245\237o\377\316\310\253\377\310\303\237\377\304\300\230"
+  "\377\303\277\225\377\277\272\216\377\274\270\210\377\266\263\200\377"
+  "\256\254v\377\247\246p\377\237\236j\377\227\226d\377\215\212[\377\203"
+  "\177T\377qsH\377X]8\377FN.\377DK-\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\207\204X\257\244\240o\377\300\275\231\377\301\275\226\377\274"
+  "\270\213\377\274\270\214\377\267\264\205\377\264\262\200\377\260\256"
+  "z\377\251\251s\377\243\244n\377\231\232g\377\220\222`\377\210\211Y\377"
+  "|}Q\377hlC\377PU3\377CK,\377DL/Y\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\205\204X\220\232\230h\377\261\260\204\377\266\264\212\377\261\260"
+  "\201\377\263\260\200\377\260\257}\377\256\256x\377\253\254t\377\244\246"
+  "o\377\233\236i\377\221\224b\377\211\214\\\377\202\204V\377txM\377]b>"
+  "\377HP0\377@H+\373CJ-\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xxO>"
+  "\215\215_\377\237\237r\377\247\247x\377\247\247t\377\252\252w\377\252"
+  "\252u\377\252\253t\377\243\246o\377\235\240j\377\223\230c\377\213\217"
+  "]\377\201\206V\377x}P\377gkD\377RY5\377BI,\377AI,\262\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\202\205W\312\216\220`\377\230"
+  "\232g\377\234\236i\377\236\241l\377\241\244n\377\240\244m\377\232\237"
+  "i\377\223\230c\377\212\221]\377\200\210W\377v|P\377jnG\377Za>\377HP2"
+  "\377=D)\377HQ1:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0wzQ6\177\201U\371\206\211Z\377\216\222`\377\220\225a\377\220\225b\377"
+  "\220\226a\377\213\221_\377\204\213Z\377{\203R\377ryN\377iqH\377^fA\377"
+  "R[;\377BJ-\3778@'\317\0\0\0>\0\0\0\36\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0ptJTw|Q\371z\177R\377}\202T\377|\203T\377z\200"
+  "R\377v|O\377pwL\377jpF\377dlB\377`hB\377Yb@\377LT6\377<C*\377\11\12\6"
+  "\376\0\0\0\347\0\0\0\262\0\0\0Y\0\0\0\32\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\\`=UgnE\370hnG\377gmE\377djB\377]d>\377[c<\377Y"
+  "b<\377Zc>\377V_>\377OW8\377BK/\377\16\20\12\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\374\0\0\0\320\0\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\1\0\0\0\40\22\24\15\260@D+\377W`;\377OV5\377.3\36\377.3\37\377IP0"
+  "\377RZ7\377PZ8\3776=&\377\14\15\10\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\347\0\0\0\217\0\0\0""4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\20\0\0\0P\0\0\0\252\7\10\5\346\7\7\5\375\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\374\0"
+  "\0\0\336\0\0\0\254\0\0\0i\0\0\0""2\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11\0\0\0\40\0\0\0D\0\0\0m\0\0\0"
+  "\226\0\0\0\234\0\0\0\234\0\0\0\244\0\0\0\246\0\0\0\232\0\0\0\202\0\0"
+  "\0i\0\0\0T\0\0\0,\0\0\0\15\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\6\0\0\0"
+  "\16\0\0\0\22\0\0\0\24\0\0\0\23\0\0\0\17\0\0\0\14\0\0\0\13\0\0\0\10\0"
+  "\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
 
 
 static void
@@ -3570,6 +3955,9 @@ static GtkItemFactoryEntry menu_items[] =
   { "/_Preferences/Shape/_Rectangle",   NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Square" },
   { "/_Preferences/Shape/_Oval",        NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Rectangle" },
   { "/_Preferences/Shape/_Image",       NULL, gtk_ifactory_cb, 0, "<ImageItem>", apple },
+  { "/_Preferences/Coffee",                  NULL, gtk_ifactory_cb, 0, "<CheckItem>" },
+  { "/_Preferences/Toast",                   NULL, gtk_ifactory_cb, 0, "<CheckItem>" },
+  { "/_Preferences/Marshmallow Froot Loops", NULL, gtk_ifactory_cb, 0, "<CheckItem>" },
 
   /* For testing deletion of menus */
   { "/_Preferences/Should_NotAppear",          NULL, 0,               0, "<Branch>" },
@@ -3605,19 +3993,19 @@ create_item_factory (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
       
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
-      gtk_signal_connect (GTK_OBJECT (window), "delete-event",
-                         GTK_SIGNAL_FUNC (gtk_true),
-                         NULL);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK(gtk_widget_destroyed),
+                       &window);
+      g_signal_connect (window, "delete-event",
+                       G_CALLBACK (gtk_true),
+                       NULL);
       
       accel_group = gtk_accel_group_new ();
       item_factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "<main>", accel_group);
-      gtk_object_set_data_full (GTK_OBJECT (window),
-                               "<main>",
-                               item_factory,
-                               (GtkDestroyNotify) gtk_object_unref);
+      g_object_set_data_full (G_OBJECT (window),
+                             "<main>",
+                             item_factory,
+                             g_object_unref);
       gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
       gtk_window_set_title (GTK_WINDOW (window), "Item Factory");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -3629,6 +4017,21 @@ create_item_factory (GtkWidget *widget)
                                                                                      "/Preferences/Shape/Oval")),
                                      TRUE);
 
+      /* preselect /Preferences/Coffee
+       */
+      gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_item_factory_get_item (item_factory,
+                                                                                     "/Preferences/Coffee")),
+                                     TRUE);
+
+      /* preselect /Preferences/Marshmallow Froot Loops and set it insensitive
+       */
+      gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_item_factory_get_item (item_factory,
+                                                                                     "/Preferences/Marshmallow Froot Loops")),
+                                     TRUE);
+      gtk_widget_set_sensitive (GTK_WIDGET (gtk_item_factory_get_item (item_factory,
+                                                                      "/Preferences/Marshmallow Froot Loops")),
+                               FALSE);
+       
       /* Test how tooltips (ugh) work on menu items
        */
       tooltips = gtk_tooltips_new ();
@@ -3643,8 +4046,8 @@ create_item_factory (GtkWidget *widget)
                            "Open a file", NULL);
       gtk_tooltips_set_tip (tooltips, gtk_item_factory_get_item (item_factory, "/File/Save"),
                            "Safe file", NULL);
-      gtk_tooltips_set_tip (tooltips, gtk_item_factory_get_item (item_factory, "/File/Save As..."),
-                           "Save under a new name", NULL);
+      gtk_tooltips_set_tip (tooltips, gtk_item_factory_get_item (item_factory, "/Preferences/Color"),
+                           "Modify color", NULL);
 
       box1 = gtk_vbox_new (FALSE, 0);
       gtk_container_add (GTK_CONTAINER (window), box1);
@@ -3654,7 +4057,7 @@ create_item_factory (GtkWidget *widget)
                          FALSE, FALSE, 0);
 
       label = gtk_label_new ("Type\n<alt>\nto start");
-      gtk_widget_set_usize (label, 200, 200);
+      gtk_widget_set_size_request (label, 200, 200);
       gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5);
       gtk_box_pack_start (GTK_BOX (box1), label, TRUE, TRUE, 0);
 
@@ -3668,9 +4071,9 @@ create_item_factory (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -3736,9 +4139,9 @@ create_key_lookup (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
       button = gtk_button_new_with_mnemonic ("Button 2 (_A)");
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
-      button = gtk_button_new_with_mnemonic ("Button 3 (_ф)");
+      button = gtk_button_new_with_mnemonic ("Button 3 (_\321\204)");
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
-      button = gtk_button_new_with_mnemonic ("Button 4 (_Ф)");
+      button = gtk_button_new_with_mnemonic ("Button 4 (_\320\244)");
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
       button = gtk_button_new_with_mnemonic ("Button 6 (_b)");
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
@@ -3781,7 +4184,7 @@ cmw_color (GtkWidget *widget, GtkWidget *parent)
 {
     GtkWidget *csd;
 
-    csd=gtk_color_selection_dialog_new ("This is a modal color selection dialog");
+    csd = gtk_color_selection_dialog_new ("This is a modal color selection dialog");
 
     gtk_window_set_screen (GTK_WINDOW (csd), gtk_widget_get_screen (parent));
 
@@ -3794,15 +4197,13 @@ cmw_color (GtkWidget *widget, GtkWidget *parent)
     /* And mark it as a transient dialog */
     gtk_window_set_transient_for (GTK_WINDOW (csd), GTK_WINDOW (parent));
     
-    gtk_signal_connect (GTK_OBJECT(csd), "destroy",
-                       GTK_SIGNAL_FUNC(cmw_destroy_cb),NULL);
-
-    gtk_signal_connect_object (GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(csd)->ok_button),
-                               "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                               GTK_OBJECT (csd));
-    gtk_signal_connect_object (GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(csd)->cancel_button),
-                               "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                               GTK_OBJECT (csd));
+    g_signal_connect (csd, "destroy",
+                     G_CALLBACK (cmw_destroy_cb), NULL);
+
+    g_signal_connect_swapped (GTK_COLOR_SELECTION_DIALOG (csd)->ok_button,
+                            "clicked", G_CALLBACK (gtk_widget_destroy), csd);
+    g_signal_connect_swapped (GTK_COLOR_SELECTION_DIALOG (csd)->cancel_button,
+                            "clicked", G_CALLBACK (gtk_widget_destroy), csd);
     
     /* wait until destroy calls gtk_main_quit */
     gtk_widget_show (csd);    
@@ -3824,15 +4225,13 @@ cmw_file (GtkWidget *widget, GtkWidget *parent)
     /* And mark it as a transient dialog */
     gtk_window_set_transient_for (GTK_WINDOW (fs), GTK_WINDOW (parent));
 
-    gtk_signal_connect (GTK_OBJECT(fs), "destroy",
-                        GTK_SIGNAL_FUNC(cmw_destroy_cb),NULL);
+    g_signal_connect (fs, "destroy",
+                      G_CALLBACK (cmw_destroy_cb), NULL);
 
-    gtk_signal_connect_object (GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),
-                               "clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                               GTK_OBJECT (fs));
-    gtk_signal_connect_object (GTK_OBJECT(GTK_FILE_SELECTION(fs)->cancel_button),
-                               "clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                               GTK_OBJECT (fs));
+    g_signal_connect_swapped (GTK_FILE_SELECTION (fs)->ok_button,
+                             "clicked", G_CALLBACK (gtk_widget_destroy), fs);
+    g_signal_connect_swapped (GTK_FILE_SELECTION (fs)->cancel_button,
+                             "clicked", G_CALLBACK (gtk_widget_destroy), fs);
     
     /* wait until destroy calls gtk_main_quit */
     gtk_widget_show (fs);
@@ -3861,15 +4260,15 @@ create_modal_window (GtkWidget *widget)
 
   /* Create widgets */
   box1 = gtk_vbox_new (FALSE,5);
-   frame1 = gtk_frame_new ("Standard dialogs in modal form");
-    box2 = gtk_vbox_new (TRUE,5);
-     btnColor = gtk_button_new_with_label ("Color");
-     btnFile = gtk_button_new_with_label ("File Selection");
-     btnClose = gtk_button_new_with_label ("Close");
+  frame1 = gtk_frame_new ("Standard dialogs in modal form");
+  box2 = gtk_vbox_new (TRUE,5);
+  btnColor = gtk_button_new_with_label ("Color");
+  btnFile = gtk_button_new_with_label ("File Selection");
+  btnClose = gtk_button_new_with_label ("Close");
 
   /* Init widgets */
-  gtk_container_set_border_width (GTK_CONTAINER(box1),3);
-  gtk_container_set_border_width (GTK_CONTAINER(box2),3);
+  gtk_container_set_border_width (GTK_CONTAINER (box1), 3);
+  gtk_container_set_border_width (GTK_CONTAINER (box2), 3);
     
   /* Pack widgets */
   gtk_container_add (GTK_CONTAINER (window), box1);
@@ -3881,17 +4280,16 @@ create_modal_window (GtkWidget *widget)
   gtk_box_pack_start (GTK_BOX (box1), btnClose, FALSE, FALSE, 4);
    
   /* connect signals */
-  gtk_signal_connect_object (GTK_OBJECT (btnClose), "clicked",
-                             GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                             GTK_OBJECT (window));
+  g_signal_connect_swapped (btnClose, "clicked",
+                           G_CALLBACK (gtk_widget_destroy), window);
 
-  gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                      GTK_SIGNAL_FUNC (cmw_destroy_cb),NULL);
+  g_signal_connect (window, "destroy",
+                    G_CALLBACK (cmw_destroy_cb), NULL);
   
-  gtk_signal_connect (GTK_OBJECT (btnColor), "clicked",
-                      GTK_SIGNAL_FUNC (cmw_color),window);
-  gtk_signal_connect (GTK_OBJECT (btnFile), "clicked",
-                      GTK_SIGNAL_FUNC (cmw_file),window);
+  g_signal_connect (btnColor, "clicked",
+                    G_CALLBACK (cmw_color), window);
+  g_signal_connect (btnFile, "clicked",
+                    G_CALLBACK (cmw_file), window);
 
   /* Show widgets */
   gtk_widget_show_all (window);
@@ -3923,15 +4321,15 @@ make_message_dialog (GdkScreen *screen,
 
   gtk_window_set_screen (GTK_WINDOW (*dialog), screen);
 
-  gtk_signal_connect_object (GTK_OBJECT (*dialog),
-                             "response",
-                             GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                             GTK_OBJECT (*dialog));
+  g_signal_connect_swapped (*dialog,
+                           "response",
+                           G_CALLBACK (gtk_widget_destroy),
+                           *dialog);
   
-  gtk_signal_connect (GTK_OBJECT (*dialog),
-                      "destroy",
-                      GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                      dialog);
+  g_signal_connect (*dialog,
+                    "destroy",
+                    G_CALLBACK (gtk_widget_destroyed),
+                    dialog);
 
   gtk_dialog_set_default_response (GTK_DIALOG (*dialog), default_response);
 
@@ -3948,9 +4346,9 @@ create_message_dialog (GtkWidget *widget)
   GdkScreen *screen = gtk_widget_get_screen (widget);
 
   make_message_dialog (screen, &info, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, GTK_RESPONSE_OK);
-  make_message_dialog (screen, &warning, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_OK);
+  make_message_dialog (screen, &warning, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_CLOSE);
   make_message_dialog (screen, &error, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK_CANCEL, GTK_RESPONSE_OK);
-  make_message_dialog (screen, &question, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, GTK_RESPONSE_YES);
+  make_message_dialog (screen, &question, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, GTK_RESPONSE_NO);
 }
 
 /*
@@ -3966,7 +4364,7 @@ scrolled_windows_delete_cb (GtkWidget *widget, GdkEventAny *event, GtkWidget *sc
 {
   gtk_widget_reparent (scrollwin, sw_parent);
   
-  gtk_signal_disconnect (GTK_OBJECT (sw_parent), sw_destroyed_handler);
+  g_signal_handler_disconnect (sw_parent, sw_destroyed_handler);
   sw_float_parent = NULL;
   sw_parent = NULL;
   sw_destroyed_handler = 0;
@@ -3992,7 +4390,7 @@ scrolled_windows_remove (GtkWidget *widget, GtkWidget *scrollwin)
       gtk_widget_reparent (scrollwin, sw_parent);
       gtk_widget_destroy (sw_float_parent);
 
-      gtk_signal_disconnect (GTK_OBJECT (sw_parent), sw_destroyed_handler);
+      g_signal_handler_disconnect (sw_parent, sw_destroyed_handler);
       sw_float_parent = NULL;
       sw_parent = NULL;
       sw_destroyed_handler = 0;
@@ -4010,10 +4408,10 @@ scrolled_windows_remove (GtkWidget *widget, GtkWidget *scrollwin)
       gtk_widget_show (sw_float_parent);
 
       sw_destroyed_handler =
-       gtk_signal_connect (GTK_OBJECT (sw_parent), "destroy",
-                           GTK_SIGNAL_FUNC (scrolled_windows_destroy_cb), scrollwin);
-      gtk_signal_connect (GTK_OBJECT (sw_float_parent), "delete_event",
-                         GTK_SIGNAL_FUNC (scrolled_windows_delete_cb), scrollwin);
+       g_signal_connect (sw_parent, "destroy",
+                         G_CALLBACK (scrolled_windows_destroy_cb), scrollwin);
+      g_signal_connect (sw_float_parent, "delete_event",
+                       G_CALLBACK (scrolled_windows_delete_cb), scrollwin);
     }
 }
 
@@ -4034,9 +4432,9 @@ create_scrolled_windows (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "dialog");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -4073,9 +4471,9 @@ create_scrolled_windows (GtkWidget *widget)
 
 
       button = gtk_button_new_with_label ("Close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -4083,9 +4481,9 @@ create_scrolled_windows (GtkWidget *widget)
       gtk_widget_show (button);
 
       button = gtk_button_new_with_label ("Reparent Out");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(scrolled_windows_remove),
-                         scrolled_window);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (scrolled_windows_remove),
+                       scrolled_window);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -4160,9 +4558,9 @@ create_entry (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "entry");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -4180,15 +4578,15 @@ create_entry (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box2), hbox, TRUE, TRUE, 0);
       
       entry = gtk_entry_new ();
-      gtk_entry_set_text (GTK_ENTRY (entry), "hello world السلام عليكم");
+      gtk_entry_set_text (GTK_ENTRY (entry), "hello world \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205");
       gtk_editable_select_region (GTK_EDITABLE (entry), 0, 5);
       gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
 
       button = gtk_button_new_with_mnemonic ("_Props");
       gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (entry_props_clicked),
-                         entry);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (entry_props_clicked),
+                       entry);
 
       cb = gtk_combo_new ();
       gtk_combo_set_popdown_strings (GTK_COMBO (cb), cbitems);
@@ -4199,15 +4597,143 @@ create_entry (GtkWidget *widget)
 
       sensitive_check = gtk_check_button_new_with_label("Sensitive");
       gtk_box_pack_start (GTK_BOX (box2), sensitive_check, FALSE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT(sensitive_check), "toggled",
-                         GTK_SIGNAL_FUNC(entry_toggle_sensitive), entry);
-      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sensitive_check), TRUE);
+      g_signal_connect (sensitive_check, "toggled",
+                       G_CALLBACK (entry_toggle_sensitive), entry);
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sensitive_check), TRUE);
 
       has_frame_check = gtk_check_button_new_with_label("Has Frame");
       gtk_box_pack_start (GTK_BOX (box2), has_frame_check, FALSE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT(has_frame_check), "toggled",
-                         GTK_SIGNAL_FUNC(entry_toggle_frame), entry);
-      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(has_frame_check), TRUE);
+      g_signal_connect (has_frame_check, "toggled",
+                       G_CALLBACK (entry_toggle_frame), entry);
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (has_frame_check), TRUE);
+      
+      separator = gtk_hseparator_new ();
+      gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
+
+      box2 = gtk_vbox_new (FALSE, 10);
+      gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
+      gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
+
+      button = gtk_button_new_with_label ("close");
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
+      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
+      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+      gtk_widget_grab_default (button);
+    }
+
+  if (!GTK_WIDGET_VISIBLE (window))
+    gtk_widget_show_all (window);
+  else
+    gtk_widget_destroy (window);
+}
+
+/* GtkEventBox */
+
+
+static void
+event_box_label_pressed (GtkWidget        *widget,
+                        GdkEventButton   *event,
+                        gpointer user_data)
+{
+  g_print ("clicked on event box\n");
+}
+
+static void
+event_box_button_clicked (GtkWidget *widget,
+                         GtkWidget *button,
+                         gpointer user_data)
+{
+  g_print ("pushed button\n");
+}
+
+static void
+event_box_toggle_visible_window (GtkWidget *checkbutton,
+                                GtkEventBox *event_box)
+{
+  gtk_event_box_set_visible_window (event_box,
+                                   GTK_TOGGLE_BUTTON(checkbutton)->active);
+}
+
+static void
+event_box_toggle_above_child (GtkWidget *checkbutton,
+                             GtkEventBox *event_box)
+{
+  gtk_event_box_set_above_child (event_box,
+                                GTK_TOGGLE_BUTTON(checkbutton)->active);
+}
+
+static void
+create_event_box (GtkWidget *widget)
+{
+  static GtkWidget *window = NULL;
+  GtkWidget *box1;
+  GtkWidget *box2;
+  GtkWidget *hbox;
+  GtkWidget *vbox;
+  GtkWidget *button;
+  GtkWidget *separator;
+  GtkWidget *event_box;
+  GtkWidget *label;
+  GtkWidget *visible_window_check;
+  GtkWidget *above_child_check;
+  GdkColor color;
+
+  if (!window)
+    {
+      color.red = 0;
+      color.blue = 65535;
+      color.green = 0;
+      
+      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+      gtk_window_set_screen (GTK_WINDOW (window),
+                            gtk_widget_get_screen (widget));
+
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
+
+      gtk_window_set_title (GTK_WINDOW (window), "event box");
+      gtk_container_set_border_width (GTK_CONTAINER (window), 0);
+
+      box1 = gtk_vbox_new (FALSE, 0);
+      gtk_container_add (GTK_CONTAINER (window), box1);
+      gtk_widget_modify_bg (window, GTK_STATE_NORMAL, &color);
+
+      hbox = gtk_hbox_new (FALSE, 0);
+      gtk_box_pack_start (GTK_BOX (box1), hbox, TRUE, FALSE, 0);
+      
+      event_box = gtk_event_box_new ();
+      gtk_box_pack_start (GTK_BOX (hbox), event_box, TRUE, FALSE, 0);
+
+      vbox = gtk_vbox_new (FALSE, 0);
+      gtk_container_add (GTK_CONTAINER (event_box), vbox);
+      g_signal_connect (event_box, "button_press_event",
+                       G_CALLBACK (event_box_label_pressed),
+                       NULL);
+      
+      label = gtk_label_new ("Click on this label");
+      gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, FALSE, 0);
+
+      button = gtk_button_new_with_label ("button in eventbox");
+      gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, FALSE, 0);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (event_box_button_clicked),
+                       NULL);
+      
+
+      visible_window_check = gtk_check_button_new_with_label("Visible Window");
+      gtk_box_pack_start (GTK_BOX (box1), visible_window_check, FALSE, TRUE, 0);
+      g_signal_connect (visible_window_check, "toggled",
+                       G_CALLBACK (event_box_toggle_visible_window), event_box);
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (visible_window_check), FALSE);
+      
+      above_child_check = gtk_check_button_new_with_label("Above Child");
+      gtk_box_pack_start (GTK_BOX (box1), above_child_check, FALSE, TRUE, 0);
+      g_signal_connect (above_child_check, "toggled",
+                       G_CALLBACK (event_box_toggle_above_child), event_box);
+      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (above_child_check), FALSE);
       
       separator = gtk_hseparator_new ();
       gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
@@ -4217,9 +4743,9 @@ create_entry (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -4231,6 +4757,7 @@ create_entry (GtkWidget *widget)
     gtk_widget_destroy (window);
 }
 
+
 /*
  * GtkSizeGroup
  */
@@ -4241,18 +4768,18 @@ static void
 size_group_hsize_changed (GtkSpinButton *spin_button,
                          GtkWidget     *button)
 {
-  gtk_widget_set_usize (GTK_BIN (button)->child,
-                       gtk_spin_button_get_value_as_int (spin_button),
-                       -2);
+  gtk_widget_set_size_request (GTK_BIN (button)->child,
+                              gtk_spin_button_get_value_as_int (spin_button),
+                              -1);
 }
 
 static void
 size_group_vsize_changed (GtkSpinButton *spin_button,
                          GtkWidget     *button)
 {
-  gtk_widget_set_usize (GTK_BIN (button)->child,
-                       -2,
-                       gtk_spin_button_get_value_as_int (spin_button));
+  gtk_widget_set_size_request (GTK_BIN (button)->child,
+                              -1,
+                              gtk_spin_button_get_value_as_int (spin_button));
 }
 
 static GtkWidget *
@@ -4280,9 +4807,9 @@ create_size_group_window (GdkScreen    *screen,
 
   gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
 
-  gtk_signal_connect (GTK_OBJECT (window), "response",
-                     GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                     NULL);
+  g_signal_connect (window, "response",
+                   G_CALLBACK (gtk_widget_destroy),
+                   NULL);
 
   table = gtk_table_new (2, 2, FALSE);
   gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), table, TRUE, TRUE, 0);
@@ -4290,7 +4817,7 @@ create_size_group_window (GdkScreen    *screen,
   gtk_table_set_row_spacings (GTK_TABLE (table), 5);
   gtk_table_set_col_spacings (GTK_TABLE (table), 5);
   gtk_container_set_border_width (GTK_CONTAINER (table), 5);
-  gtk_widget_set_usize (table, 250, 250);
+  gtk_widget_set_size_request (table, 250, 250);
 
   hgroup1 = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
   hgroup2 = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
@@ -4306,7 +4833,9 @@ create_size_group_window (GdkScreen    *screen,
   gtk_size_group_add_widget (master_size_group, main_button);
   gtk_size_group_add_widget (hgroup1, main_button);
   gtk_size_group_add_widget (vgroup1, main_button);
-  gtk_widget_set_usize (GTK_BIN (main_button)->child, SIZE_GROUP_INITIAL_SIZE, SIZE_GROUP_INITIAL_SIZE);
+  gtk_widget_set_size_request (GTK_BIN (main_button)->child,
+                              SIZE_GROUP_INITIAL_SIZE,
+                              SIZE_GROUP_INITIAL_SIZE);
 
   button = gtk_button_new ();
   gtk_table_attach (GTK_TABLE (table), button,
@@ -4332,10 +4861,10 @@ create_size_group_window (GdkScreen    *screen,
   gtk_size_group_add_widget (hgroup2, button);
   gtk_size_group_add_widget (vgroup2, button);
 
-  g_object_unref (G_OBJECT (hgroup1));
-  g_object_unref (G_OBJECT (hgroup2));
-  g_object_unref (G_OBJECT (vgroup1));
-  g_object_unref (G_OBJECT (vgroup2));
+  g_object_unref (hgroup1);
+  g_object_unref (hgroup2);
+  g_object_unref (vgroup1);
+  g_object_unref (vgroup2);
   
   hbox = gtk_hbox_new (FALSE, 5);
   gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), hbox, FALSE, FALSE, 0);
@@ -4343,14 +4872,14 @@ create_size_group_window (GdkScreen    *screen,
   spin_button = gtk_spin_button_new_with_range (1, 100, 1);
   gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), SIZE_GROUP_INITIAL_SIZE);
   gtk_box_pack_start (GTK_BOX (hbox), spin_button, TRUE, TRUE, 0);
-  gtk_signal_connect (GTK_OBJECT (spin_button), "value_changed",
-                     GTK_SIGNAL_FUNC (size_group_hsize_changed), main_button);
+  g_signal_connect (spin_button, "value_changed",
+                   G_CALLBACK (size_group_hsize_changed), main_button);
 
   spin_button = gtk_spin_button_new_with_range (1, 100, 1);
   gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button), SIZE_GROUP_INITIAL_SIZE);
   gtk_box_pack_start (GTK_BOX (hbox), spin_button, TRUE, TRUE, 0);
-  gtk_signal_connect (GTK_OBJECT (spin_button), "value_changed",
-                     GTK_SIGNAL_FUNC (size_group_vsize_changed), main_button);
+  g_signal_connect (spin_button, "value_changed",
+                   G_CALLBACK (size_group_vsize_changed), main_button);
 
   return window;
 }
@@ -4370,9 +4899,9 @@ create_size_groups (GtkWidget *widget)
       window1 = create_size_group_window (gtk_widget_get_screen (widget),
                                          master_size_group);
 
-      gtk_signal_connect (GTK_OBJECT (window1), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window1);
+      g_signal_connect (window1, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window1);
     }
 
   if (!window2)
@@ -4380,9 +4909,9 @@ create_size_groups (GtkWidget *widget)
       window2 = create_size_group_window (gtk_widget_get_screen (widget),
                                          master_size_group);
 
-      gtk_signal_connect (GTK_OBJECT (window2), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window2);
+      g_signal_connect (window2, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window2);
     }
 
   if (GTK_WIDGET_VISIBLE (window1) && GTK_WIDGET_VISIBLE (window2))
@@ -4432,12 +4961,11 @@ get_value (GtkWidget *widget, gpointer data)
   GtkSpinButton *spin;
 
   spin = GTK_SPIN_BUTTON (spinner1);
-  label = GTK_LABEL (gtk_object_get_user_data (GTK_OBJECT (widget)));
+  label = GTK_LABEL (g_object_get_data (G_OBJECT (widget), "user_data"));
   if (GPOINTER_TO_INT (data) == 1)
     sprintf (buf, "%d", gtk_spin_button_get_value_as_int (spin));
   else
-    sprintf (buf, "%0.*f", spin->digits,
-            gtk_spin_button_get_value_as_float (spin));
+    sprintf (buf, "%0.*f", spin->digits, gtk_spin_button_get_value (spin));
   gtk_label_set_text (label, buf);
 }
 
@@ -4452,7 +4980,7 @@ get_spin_value (GtkWidget *widget, gpointer data)
   label = GTK_LABEL (data);
 
   buffer = g_strdup_printf ("%0.*f", spin->digits,
-                           gtk_spin_button_get_value_as_float (spin));
+                           gtk_spin_button_get_value (spin));
   gtk_label_set_text (label, buffer);
 
   g_free (buffer);
@@ -4486,10 +5014,8 @@ spin_button_month_input_func (GtkSpinButton *spin_button,
 
   for (i = 1; i <= 12; i++)
     {
-      tmp1 = g_strdup (month[i-1]);
-      g_strup (tmp1);
-      tmp2 = g_strdup (gtk_entry_get_text (GTK_ENTRY (spin_button)));
-      g_strup (tmp2);
+      tmp1 = g_ascii_strup (month[i - 1], -1);
+      tmp2 = g_ascii_strup (gtk_entry_get_text (GTK_ENTRY (spin_button)), -1);
       if (strstr (tmp1, tmp2) == tmp1)
        found = TRUE;
       g_free (tmp1);
@@ -4578,9 +5104,9 @@ create_spins (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
       
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
       
       gtk_window_set_title (GTK_WINDOW (window), "GtkSpinButton");
       
@@ -4610,12 +5136,12 @@ create_spins (GtkWidget *widget)
       adj = (GtkAdjustment *) gtk_adjustment_new (0, 0, 1410, 30, 60, 0);
       spinner = gtk_spin_button_new (adj, 0, 0);
       gtk_editable_set_editable (GTK_EDITABLE (spinner), FALSE);
-      gtk_signal_connect (GTK_OBJECT (spinner),
-                         "output",
-                         GTK_SIGNAL_FUNC (spin_button_time_output_func),
-                         NULL);
+      g_signal_connect (spinner,
+                       "output",
+                       G_CALLBACK (spin_button_time_output_func),
+                       NULL);
       gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
-      gtk_widget_set_usize (spinner, 55, -1);
+      gtk_entry_set_width_chars (GTK_ENTRY (spinner), 5);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
 
       vbox2 = gtk_vbox_new (FALSE, 0);
@@ -4630,16 +5156,16 @@ create_spins (GtkWidget *widget)
       spinner = gtk_spin_button_new (adj, 0, 0);
       gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinner),
                                         GTK_UPDATE_IF_VALID);
-      gtk_signal_connect (GTK_OBJECT (spinner),
-                         "input",
-                         GTK_SIGNAL_FUNC (spin_button_month_input_func),
-                         NULL);
-      gtk_signal_connect (GTK_OBJECT (spinner),
-                         "output",
-                         GTK_SIGNAL_FUNC (spin_button_month_output_func),
-                         NULL);
+      g_signal_connect (spinner,
+                       "input",
+                       G_CALLBACK (spin_button_month_input_func),
+                       NULL);
+      g_signal_connect (spinner,
+                       "output",
+                       G_CALLBACK (spin_button_month_output_func),
+                       NULL);
       gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
-      gtk_widget_set_usize (spinner, 85, -1);
+      gtk_entry_set_width_chars (GTK_ENTRY (spinner), 9);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
       
       vbox2 = gtk_vbox_new (FALSE, 0);
@@ -4652,16 +5178,16 @@ create_spins (GtkWidget *widget)
       adj = (GtkAdjustment *) gtk_adjustment_new (0, 0, 255, 1, 16, 0);
       spinner = gtk_spin_button_new (adj, 0, 0);
       gtk_editable_set_editable (GTK_EDITABLE (spinner), TRUE);
-      gtk_signal_connect (GTK_OBJECT (spinner),
-                         "input",
-                         GTK_SIGNAL_FUNC (spin_button_hex_input_func),
-                         NULL);
-      gtk_signal_connect (GTK_OBJECT (spinner),
-                         "output",
-                         GTK_SIGNAL_FUNC (spin_button_hex_output_func),
-                         NULL);
+      g_signal_connect (spinner,
+                       "input",
+                       G_CALLBACK (spin_button_hex_input_func),
+                       NULL);
+      g_signal_connect (spinner,
+                       "output",
+                       G_CALLBACK (spin_button_hex_output_func),
+                       NULL);
       gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner), TRUE);
-      gtk_widget_set_usize (spinner, 55, 0);
+      gtk_entry_set_width_chars (GTK_ENTRY (spinner), 4);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner, FALSE, TRUE, 0);
 
       frame = gtk_frame_new ("Accelerated");
@@ -4696,25 +5222,25 @@ create_spins (GtkWidget *widget)
 
       adj = (GtkAdjustment *) gtk_adjustment_new (2, 1, 15, 1, 1, 0);
       spinner2 = gtk_spin_button_new (adj, 0.0, 0);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (change_digits),
-                         (gpointer) spinner2);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (change_digits),
+                       spinner2);
       gtk_box_pack_start (GTK_BOX (vbox2), spinner2, FALSE, TRUE, 0);
 
       hbox = gtk_hbox_new (FALSE, 0);
       gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5);
 
       button = gtk_check_button_new_with_label ("Snap to 0.5-ticks");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (toggle_snap),
-                         spinner1);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (toggle_snap),
+                       spinner1);
       gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
 
       button = gtk_check_button_new_with_label ("Numeric only input mode");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (toggle_numeric),
-                         spinner1);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (toggle_numeric),
+                       spinner1);
       gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
 
@@ -4724,17 +5250,17 @@ create_spins (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 5);
 
       button = gtk_button_new_with_label ("Value as Int");
-      gtk_object_set_user_data (GTK_OBJECT (button), val_label);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (get_value),
-                         GINT_TO_POINTER (1));
+      g_object_set_data (G_OBJECT (button), "user_data", val_label);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (get_value),
+                       GINT_TO_POINTER (1));
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 5);
 
       button = gtk_button_new_with_label ("Value as Float");
-      gtk_object_set_user_data (GTK_OBJECT (button), val_label);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (get_value),
-                         GINT_TO_POINTER (2));
+      g_object_set_data (G_OBJECT (button), "user_data", val_label);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (get_value),
+                       GINT_TO_POINTER (2));
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 5);
 
       gtk_box_pack_start (GTK_BOX (vbox), val_label, TRUE, TRUE, 0);
@@ -4751,8 +5277,8 @@ create_spins (GtkWidget *widget)
 
       spinner = gtk_spin_button_new_with_range (0.0, 10.0, 0.009);
       gtk_spin_button_set_value (GTK_SPIN_BUTTON (spinner), 0.0);
-      gtk_signal_connect (GTK_OBJECT (spinner), "value_changed",
-                         GTK_SIGNAL_FUNC (get_spin_value), val_label);
+      g_signal_connect (spinner, "value_changed",
+                       G_CALLBACK (get_spin_value), val_label);
       gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 5);
       gtk_box_pack_start (GTK_BOX (hbox), val_label, TRUE, TRUE, 5);
 
@@ -4760,9 +5286,9 @@ create_spins (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0);
   
       button = gtk_button_new_with_label ("Close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 5);
     }
 
@@ -4832,13 +5358,17 @@ set_cursor (GtkWidget *spinner,
   guint c;
   GdkCursor *cursor;
   GtkWidget *label;
-  GtkEnumValue *vals;
+  GEnumClass *class;
+  GEnumValue *vals;
 
   c = CLAMP (gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spinner)), 0, 152);
   c &= 0xfe;
 
-  label = gtk_object_get_user_data (GTK_OBJECT (spinner));
-  vals = gtk_type_enum_get_values (GDK_TYPE_CURSOR_TYPE);
+  label = g_object_get_data (G_OBJECT (spinner), "user_data");
+  
+  class = gtk_type_class (GDK_TYPE_CURSOR_TYPE);
+  vals = class->values;
+
   while (vals && vals->value != c)
     vals++;
   if (vals)
@@ -4846,7 +5376,7 @@ set_cursor (GtkWidget *spinner,
   else
     gtk_label_set_text (GTK_LABEL (label), "<unknown>");
 
-  cursor = gdk_cursor_new_for_screen (gtk_widget_get_screen (widget), c);
+  cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), c);
   gdk_window_set_cursor (widget->window, cursor);
   gdk_cursor_unref (cursor);
 }
@@ -4889,9 +5419,9 @@ create_cursors (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window), 
                             gtk_widget_get_screen (widget));
       
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
       
       gtk_window_set_title (GTK_WINDOW (window), "Cursors");
       
@@ -4934,22 +5464,22 @@ create_cursors (GtkWidget *widget)
                        NULL);
 
       darea = gtk_drawing_area_new ();
-      gtk_widget_set_usize (darea, 80, 80);
+      gtk_widget_set_size_request (darea, 80, 80);
       gtk_container_add (GTK_CONTAINER (frame), darea);
-      gtk_signal_connect (GTK_OBJECT (darea),
-                         "expose_event",
-                         GTK_SIGNAL_FUNC (cursor_expose_event),
-                         NULL);
+      g_signal_connect (darea,
+                       "expose_event",
+                       G_CALLBACK (cursor_expose_event),
+                       NULL);
       gtk_widget_set_events (darea, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK);
-      gtk_signal_connect (GTK_OBJECT (darea),
-                         "button_press_event",
-                         GTK_SIGNAL_FUNC (cursor_event),
-                         spinner);
+      g_signal_connect (darea,
+                       "button_press_event",
+                       G_CALLBACK (cursor_event),
+                       spinner);
       gtk_widget_show (darea);
 
-      gtk_signal_connect (GTK_OBJECT (spinner), "changed",
-                         GTK_SIGNAL_FUNC (set_cursor),
-                         darea);
+      g_signal_connect (spinner, "changed",
+                       G_CALLBACK (set_cursor),
+                       darea);
 
       label = gtk_widget_new (GTK_TYPE_LABEL,
                              "visible", TRUE,
@@ -4959,7 +5489,7 @@ create_cursors (GtkWidget *widget)
       gtk_container_child_set (GTK_CONTAINER (vbox), label,
                               "expand", FALSE,
                               NULL);
-      gtk_object_set_user_data (GTK_OBJECT (spinner), label);
+      g_object_set_data (G_OBJECT (spinner), "user_data", label);
 
       any =
        gtk_widget_new (gtk_hseparator_get_type (),
@@ -4972,9 +5502,9 @@ create_cursors (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("Close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 5);
 
       gtk_widget_show_all (window);
@@ -5057,6 +5587,19 @@ list_clear (GtkWidget *widget,
   gtk_list_clear_items (GTK_LIST (list), 0, -1);
 }
 
+static gchar *selection_mode_items[] =
+{
+  "Single",
+  "Browse",
+  "Multiple"
+};
+
+static const GtkSelectionMode selection_modes[] = {
+  GTK_SELECTION_SINGLE,
+  GTK_SELECTION_BROWSE,
+  GTK_SELECTION_MULTIPLE
+};
+
 static GtkWidget *list_omenu;
 
 static void 
@@ -5072,7 +5615,7 @@ list_toggle_sel_mode (GtkWidget *widget, gpointer data)
 
   i = gtk_option_menu_get_history (GTK_OPTION_MENU (widget));
 
-  gtk_list_set_selection_mode (list, (GtkSelectionMode) i);
+  gtk_list_set_selection_mode (list, selection_modes[i]);
 }
 
 static void
@@ -5080,13 +5623,6 @@ create_list (GtkWidget *widget)
 {
   static GtkWidget *window = NULL;
 
-  static gchar *items[] =
-  {
-    "Single",
-    "Browse",
-    "Multiple"
-  };
-  
   if (!window)
     {
       GtkWidget *cbox;
@@ -5104,9 +5640,9 @@ create_list (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "list");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -5116,14 +5652,14 @@ create_list (GtkWidget *widget)
 
       scrolled_win = gtk_scrolled_window_new (NULL, NULL);
       gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5);
-      gtk_widget_set_usize (scrolled_win, -1, 300);
+      gtk_widget_set_size_request (scrolled_win, -1, 300);
       gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
                                      GTK_POLICY_AUTOMATIC,
                                      GTK_POLICY_AUTOMATIC);
 
       list = gtk_list_new ();
-      gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_EXTENDED);
+      gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_SINGLE);
       gtk_scrolled_window_add_with_viewport
        (GTK_SCROLLED_WINDOW (scrolled_win), list);
       gtk_container_set_focus_vadjustment
@@ -5159,21 +5695,21 @@ create_list (GtkWidget *widget)
 
       button = gtk_button_new_with_label ("Insert Row");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (list_add),
-                         list);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (list_add),
+                       list);
 
       button = gtk_button_new_with_label ("Clear List");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (list_clear),
-                         list);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (list_clear),
+                       list);
 
       button = gtk_button_new_with_label ("Remove Selection");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (list_remove),
-                         list);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (list_remove),
+                       list);
 
       cbox = gtk_hbox_new (FALSE, 0);
       gtk_box_pack_start (GTK_BOX (vbox), cbox, FALSE, TRUE, 0);
@@ -5185,7 +5721,7 @@ create_list (GtkWidget *widget)
       label = gtk_label_new ("Selection Mode :");
       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
 
-      list_omenu = build_option_menu (items, 3, 3, 
+      list_omenu = build_option_menu (selection_mode_items, 3, 3, 
                                      list_toggle_sel_mode,
                                      list);
       gtk_box_pack_start (GTK_BOX (hbox), list_omenu, FALSE, TRUE, 0);
@@ -5199,9 +5735,9 @@ create_list (GtkWidget *widget)
       button = gtk_button_new_with_label ("close");
       gtk_container_set_border_width (GTK_CONTAINER (button), 10);
       gtk_box_pack_start (GTK_BOX (cbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
 
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -5369,8 +5905,8 @@ add1000_clist (GtkWidget *widget, gpointer data)
 
   gtk_clist_thaw (GTK_CLIST (data));
 
-  gdk_pixmap_unref (pixmap);
-  gdk_bitmap_unref (mask);
+  g_object_unref (pixmap);
+  g_object_unref (mask);
 }
 
 static void
@@ -5507,7 +6043,7 @@ clist_warning_test (GtkWidget *button,
   add_remove = !add_remove;
 
   child = gtk_label_new ("Test");
-  gtk_widget_ref (child);
+  g_object_ref (child);
   gtk_object_sink (GTK_OBJECT (child));
 
   if (add_remove)
@@ -5542,7 +6078,7 @@ clist_toggle_sel_mode (GtkWidget *widget, gpointer data)
 
   i = gtk_option_menu_get_history (GTK_OPTION_MENU (widget));
 
-  gtk_clist_set_selection_mode (clist, (GtkSelectionMode) i);
+  gtk_clist_set_selection_mode (clist, selection_modes[i]);
 }
 
 static void 
@@ -5576,13 +6112,6 @@ create_clist (GtkWidget *widget)
     "Title 8",  "Title 9",  "Title 10", "Title 11"
   };
 
-  static gchar *items[] =
-  {
-    "Single",
-    "Browse",
-    "Multiple",
-  };
-
   char text[TESTGTK_CLIST_COLUMNS][50];
   char *texts[TESTGTK_CLIST_COLUMNS];
 
@@ -5608,8 +6137,8 @@ create_clist (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window), 
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed), &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed), &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "clist");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -5627,8 +6156,8 @@ create_clist (GtkWidget *widget)
        * button callbacks -- more is done with it later */
       clist = gtk_clist_new_with_titles (TESTGTK_CLIST_COLUMNS, titles);
       gtk_container_add (GTK_CONTAINER (scrolled_win), clist);
-      gtk_signal_connect (GTK_OBJECT (clist), "click_column",
-                         (GtkSignalFunc) clist_click_column, NULL);
+      g_signal_connect (clist, "click_column",
+                       G_CALLBACK (clist_click_column), NULL);
 
       /* control buttons */
       hbox = gtk_hbox_new (FALSE, 5);
@@ -5637,18 +6166,18 @@ create_clist (GtkWidget *widget)
 
       button = gtk_button_new_with_label ("Insert Row");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                          (GtkSignalFunc) insert_row_clist, (gpointer) clist);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (insert_row_clist), clist);
 
       button = gtk_button_new_with_label ("Add 1,000 Rows With Pixmaps");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                          (GtkSignalFunc) add1000_clist, (gpointer) clist);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (add1000_clist), clist);
 
       button = gtk_button_new_with_label ("Add 10,000 Rows");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                          (GtkSignalFunc) add10000_clist, (gpointer) clist);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (add10000_clist), clist);
 
       /* second layer of buttons */
       hbox = gtk_hbox_new (FALSE, 5);
@@ -5657,24 +6186,23 @@ create_clist (GtkWidget *widget)
 
       button = gtk_button_new_with_label ("Clear List");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                          (GtkSignalFunc) clear_clist, (gpointer) clist);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (clear_clist), clist);
 
       button = gtk_button_new_with_label ("Remove Selection");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                          (GtkSignalFunc) clist_remove_selection,
-                         (gpointer) clist);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (clist_remove_selection), clist);
 
       undo_button = gtk_button_new_with_label ("Undo Selection");
       gtk_box_pack_start (GTK_BOX (hbox), undo_button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (undo_button), "clicked",
-                          (GtkSignalFunc) undo_selection, (gpointer) clist);
+      g_signal_connect (undo_button, "clicked",
+                       G_CALLBACK (undo_selection), clist);
 
       button = gtk_button_new_with_label ("Warning Test");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                          (GtkSignalFunc) clist_warning_test,(gpointer) clist);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (clist_warning_test), clist);
 
       /* third layer of buttons */
       hbox = gtk_hbox_new (FALSE, 5);
@@ -5683,20 +6211,20 @@ create_clist (GtkWidget *widget)
 
       check = gtk_check_button_new_with_label ("Show Title Buttons");
       gtk_box_pack_start (GTK_BOX (hbox), check, FALSE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (check), "clicked",
-                         GTK_SIGNAL_FUNC (toggle_title_buttons), clist);
+      g_signal_connect (check, "clicked",
+                       G_CALLBACK (toggle_title_buttons), clist);
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
 
       check = gtk_check_button_new_with_label ("Reorderable");
       gtk_box_pack_start (GTK_BOX (hbox), check, FALSE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (check), "clicked",
-                         GTK_SIGNAL_FUNC (toggle_reorderable), clist);
+      g_signal_connect (check, "clicked",
+                       G_CALLBACK (toggle_reorderable), clist);
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
 
       label = gtk_label_new ("Selection Mode :");
       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
 
-      clist_omenu = build_option_menu (items, 3, 3, 
+      clist_omenu = build_option_menu (selection_mode_items, 3, 3, 
                                       clist_toggle_sel_mode,
                                       clist);
       gtk_box_pack_start (GTK_BOX (hbox), clist_omenu, FALSE, TRUE, 0);
@@ -5707,7 +6235,7 @@ create_clist (GtkWidget *widget)
 
       gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
       gtk_clist_set_row_height (GTK_CLIST (clist), 18);
-      gtk_widget_set_usize (clist, -1, 300);
+      gtk_widget_set_size_request (clist, -1, 300);
 
       for (i = 1; i < TESTGTK_CLIST_COLUMNS; i++)
        gtk_clist_set_column_width (GTK_CLIST (clist), i, 80);
@@ -5772,9 +6300,9 @@ create_clist (GtkWidget *widget)
       button = gtk_button_new_with_label ("close");
       gtk_container_set_border_width (GTK_CONTAINER (button), 10);
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
 
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -6092,9 +6620,9 @@ void export_ctree (GtkWidget *widget, GtkCTree *ctree)
       gtk_window_set_screen (GTK_WINDOW (export_window),
                             gtk_widget_get_screen (widget));
   
-      gtk_signal_connect (GTK_OBJECT (export_window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &export_window);
+      g_signal_connect (export_window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &export_window);
 
       gtk_window_set_title (GTK_WINDOW (export_window), "exported ctree");
       gtk_container_set_border_width (GTK_CONTAINER (export_window), 5);
@@ -6105,9 +6633,9 @@ void export_ctree (GtkWidget *widget, GtkCTree *ctree)
       button = gtk_button_new_with_label ("Close");
       gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, TRUE, 0);
 
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                (GtkSignalFunc) gtk_widget_destroy,
-                                GTK_OBJECT(export_window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               export_window);
 
       sep = gtk_hseparator_new ();
       gtk_box_pack_end (GTK_BOX (vbox), sep, FALSE, TRUE, 10);
@@ -6126,7 +6654,7 @@ void export_ctree (GtkWidget *widget, GtkCTree *ctree)
                                    GTK_SELECTION_EXTENDED);
       gtk_clist_set_column_width (GTK_CLIST (export_ctree), 0, 200);
       gtk_clist_set_column_width (GTK_CLIST (export_ctree), 1, 200);
-      gtk_widget_set_usize (GTK_WIDGET (export_ctree), 300, 200);
+      gtk_widget_set_size_request (GTK_WIDGET (export_ctree), 300, 200);
     }
 
   if (!GTK_WIDGET_VISIBLE (export_window))
@@ -6250,7 +6778,7 @@ ctree_toggle_sel_mode (GtkWidget *widget, gpointer data)
 
   i = gtk_option_menu_get_history (GTK_OPTION_MENU (widget));
 
-  gtk_clist_set_selection_mode (GTK_CLIST (ctree), (GtkSelectionMode) i);
+  gtk_clist_set_selection_mode (GTK_CLIST (ctree), selection_modes[i]);
   after_press (ctree, NULL);
 }
     
@@ -6442,32 +6970,25 @@ void create_ctree (GtkWidget *widget)
     "Right"
   };
   
-  static gchar *items4[] =
-  {
-    "Single",
-    "Browse",
-    "Multiple",
-  };
-
   if (!window)
     {
       window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
       gtk_window_set_screen (GTK_WINDOW (window), 
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "GtkCTree");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
 
       tooltips = gtk_tooltips_new ();
-      gtk_object_ref (GTK_OBJECT (tooltips));
+      g_object_ref (tooltips);
       gtk_object_sink (GTK_OBJECT (tooltips));
 
-      gtk_object_set_data_full (GTK_OBJECT (window), "tooltips", tooltips,
-                               (GtkDestroyNotify) gtk_object_unref);
+      g_object_set_data_full (G_OBJECT (window), "tooltips", tooltips,
+                             g_object_unref);
 
       vbox = gtk_vbox_new (FALSE, 0);
       gtk_container_add (GTK_CONTAINER (window), vbox);
@@ -6500,9 +7021,9 @@ void create_ctree (GtkWidget *widget)
       button = gtk_button_new_with_label ("Close");
       gtk_box_pack_end (GTK_BOX (hbox), button, TRUE, TRUE, 0);
 
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                (GtkSignalFunc) gtk_widget_destroy,
-                                GTK_OBJECT(window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
 
       button = gtk_button_new_with_label ("Rebuild Tree");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
@@ -6523,27 +7044,27 @@ void create_ctree (GtkWidget *widget)
       gtk_ctree_set_line_style (ctree, GTK_CTREE_LINES_DOTTED);
       line_style = GTK_CTREE_LINES_DOTTED;
 
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (rebuild_tree), ctree);
-      gtk_signal_connect (GTK_OBJECT (ctree), "click_column",
-                         (GtkSignalFunc) ctree_click_column, NULL);
-
-      gtk_signal_connect_after (GTK_OBJECT (ctree), "button_press_event",
-                               GTK_SIGNAL_FUNC (after_press), NULL);
-      gtk_signal_connect_after (GTK_OBJECT (ctree), "button_release_event",
-                               GTK_SIGNAL_FUNC (after_press), NULL);
-      gtk_signal_connect_after (GTK_OBJECT (ctree), "tree_move",
-                               GTK_SIGNAL_FUNC (after_move), NULL);
-      gtk_signal_connect_after (GTK_OBJECT (ctree), "end_selection",
-                               GTK_SIGNAL_FUNC (after_press), NULL);
-      gtk_signal_connect_after (GTK_OBJECT (ctree), "toggle_focus_row",
-                               GTK_SIGNAL_FUNC (after_press), NULL);
-      gtk_signal_connect_after (GTK_OBJECT (ctree), "select_all",
-                               GTK_SIGNAL_FUNC (after_press), NULL);
-      gtk_signal_connect_after (GTK_OBJECT (ctree), "unselect_all",
-                               GTK_SIGNAL_FUNC (after_press), NULL);
-      gtk_signal_connect_after (GTK_OBJECT (ctree), "scroll_vertical",
-                               GTK_SIGNAL_FUNC (after_press), NULL);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (rebuild_tree), ctree);
+      g_signal_connect (ctree, "click_column",
+                       G_CALLBACK (ctree_click_column), NULL);
+
+      g_signal_connect_after (ctree, "button_press_event",
+                             G_CALLBACK (after_press), NULL);
+      g_signal_connect_after (ctree, "button_release_event",
+                             G_CALLBACK (after_press), NULL);
+      g_signal_connect_after (ctree, "tree_move",
+                             G_CALLBACK (after_move), NULL);
+      g_signal_connect_after (ctree, "end_selection",
+                             G_CALLBACK (after_press), NULL);
+      g_signal_connect_after (ctree, "toggle_focus_row",
+                             G_CALLBACK (after_press), NULL);
+      g_signal_connect_after (ctree, "select_all",
+                             G_CALLBACK (after_press), NULL);
+      g_signal_connect_after (ctree, "unselect_all",
+                             G_CALLBACK (after_press), NULL);
+      g_signal_connect_after (ctree, "scroll_vertical",
+                             G_CALLBACK (after_press), NULL);
 
       bbox = gtk_hbox_new (FALSE, 5);
       gtk_container_set_border_width (GTK_CONTAINER (bbox), 5);
@@ -6569,23 +7090,23 @@ void create_ctree (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (mbox), spinner, FALSE, FALSE, 5);
       gtk_tooltips_set_tip (tooltips, spinner,
                            "Row height of list items", NULL);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (change_row_height), ctree);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (change_row_height), ctree);
       gtk_clist_set_row_height ( GTK_CLIST (ctree), adj->value);
 
       adj = (GtkAdjustment *) gtk_adjustment_new (20, 0, 60, 1, 10, 0);
       spinner = gtk_spin_button_new (adj, 0, 0);
       gtk_box_pack_start (GTK_BOX (mbox), spinner, FALSE, FALSE, 5);
       gtk_tooltips_set_tip (tooltips, spinner, "Tree Indentation.", NULL);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (change_indent), ctree);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (change_indent), ctree);
 
       adj = (GtkAdjustment *) gtk_adjustment_new (5, 0, 60, 1, 10, 0);
       spinner = gtk_spin_button_new (adj, 0, 0);
       gtk_box_pack_start (GTK_BOX (mbox), spinner, FALSE, FALSE, 5);
       gtk_tooltips_set_tip (tooltips, spinner, "Tree Spacing.", NULL);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (change_spacing), ctree);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (change_spacing), ctree);
 
       mbox = gtk_vbox_new (TRUE, 5);
       gtk_box_pack_start (GTK_BOX (bbox), mbox, FALSE, TRUE, 0);
@@ -6595,48 +7116,48 @@ void create_ctree (GtkWidget *widget)
 
       button = gtk_button_new_with_label ("Expand All");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (expand_all), ctree);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (expand_all), ctree);
 
       button = gtk_button_new_with_label ("Collapse All");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (collapse_all), ctree);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (collapse_all), ctree);
 
       button = gtk_button_new_with_label ("Change Style");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (change_style), ctree);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (change_style), ctree);
 
       button = gtk_button_new_with_label ("Export Tree");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (export_ctree), ctree);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (export_ctree), ctree);
 
       hbox = gtk_hbox_new (FALSE, 5);
       gtk_box_pack_start (GTK_BOX (mbox), hbox, FALSE, FALSE, 0);
 
       button = gtk_button_new_with_label ("Select All");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (select_all), ctree);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (select_all), ctree);
 
       button = gtk_button_new_with_label ("Unselect All");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (unselect_all), ctree);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (unselect_all), ctree);
 
       button = gtk_button_new_with_label ("Remove Selection");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (remove_selection), ctree);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (remove_selection), ctree);
 
       check = gtk_check_button_new_with_label ("Reorderable");
       gtk_box_pack_start (GTK_BOX (hbox), check, FALSE, TRUE, 0);
       gtk_tooltips_set_tip (tooltips, check,
                            "Tree items can be reordered by dragging.", NULL);
-      gtk_signal_connect (GTK_OBJECT (check), "clicked",
-                         GTK_SIGNAL_FUNC (toggle_reorderable), ctree);
+      g_signal_connect (check, "clicked",
+                       G_CALLBACK (toggle_reorderable), ctree);
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
 
       hbox = gtk_hbox_new (TRUE, 5);
@@ -6661,7 +7182,7 @@ void create_ctree (GtkWidget *widget)
       gtk_tooltips_set_tip (tooltips, omenu3, "The tree's justification.",
                            NULL);
 
-      omenu4 = build_option_menu (items4, 3, 3, 
+      omenu4 = build_option_menu (selection_mode_items, 3, 3, 
                                  ctree_toggle_sel_mode, ctree);
       gtk_box_pack_start (GTK_BOX (hbox), omenu4, FALSE, TRUE, 0);
       gtk_tooltips_set_tip (tooltips, omenu4, "The list's selection mode.",
@@ -6669,7 +7190,7 @@ void create_ctree (GtkWidget *widget)
 
       gtk_widget_realize (window);
       
-      gtk_widget_set_usize (GTK_WIDGET (ctree), 0, 300);
+      gtk_widget_set_size_request (GTK_WIDGET (ctree), -1, 300);
 
       frame = gtk_frame_new (NULL);
       gtk_container_set_border_width (GTK_CONTAINER (frame), 0);
@@ -6806,58 +7327,35 @@ create_color_selection (GtkWidget *widget)
 
   if (!window)
     {
-      GtkWidget *options_hbox;
-      GtkWidget *check_button;
+      GtkWidget *picker;
+      GtkWidget *hbox;
+      GtkWidget *label;
       
-      window = gtk_color_selection_dialog_new ("color selection dialog");
+      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
       gtk_window_set_screen (GTK_WINDOW (window), 
                             gtk_widget_get_screen (widget));
                             
-      gtk_widget_show (GTK_COLOR_SELECTION_DIALOG (window)->help_button);
-
-      gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                        &window);
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                          GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                          &window);
+      gtk_window_set_title (GTK_WINDOW (window), "GtkColorButton");
+      gtk_container_set_border_width (GTK_CONTAINER (window), 0);
 
-      options_hbox = gtk_hbox_new (FALSE, 0);
-      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), options_hbox, FALSE, FALSE, 0);
-      gtk_container_set_border_width (GTK_CONTAINER (options_hbox), 10);
+      hbox = gtk_hbox_new (FALSE, 8);
+      gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
+      gtk_container_add (GTK_CONTAINER (window), hbox);
       
-      check_button = gtk_check_button_new_with_label ("Show Opacity");
-      gtk_box_pack_start (GTK_BOX (options_hbox), check_button, FALSE, FALSE, 0);
-      gtk_signal_connect (GTK_OBJECT (check_button), "toggled",
-                         GTK_SIGNAL_FUNC (opacity_toggled_cb), window);
-
-      check_button = gtk_check_button_new_with_label ("Show Palette");
-      gtk_box_pack_end (GTK_BOX (options_hbox), check_button, FALSE, FALSE, 0);
-      gtk_signal_connect (GTK_OBJECT (check_button), "toggled",
-                         GTK_SIGNAL_FUNC (palette_toggled_cb), window);
-
-      gtk_widget_show_all (options_hbox);
-
-      gtk_signal_connect (
-       GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->colorsel),
-       "color_changed",
-       GTK_SIGNAL_FUNC(color_selection_changed),
-       window);
-
-      gtk_signal_connect (
-       GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->ok_button),
-       "clicked",
-       GTK_SIGNAL_FUNC(color_selection_ok),
-       window);
+      label = gtk_label_new ("Pick a color");
+      gtk_container_add (GTK_CONTAINER (hbox), label);
 
-      gtk_signal_connect_object (
-        GTK_OBJECT (GTK_COLOR_SELECTION_DIALOG (window)->cancel_button),
-       "clicked",
-       GTK_SIGNAL_FUNC(gtk_widget_destroy),
-       GTK_OBJECT (window));
+      picker = gtk_color_button_new ();
+      gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (picker), TRUE);
+      gtk_container_add (GTK_CONTAINER (hbox), picker);
     }
 
   if (!GTK_WIDGET_VISIBLE (window))
-    gtk_widget_show (window);
+    gtk_widget_show_all (window);
   else
     gtk_widget_destroy (window);
 }
@@ -6967,6 +7465,39 @@ flipping_toggled_cb (GtkWidget *widget, gpointer data)
   gtk_widget_set_default_direction (new_direction);
 }
 
+static void
+set_direction_recurse (GtkWidget *widget,
+                      gpointer   data)
+{
+  GtkTextDirection *dir = data;
+  
+  gtk_widget_set_direction (widget, *dir);
+  if (GTK_IS_CONTAINER (widget))
+    gtk_container_foreach (GTK_CONTAINER (widget),
+                          set_direction_recurse,
+                          data);
+}
+
+static GtkWidget *
+create_forward_back (const char       *title,
+                    GtkTextDirection  text_dir)
+{
+  GtkWidget *frame = gtk_frame_new (title);
+  GtkWidget *bbox = gtk_hbutton_box_new ();
+  GtkWidget *back_button = gtk_button_new_from_stock (GTK_STOCK_GO_BACK);
+  GtkWidget *forward_button = gtk_button_new_from_stock (GTK_STOCK_GO_FORWARD);
+
+  gtk_container_set_border_width (GTK_CONTAINER (bbox), 5);
+  
+  gtk_container_add (GTK_CONTAINER (frame), bbox);
+  gtk_container_add (GTK_CONTAINER (bbox), back_button);
+  gtk_container_add (GTK_CONTAINER (bbox), forward_button);
+
+  set_direction_recurse (frame, &text_dir);
+
+  return frame;
+}
+
 void
 create_flipping (GtkWidget *widget)
 {
@@ -6980,9 +7511,9 @@ create_flipping (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Bidirectional Flipping");
 
@@ -6990,17 +7521,29 @@ create_flipping (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), 
                          check_button, TRUE, TRUE, 0);
 
+      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), 
+                         create_forward_back ("Default", GTK_TEXT_DIR_NONE),
+                         TRUE, TRUE, 0);
+
+      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), 
+                         create_forward_back ("Left-to-Right", GTK_TEXT_DIR_LTR),
+                         TRUE, TRUE, 0);
+
+      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), 
+                         create_forward_back ("Right-to-Left", GTK_TEXT_DIR_RTL),
+                         TRUE, TRUE, 0);
+
       if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL)
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
 
-      gtk_signal_connect (GTK_OBJECT (check_button), "toggled",
-                         GTK_SIGNAL_FUNC (flipping_toggled_cb), FALSE);
+      g_signal_connect (check_button, "toggled",
+                       G_CALLBACK (flipping_toggled_cb), FALSE);
 
       gtk_container_set_border_width (GTK_CONTAINER (check_button), 10);
       
       button = gtk_button_new_with_label ("Close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy), window);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
     }
@@ -7079,13 +7622,13 @@ create_focus (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
-      gtk_signal_connect (GTK_OBJECT (window), "response",
-                          GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                          NULL);
+      g_signal_connect (window, "response",
+                        G_CALLBACK (gtk_widget_destroy),
+                        NULL);
       
       gtk_window_set_title (GTK_WINDOW (window), "Keyboard Focus Navigation");
 
@@ -7144,27 +7687,35 @@ create_font_selection (GtkWidget *widget)
 
   if (!window)
     {
-      window = gtk_font_selection_dialog_new ("Font Selection Dialog");
+      GtkWidget *picker;
+      GtkWidget *hbox;
+      GtkWidget *label;
       
+      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
+
+      gtk_window_set_title (GTK_WINDOW (window), "GtkFontButton");
+      gtk_container_set_border_width (GTK_CONTAINER (window), 0);
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      hbox = gtk_hbox_new (FALSE, 8);
+      gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
+      gtk_container_add (GTK_CONTAINER (window), hbox);
+      
+      label = gtk_label_new ("Pick a font");
+      gtk_container_add (GTK_CONTAINER (hbox), label);
 
-      gtk_signal_connect (GTK_OBJECT (GTK_FONT_SELECTION_DIALOG (window)->ok_button),
-                         "clicked", GTK_SIGNAL_FUNC(font_selection_ok),
-                         GTK_FONT_SELECTION_DIALOG (window));
-      gtk_signal_connect_object (GTK_OBJECT (GTK_FONT_SELECTION_DIALOG (window)->cancel_button),
-                                "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      picker = gtk_font_button_new ();
+      gtk_font_button_set_use_font (GTK_FONT_BUTTON (picker), TRUE);
+      gtk_container_add (GTK_CONTAINER (hbox), picker);
     }
   
   if (!GTK_WIDGET_VISIBLE (window))
-    gtk_widget_show (window);
+    gtk_widget_show_all (window);
   else
     gtk_widget_destroy (window);
 }
@@ -7182,10 +7733,10 @@ label_toggle (GtkWidget  *widget,
   if (!(*label))
     {
       *label = gtk_label_new ("Dialog Test");
-      gtk_signal_connect (GTK_OBJECT (*label),
-                         "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         label);
+      g_signal_connect (*label,
+                       "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       label);
       gtk_misc_set_padding (GTK_MISC (*label), 10, 10);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->vbox), 
                          *label, TRUE, TRUE, 0);
@@ -7228,14 +7779,14 @@ create_dialog (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (dialog_window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (dialog_window),
-                          "response",
-                          GTK_SIGNAL_FUNC (print_response),
-                          NULL);
+      g_signal_connect (dialog_window,
+                        "response",
+                        G_CALLBACK (print_response),
+                        NULL);
       
-      gtk_signal_connect (GTK_OBJECT (dialog_window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &dialog_window);
+      g_signal_connect (dialog_window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &dialog_window);
 
       gtk_window_set_title (GTK_WINDOW (dialog_window), "GtkDialog");
       gtk_container_set_border_width (GTK_CONTAINER (dialog_window), 0);
@@ -7248,9 +7799,9 @@ create_dialog (GtkWidget *widget)
       gtk_widget_show (button);
 
       button = gtk_button_new_with_label ("Toggle");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (label_toggle),
-                         &label);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (label_toggle),
+                       &label);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->action_area),
                          button, TRUE, TRUE, 0);
@@ -7305,7 +7856,7 @@ screen_display_check (GtkWidget *widget, ScreenDisplaySelection *data)
   if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data->radio_dpy)))
     {
       display_name = g_strdup (gtk_entry_get_text (data->entry));
-      display = gdk_open_display (display_name);
+      display = gdk_display_open (display_name);
       
       if (!display)
        {
@@ -7317,7 +7868,7 @@ screen_display_check (GtkWidget *widget, ScreenDisplaySelection *data)
                                           display_name);
          gtk_window_set_screen (GTK_WINDOW (dialog), current_screen);
          gtk_widget_show (dialog);
-         g_signal_connect (G_OBJECT (dialog), "response",
+         g_signal_connect (dialog, "response",
                            G_CALLBACK (gtk_widget_destroy),
                            NULL);
        }
@@ -7374,7 +7925,7 @@ create_display_screen (GtkWidget *widget)
                           "title",
                           "Screen or Display selection",
                           "border_width", 10, NULL);
-  g_signal_connect (G_OBJECT (window), "destroy", 
+  g_signal_connect (window, "destroy", 
                    G_CALLBACK (gtk_widget_destroy), NULL);
 
   vbox = gtk_vbox_new (FALSE, 3);
@@ -7430,9 +7981,9 @@ create_display_screen (GtkWidget *widget)
   scr_dpy_data->dialog_window = window;
   scr_dpy_data->valid_display_list = valid_display_list;
 
-  g_signal_connect (G_OBJECT (cancelb), "clicked", 
-                   G_CALLBACK (screen_display_destroy_diag), G_OBJECT (window));
-  g_signal_connect (G_OBJECT (applyb), "clicked", 
+  g_signal_connect (cancelb, "clicked", 
+                   G_CALLBACK (screen_display_destroy_diag), window);
+  g_signal_connect (applyb, "clicked", 
                    G_CALLBACK (screen_display_check), scr_dpy_data);
   gtk_widget_show_all (window);
 }
@@ -7449,8 +8000,8 @@ event_watcher (GSignalInvocationHint *ihint,
               gpointer               data)
 {
   g_print ("Watch: \"%s\" emitted for %s\n",
-          gtk_signal_name (ihint->signal_id),
-          gtk_type_name (GTK_OBJECT_TYPE (g_value_get_object (param_values + 0))));
+          g_signal_name (ihint->signal_id),
+          G_OBJECT_TYPE_NAME (g_value_get_object (param_values + 0)));
 
   return TRUE;
 }
@@ -7462,10 +8013,10 @@ event_watcher_down (void)
     {
       guint signal_id;
 
-      signal_id = gtk_signal_lookup ("enter_notify_event", GTK_TYPE_WIDGET);
+      signal_id = g_signal_lookup ("enter_notify_event", GTK_TYPE_WIDGET);
       g_signal_remove_emission_hook (signal_id, event_watcher_enter_id);
       event_watcher_enter_id = 0;
-      signal_id = gtk_signal_lookup ("leave_notify_event", GTK_TYPE_WIDGET);
+      signal_id = g_signal_lookup ("leave_notify_event", GTK_TYPE_WIDGET);
       g_signal_remove_emission_hook (signal_id, event_watcher_leave_id);
       event_watcher_leave_id = 0;
     }
@@ -7480,9 +8031,9 @@ event_watcher_toggle (void)
     {
       guint signal_id;
 
-      signal_id = gtk_signal_lookup ("enter_notify_event", GTK_TYPE_WIDGET);
+      signal_id = g_signal_lookup ("enter_notify_event", GTK_TYPE_WIDGET);
       event_watcher_enter_id = g_signal_add_emission_hook (signal_id, 0, event_watcher, NULL, NULL);
-      signal_id = gtk_signal_lookup ("leave_notify_event", GTK_TYPE_WIDGET);
+      signal_id = g_signal_lookup ("leave_notify_event", GTK_TYPE_WIDGET);
       event_watcher_leave_id = g_signal_add_emission_hook (signal_id, 0, event_watcher, NULL, NULL);
     }
 }
@@ -7498,31 +8049,30 @@ create_event_watcher (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (dialog_window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (dialog_window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &dialog_window);
-      gtk_signal_connect (GTK_OBJECT (dialog_window),
-                         "destroy",
-                         GTK_SIGNAL_FUNC (event_watcher_down),
-                         NULL);
+      g_signal_connect (dialog_window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &dialog_window);
+      g_signal_connect (dialog_window, "destroy",
+                       G_CALLBACK (event_watcher_down),
+                       NULL);
 
       gtk_window_set_title (GTK_WINDOW (dialog_window), "Event Watcher");
       gtk_container_set_border_width (GTK_CONTAINER (dialog_window), 0);
-      gtk_widget_set_usize (dialog_window, 200, 110);
+      gtk_widget_set_size_request (dialog_window, 200, 110);
 
       button = gtk_toggle_button_new_with_label ("Activate Watch");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (event_watcher_toggle),
-                         NULL);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (event_watcher_toggle),
+                       NULL);
       gtk_container_set_border_width (GTK_CONTAINER (button), 10);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->vbox), 
                          button, TRUE, TRUE, 0);
       gtk_widget_show (button);
 
       button = gtk_button_new_with_label ("Close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                (GtkObject*) dialog_window);
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               dialog_window);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog_window)->action_area),
                          button, TRUE, TRUE, 0);
@@ -7568,9 +8118,9 @@ create_range_controls (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "range controls");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -7590,7 +8140,7 @@ create_range_controls (GtkWidget *widget)
       adjustment = gtk_adjustment_new (0.0, 0.0, 101.0, 0.1, 1.0, 1.0);
 
       scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
-      gtk_widget_set_usize (GTK_WIDGET (scale), 150, -1);
+      gtk_widget_set_size_request (GTK_WIDGET (scale), 150, -1);
       gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
       gtk_scale_set_digits (GTK_SCALE (scale), 1);
       gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
@@ -7605,24 +8155,24 @@ create_range_controls (GtkWidget *widget)
 
       scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
       gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
-      gtk_signal_connect (GTK_OBJECT (scale),
-                          "format_value",
-                          GTK_SIGNAL_FUNC (reformat_value),
-                          NULL);
+      g_signal_connect (scale,
+                        "format_value",
+                        G_CALLBACK (reformat_value),
+                        NULL);
       gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
       gtk_widget_show (scale);
       
       hbox = gtk_hbox_new (FALSE, 0);
 
       scale = gtk_vscale_new (GTK_ADJUSTMENT (adjustment));
-      gtk_widget_set_usize (scale, -1, 200);
+      gtk_widget_set_size_request (scale, -1, 200);
       gtk_scale_set_digits (GTK_SCALE (scale), 2);
       gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
       gtk_box_pack_start (GTK_BOX (hbox), scale, TRUE, TRUE, 0);
       gtk_widget_show (scale);
 
       scale = gtk_vscale_new (GTK_ADJUSTMENT (adjustment));
-      gtk_widget_set_usize (scale, -1, 200);
+      gtk_widget_set_size_request (scale, -1, 200);
       gtk_scale_set_digits (GTK_SCALE (scale), 2);
       gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
       gtk_range_set_inverted (GTK_RANGE (scale), TRUE);
@@ -7631,10 +8181,10 @@ create_range_controls (GtkWidget *widget)
 
       scale = gtk_vscale_new (GTK_ADJUSTMENT (adjustment));
       gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE);
-      gtk_signal_connect (GTK_OBJECT (scale),
-                          "format_value",
-                          GTK_SIGNAL_FUNC (reformat_value),
-                          NULL);
+      g_signal_connect (scale,
+                        "format_value",
+                        G_CALLBACK (reformat_value),
+                        NULL);
       gtk_box_pack_start (GTK_BOX (hbox), scale, TRUE, TRUE, 0);
       gtk_widget_show (scale);
 
@@ -7654,9 +8204,9 @@ create_range_controls (GtkWidget *widget)
 
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -7687,14 +8237,14 @@ create_rulers (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE);
+      g_object_set (window, "allow_shrink", TRUE, "allow_grow", TRUE, NULL);
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "rulers");
-      gtk_widget_set_usize (window, 300, 300);
+      gtk_widget_set_size_request (window, 300, 300);
       gtk_widget_set_events (window, 
                             GDK_POINTER_MOTION_MASK 
                             | GDK_POINTER_MOTION_HINT_MASK);
@@ -7708,10 +8258,10 @@ create_rulers (GtkWidget *widget)
       gtk_ruler_set_metric (GTK_RULER (ruler), GTK_CENTIMETERS);
       gtk_ruler_set_range (GTK_RULER (ruler), 100, 0, 0, 20);
 
-      gtk_signal_connect_object (GTK_OBJECT (window)
-                                "motion_notify_event",
-                                GTK_SIGNAL_FUNC (GTK_WIDGET_GET_CLASS (ruler)->motion_notify_event),
-                                GTK_OBJECT (ruler));
+      g_signal_connect_swapped (window
+                               "motion_notify_event",
+                               G_CALLBACK (GTK_WIDGET_GET_CLASS (ruler)->motion_notify_event),
+                               ruler);
       
       gtk_table_attach (GTK_TABLE (table), ruler, 1, 2, 0, 1,
                        GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
@@ -7721,10 +8271,10 @@ create_rulers (GtkWidget *widget)
       ruler = gtk_vruler_new ();
       gtk_ruler_set_range (GTK_RULER (ruler), 5, 15, 0, 20);
 
-      gtk_signal_connect_object (GTK_OBJECT (window)
-                                "motion_notify_event",
-                                GTK_SIGNAL_FUNC (GTK_WIDGET_GET_CLASS (ruler)->motion_notify_event),
-                                GTK_OBJECT (ruler));
+      g_signal_connect_swapped (window
+                               "motion_notify_event",
+                               G_CALLBACK (GTK_WIDGET_GET_CLASS (ruler)->motion_notify_event),
+                               ruler);
       
       gtk_table_attach (GTK_TABLE (table), ruler, 0, 1, 1, 2,
                        GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
@@ -7809,12 +8359,12 @@ create_text (GtkWidget *widget)
                             gtk_widget_get_screen (widget));
 
       gtk_widget_set_name (window, "text window");
-      gtk_widget_set_usize (window, 500, 500);
-      gtk_window_set_policy (GTK_WINDOW(window), TRUE, TRUE, FALSE);
+      g_object_set (window, "allow_shrink", TRUE, "allow_grow", TRUE, NULL);
+      gtk_widget_set_size_request (window, 500, 500);
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "test");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -7900,15 +8450,15 @@ create_text (GtkWidget *widget)
 
       check = gtk_check_button_new_with_label("Editable");
       gtk_box_pack_start (GTK_BOX (hbox), check, FALSE, FALSE, 0);
-      gtk_signal_connect (GTK_OBJECT(check), "toggled",
-                         GTK_SIGNAL_FUNC(text_toggle_editable), text);
+      g_signal_connect (check, "toggled",
+                       G_CALLBACK (text_toggle_editable), text);
       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), TRUE);
       gtk_widget_show (check);
 
       check = gtk_check_button_new_with_label("Wrap Words");
       gtk_box_pack_start (GTK_BOX (hbox), check, FALSE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT(check), "toggled",
-                         GTK_SIGNAL_FUNC(text_toggle_word_wrap), text);
+      g_signal_connect (check, "toggled",
+                       G_CALLBACK (text_toggle_word_wrap), text);
       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), FALSE);
       gtk_widget_show (check);
 
@@ -7924,16 +8474,16 @@ create_text (GtkWidget *widget)
 
 
       button = gtk_button_new_with_label ("insert random");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(text_insert_random),
-                         GTK_TEXT (text));
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (text_insert_random),
+                       text);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       gtk_widget_show (button);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -7962,10 +8512,10 @@ set_page_image (GtkNotebook *notebook, gint page_num, GdkPixbuf *pixbuf)
 
   page_widget = gtk_notebook_get_nth_page (notebook, page_num);
 
-  pixwid = gtk_object_get_data (GTK_OBJECT (page_widget), "tab_pixmap");
+  pixwid = g_object_get_data (G_OBJECT (page_widget), "tab_pixmap");
   gtk_image_set_from_pixbuf (GTK_IMAGE (pixwid), pixbuf);
   
-  pixwid = gtk_object_get_data (GTK_OBJECT (page_widget), "menu_pixmap");
+  pixwid = g_object_get_data (G_OBJECT (page_widget), "menu_pixmap");
   gtk_image_set_from_pixbuf (GTK_IMAGE (pixwid), pixbuf);
 }
 
@@ -8054,30 +8604,30 @@ create_pages (GtkNotebook *notebook, gint start, gint end)
       button = gtk_check_button_new_with_label ("Fill Tab");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 5);
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
-      gtk_signal_connect (GTK_OBJECT (button), "toggled",
-                         GTK_SIGNAL_FUNC (tab_fill), child);
+      g_signal_connect (button, "toggled",
+                       G_CALLBACK (tab_fill), child);
 
       button = gtk_check_button_new_with_label ("Expand Tab");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 5);
-      gtk_signal_connect (GTK_OBJECT (button), "toggled",
-      GTK_SIGNAL_FUNC (tab_expand), child);
+      g_signal_connect (button, "toggled",
+                       G_CALLBACK (tab_expand), child);
 
       button = gtk_check_button_new_with_label ("Pack end");
       gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 5);
-      gtk_signal_connect (GTK_OBJECT (button), "toggled",
-                         GTK_SIGNAL_FUNC (tab_pack), child);
+      g_signal_connect (button, "toggled",
+                       G_CALLBACK (tab_pack), child);
 
       button = gtk_button_new_with_label ("Hide Page");
       gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 5);
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_hide),
-                                GTK_OBJECT (child));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_hide),
+                               child);
 
       gtk_widget_show_all (child);
 
       label_box = gtk_hbox_new (FALSE, 0);
       pixwid = gtk_image_new_from_pixbuf (book_closed);
-      gtk_object_set_data (GTK_OBJECT (child), "tab_pixmap", pixwid);
+      g_object_set_data (G_OBJECT (child), "tab_pixmap", pixwid);
                           
       gtk_box_pack_start (GTK_BOX (label_box), pixwid, FALSE, TRUE, 0);
       gtk_misc_set_padding (GTK_MISC (pixwid), 3, 1);
@@ -8088,7 +8638,7 @@ create_pages (GtkNotebook *notebook, gint start, gint end)
                                       
       menu_box = gtk_hbox_new (FALSE, 0);
       pixwid = gtk_image_new_from_pixbuf (book_closed);
-      gtk_object_set_data (GTK_OBJECT (child), "menu_pixmap", pixwid);
+      g_object_set_data (G_OBJECT (child), "menu_pixmap", pixwid);
       
       gtk_box_pack_start (GTK_BOX (menu_box), pixwid, FALSE, TRUE, 0);
       gtk_misc_set_padding (GTK_MISC (pixwid), 3, 1);
@@ -8185,7 +8735,7 @@ static void
 notebook_homogeneous (GtkToggleButton *button,
                      GtkNotebook     *notebook)
 {
-  gtk_notebook_set_homogeneous_tabs (notebook, button->active);
+  g_object_set (notebook, "homogeneous", button->active, NULL);
 }
 
 static void
@@ -8213,9 +8763,9 @@ create_notebook (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "notebook");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -8224,8 +8774,8 @@ create_notebook (GtkWidget *widget)
       gtk_container_add (GTK_CONTAINER (window), box1);
 
       sample_notebook = gtk_notebook_new ();
-      gtk_signal_connect (GTK_OBJECT (sample_notebook), "switch_page",
-                         GTK_SIGNAL_FUNC (page_switch), NULL);
+      g_signal_connect (sample_notebook, "switch_page",
+                       G_CALLBACK (page_switch), NULL);
       gtk_notebook_set_tab_pos (GTK_NOTEBOOK (sample_notebook), GTK_POS_TOP);
       gtk_box_pack_start (GTK_BOX (box1), sample_notebook, TRUE, TRUE, 0);
       gtk_container_set_border_width (GTK_CONTAINER (sample_notebook), 10);
@@ -8249,15 +8799,15 @@ create_notebook (GtkWidget *widget)
 
       button = gtk_check_button_new_with_label ("popup menu");
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, FALSE, 0);
-      gtk_signal_connect (GTK_OBJECT(button), "clicked",
-                         GTK_SIGNAL_FUNC (notebook_popup),
-                         GTK_OBJECT (sample_notebook));
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (notebook_popup),
+                       sample_notebook);
 
       button = gtk_check_button_new_with_label ("homogeneous tabs");
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, FALSE, 0);
-      gtk_signal_connect (GTK_OBJECT(button), "clicked",
-                         GTK_SIGNAL_FUNC (notebook_homogeneous),
-                         GTK_OBJECT (sample_notebook));
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (notebook_homogeneous),
+                       sample_notebook);
 
       box2 = gtk_hbox_new (FALSE, 5);
       gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
@@ -8273,28 +8823,28 @@ create_notebook (GtkWidget *widget)
 
       button = gtk_button_new_with_label ("Show all Pages");
       gtk_box_pack_start (GTK_BOX (box2), button, FALSE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (show_all_pages), sample_notebook);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (show_all_pages), sample_notebook);
 
       box2 = gtk_hbox_new (TRUE, 10);
       gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
       gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
       button = gtk_button_new_with_label ("prev");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_notebook_prev_page),
-                                GTK_OBJECT (sample_notebook));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_notebook_prev_page),
+                               sample_notebook);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
 
       button = gtk_button_new_with_label ("next");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_notebook_next_page),
-                                GTK_OBJECT (sample_notebook));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_notebook_next_page),
+                               sample_notebook);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
 
       button = gtk_button_new_with_label ("rotate");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (rotate_notebook), sample_notebook);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (rotate_notebook), sample_notebook);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
 
       separator = gtk_hseparator_new ();
@@ -8302,9 +8852,9 @@ create_notebook (GtkWidget *widget)
 
       button = gtk_button_new_with_label ("close");
       gtk_container_set_border_width (GTK_CONTAINER (button), 5);
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_box_pack_start (GTK_BOX (box1), button, FALSE, FALSE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -8323,39 +8873,23 @@ create_notebook (GtkWidget *widget)
 void
 toggle_resize (GtkWidget *widget, GtkWidget *child)
 {
-  GtkPaned *paned = GTK_PANED (child->parent);
-  gboolean is_child1 = (child == paned->child1);
-  gboolean resize, shrink;
-
-  resize = is_child1 ? paned->child1_resize : paned->child2_resize;
-  shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
-
-  gtk_widget_ref (child);
-  gtk_container_remove (GTK_CONTAINER (child->parent), child);
-  if (is_child1)
-    gtk_paned_pack1 (paned, child, !resize, shrink);
-  else
-    gtk_paned_pack2 (paned, child, !resize, shrink);
-  gtk_widget_unref (child);
+  GtkContainer *container = GTK_CONTAINER (gtk_widget_get_parent (child));
+  GValue value = { 0, };
+  g_value_init (&value, G_TYPE_BOOLEAN);
+  gtk_container_child_get_property (container, child, "resize", &value);
+  g_value_set_boolean (&value, !g_value_get_boolean (&value));
+  gtk_container_child_set_property (container, child, "resize", &value);
 }
 
 void
 toggle_shrink (GtkWidget *widget, GtkWidget *child)
 {
-  GtkPaned *paned = GTK_PANED (child->parent);
-  gboolean is_child1 = (child == paned->child1);
-  gboolean resize, shrink;
-
-  resize = is_child1 ? paned->child1_resize : paned->child2_resize;
-  shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
-
-  gtk_widget_ref (child);
-  gtk_container_remove (GTK_CONTAINER (child->parent), child);
-  if (is_child1)
-    gtk_paned_pack1 (paned, child, resize, !shrink);
-  else
-    gtk_paned_pack2 (paned, child, resize, !shrink);
-  gtk_widget_unref (child);
+  GtkContainer *container = GTK_CONTAINER (gtk_widget_get_parent (child));
+  GValue value = { 0, };
+  g_value_init (&value, G_TYPE_BOOLEAN);
+  gtk_container_child_get_property (container, child, "shrink", &value);
+  g_value_set_boolean (&value, !g_value_get_boolean (&value));
+  gtk_container_child_set_property (container, child, "shrink", &value);
 }
 
 static void
@@ -8392,18 +8926,18 @@ create_pane_options (GtkPaned    *paned,
   check_button = gtk_check_button_new_with_label ("Resize");
   gtk_table_attach_defaults (GTK_TABLE (table), check_button,
                             0, 1, 1, 2);
-  gtk_signal_connect (GTK_OBJECT (check_button), "toggled",
-                     GTK_SIGNAL_FUNC (toggle_resize),
-                     paned->child1);
+  g_signal_connect (check_button, "toggled",
+                   G_CALLBACK (toggle_resize),
+                   paned->child1);
   
   check_button = gtk_check_button_new_with_label ("Shrink");
   gtk_table_attach_defaults (GTK_TABLE (table), check_button,
                             0, 1, 2, 3);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
                               TRUE);
-  gtk_signal_connect (GTK_OBJECT (check_button), "toggled",
-                     GTK_SIGNAL_FUNC (toggle_shrink),
-                     paned->child1);
+  g_signal_connect (check_button, "toggled",
+                   G_CALLBACK (toggle_shrink),
+                   paned->child1);
   
   label = gtk_label_new (label2);
   gtk_table_attach_defaults (GTK_TABLE (table), label,
@@ -8414,25 +8948,25 @@ create_pane_options (GtkPaned    *paned,
                             1, 2, 1, 2);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
                               TRUE);
-  gtk_signal_connect (GTK_OBJECT (check_button), "toggled",
-                     GTK_SIGNAL_FUNC (toggle_resize),
-                     paned->child2);
+  g_signal_connect (check_button, "toggled",
+                   G_CALLBACK (toggle_resize),
+                   paned->child2);
   
   check_button = gtk_check_button_new_with_label ("Shrink");
   gtk_table_attach_defaults (GTK_TABLE (table), check_button,
                             1, 2, 2, 3);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
                               TRUE);
-  gtk_signal_connect (GTK_OBJECT (check_button), "toggled",
-                     GTK_SIGNAL_FUNC (toggle_shrink),
-                     paned->child2);
+  g_signal_connect (check_button, "toggled",
+                   G_CALLBACK (toggle_shrink),
+                   paned->child2);
 
   button = gtk_button_new_with_mnemonic ("_Properties");
   gtk_table_attach_defaults (GTK_TABLE (table), button,
                             0, 2, 3, 4);
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                     GTK_SIGNAL_FUNC (paned_props_clicked),
-                     paned);
+  g_signal_connect (button, "clicked",
+                   G_CALLBACK (paned_props_clicked),
+                   paned);
 
   return frame;
 }
@@ -8454,9 +8988,9 @@ create_panes (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
       
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Panes");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -8473,7 +9007,7 @@ create_panes (GtkWidget *widget)
 
       frame = gtk_frame_new (NULL);
       gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
-      gtk_widget_set_usize (frame, 60, 60);
+      gtk_widget_set_size_request (frame, 60, 60);
       gtk_paned_add1 (GTK_PANED (hpaned), frame);
       
       button = gtk_button_new_with_label ("Hi there");
@@ -8481,12 +9015,12 @@ create_panes (GtkWidget *widget)
 
       frame = gtk_frame_new (NULL);
       gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
-      gtk_widget_set_usize (frame, 80, 60);
+      gtk_widget_set_size_request (frame, 80, 60);
       gtk_paned_add2 (GTK_PANED (hpaned), frame);
 
       frame = gtk_frame_new (NULL);
       gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
-      gtk_widget_set_usize (frame, 60, 80);
+      gtk_widget_set_size_request (frame, 60, 80);
       gtk_paned_add2 (GTK_PANED (vpaned), frame);
 
       /* Now create toggle buttons to control sizing */
@@ -8696,7 +9230,7 @@ paned_keyboard_window3 (GtkWidget *widget)
   GtkWidget *button17;
 
   window3 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_object_set_data (GTK_OBJECT (window3), "window3", window3);
+  g_object_set_data (G_OBJECT (window3), "window3", window3);
   gtk_window_set_title (GTK_WINDOW (window3), "Nested panes");
 
   gtk_window_set_screen (GTK_WINDOW (window3), 
@@ -8771,7 +9305,7 @@ paned_keyboard_window4 (GtkWidget *widget)
   GtkWidget *button24;
 
   window4 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_object_set_data (GTK_OBJECT (window4), "window4", window4);
+  g_object_set_data (G_OBJECT (window4), "window4", window4);
   gtk_window_set_title (GTK_WINDOW (window4), "window4");
 
   gtk_window_set_screen (GTK_WINDOW (window4), 
@@ -8849,33 +9383,33 @@ create_paned_keyboard_navigation (GtkWidget *widget)
   if (!window1)
     {
       window1 = paned_keyboard_window1 (widget);
-      gtk_signal_connect (GTK_OBJECT (window1), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window1);
+      g_signal_connect (window1, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window1);
     }
 
   if (!window2)
     {
       window2 = paned_keyboard_window2 (widget);
-      gtk_signal_connect (GTK_OBJECT (window2), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window2);
+      g_signal_connect (window2, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window2);
     }
 
   if (!window3)
     {
       window3 = paned_keyboard_window3 (widget);
-      gtk_signal_connect (GTK_OBJECT (window3), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window3);
+      g_signal_connect (window3, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window3);
     }
 
   if (!window4)
     {
       window4 = paned_keyboard_window4 (widget);
-      gtk_signal_connect (GTK_OBJECT (window4), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window4);
+      g_signal_connect (window4, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window4);
     }
 
   if (GTK_WIDGET_VISIBLE (window1))
@@ -8915,7 +9449,7 @@ shape_pressed (GtkWidget *widget, GdkEventButton *event)
   if (event->type != GDK_BUTTON_PRESS)
     return;
 
-  p = gtk_object_get_user_data (GTK_OBJECT(widget));
+  p = g_object_get_data (G_OBJECT (widget), "cursor_offset");
   p->x = (int) event->x;
   p->y = (int) event->y;
 
@@ -8943,7 +9477,7 @@ shape_motion (GtkWidget      *widget,
   CursorOffset * p;
   GdkModifierType mask;
 
-  p = gtk_object_get_user_data (GTK_OBJECT (widget));
+  p = g_object_get_data (G_OBJECT (widget), "cursor_offset");
 
   /*
    * Can't use event->x / event->y here 
@@ -8981,7 +9515,7 @@ shape_create_icon (GdkScreen *screen,
   gtk_window_set_screen (GTK_WINDOW (window), screen);
   
   fixed = gtk_fixed_new ();
-  gtk_widget_set_usize (fixed, 100,100);
+  gtk_widget_set_size_request (fixed, 100, 100);
   gtk_container_add (GTK_CONTAINER (window), fixed);
   gtk_widget_show (fixed);
   
@@ -8996,24 +9530,24 @@ shape_create_icon (GdkScreen *screen,
                                           &style->bg[GTK_STATE_NORMAL],
                                           xpm_file);
 
-  pixmap = gtk_pixmap_new (gdk_pixmap, gdk_pixmap_mask);
+  pixmap = gtk_image_new_from_pixmap (gdk_pixmap, gdk_pixmap_mask);
   gtk_fixed_put (GTK_FIXED (fixed), pixmap, px,py);
   gtk_widget_show (pixmap);
   
   gtk_widget_shape_combine_mask (window, gdk_pixmap_mask, px, py);
   
-  gdk_drawable_unref (gdk_pixmap_mask);
-  gdk_drawable_unref (gdk_pixmap);
+  g_object_unref (gdk_pixmap_mask);
+  g_object_unref (gdk_pixmap);
 
-  gtk_signal_connect (GTK_OBJECT (window), "button_press_event",
-                     GTK_SIGNAL_FUNC (shape_pressed),NULL);
-  gtk_signal_connect (GTK_OBJECT (window), "button_release_event",
-                     GTK_SIGNAL_FUNC (shape_released),NULL);
-  gtk_signal_connect (GTK_OBJECT (window), "motion_notify_event",
-                     GTK_SIGNAL_FUNC (shape_motion),NULL);
+  g_signal_connect (window, "button_press_event",
+                   G_CALLBACK (shape_pressed), NULL);
+  g_signal_connect (window, "button_release_event",
+                   G_CALLBACK (shape_released), NULL);
+  g_signal_connect (window, "motion_notify_event",
+                   G_CALLBACK (shape_motion), NULL);
 
   icon_pos = g_new (CursorOffset, 1);
-  gtk_object_set_user_data(GTK_OBJECT(window), icon_pos);
+  g_object_set_data (G_OBJECT (window), "cursor_offset", icon_pos);
 
   gtk_widget_set_uposition (window, x, y);
   gtk_widget_show (window);
@@ -9042,9 +9576,9 @@ create_shapes (GtkWidget *widget)
       modeller = shape_create_icon (screen, "Modeller.xpm",
                                    440, 140, 0,0, GTK_WINDOW_POPUP);
 
-      gtk_signal_connect (GTK_OBJECT (modeller), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &modeller);
+      g_signal_connect (modeller, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &modeller);
     }
   else
     gtk_widget_destroy (modeller);
@@ -9054,9 +9588,9 @@ create_shapes (GtkWidget *widget)
       sheets = shape_create_icon (screen, "FilesQueue.xpm",
                                  580, 170, 0,0, GTK_WINDOW_POPUP);
 
-      gtk_signal_connect (GTK_OBJECT (sheets), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &sheets);
+      g_signal_connect (sheets, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &sheets);
 
     }
   else
@@ -9067,9 +9601,9 @@ create_shapes (GtkWidget *widget)
       rings = shape_create_icon (screen, "3DRings.xpm",
                                 460, 270, 25,25, GTK_WINDOW_TOPLEVEL);
 
-      gtk_signal_connect (GTK_OBJECT (rings), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &rings);
+      g_signal_connect (rings, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &rings);
     }
   else
     gtk_widget_destroy (rings);
@@ -9084,9 +9618,9 @@ create_shapes (GtkWidget *widget)
 
       gtk_window_set_decorated (GTK_WINDOW (with_region), FALSE);
       
-      gtk_signal_connect (GTK_OBJECT (with_region), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &with_region);
+      g_signal_connect (with_region, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &with_region);
 
       /* reset shape from mask to a region */
       x = 0;
@@ -9142,9 +9676,9 @@ create_wmhints (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
       
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "WM Hints");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -9168,7 +9702,7 @@ create_wmhints (GtkWidget *widget)
       gtk_widget_show (box1);
 
       label = gtk_label_new ("Try iconizing me!");
-      gtk_widget_set_usize (label, 150, 50);
+      gtk_widget_set_size_request (label, 150, 50);
       gtk_box_pack_start (GTK_BOX (box1), label, TRUE, TRUE, 0);
       gtk_widget_show (label);
 
@@ -9186,9 +9720,9 @@ create_wmhints (GtkWidget *widget)
 
       button = gtk_button_new_with_label ("close");
 
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
 
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
@@ -9223,7 +9757,13 @@ window_state_callback (GtkWidget *widget,
                      (event->new_window_state & GDK_WINDOW_STATE_STICKY) ?
                      "sticky" : "not sticky", ", ",
                      (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) ?
-                     "maximized" : "not maximized",
+                     "maximized" : "not maximized", ", ",
+                     (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) ?
+                     "fullscreen" : "not fullscreen",
+                     (event->new_window_state & GDK_WINDOW_STATE_ABOVE) ?
+                     "above" : "not above", ", ",
+                     (event->new_window_state & GDK_WINDOW_STATE_BELOW) ?
+                     "below" : "not below", ", ",
                      NULL);
   
   gtk_label_set_text (GTK_LABEL (label), msg);
@@ -9242,46 +9782,67 @@ tracking_label (GtkWidget *window)
 
   hbox = gtk_hbox_new (FALSE, 5);
 
-  gtk_signal_connect_object (GTK_OBJECT (hbox),
-                             "destroy",
-                             GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (hbox,
+                          "destroy",
+                          G_CALLBACK (gtk_widget_destroy),
+                          window,
+                          G_CONNECT_SWAPPED);
   
   label = gtk_label_new ("<no window state events received>");
   gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
   
-  gtk_signal_connect (GTK_OBJECT (window),
-                      "window_state_event",
-                      GTK_SIGNAL_FUNC (window_state_callback),
-                      label);
+  g_signal_connect (window,
+                   "window_state_event",
+                   G_CALLBACK (window_state_callback),
+                   label);
 
   button = gtk_button_new_with_label ("Deiconify");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_deiconify),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_deiconify),
+                           window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Iconify");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_iconify),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_iconify),
+                           window,
+                          G_CONNECT_SWAPPED);
+  gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+
+  button = gtk_button_new_with_label ("Fullscreen");
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_fullscreen),
+                           window,
+                          G_CONNECT_SWAPPED);
+  gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+
+  button = gtk_button_new_with_label ("Unfullscreen");
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_unfullscreen),
+                           window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
   
   button = gtk_button_new_with_label ("Present");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_present),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_present),
+                           window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Show");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_widget_show),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_widget_show),
+                           window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
   
   gtk_widget_show_all (hbox);
@@ -9289,54 +9850,120 @@ tracking_label (GtkWidget *window)
   return hbox;
 }
 
+void
+keep_window_above (GtkToggleButton *togglebutton, gpointer data)
+{
+  GtkWidget *button = g_object_get_data (G_OBJECT (togglebutton), "radio");
+
+  gtk_window_set_keep_above (GTK_WINDOW (data),
+                             gtk_toggle_button_get_active (togglebutton));
+
+  if (gtk_toggle_button_get_active (togglebutton))
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
+}
+
+void
+keep_window_below (GtkToggleButton *togglebutton, gpointer data)
+{
+  GtkWidget *button = g_object_get_data (G_OBJECT (togglebutton), "radio");
+
+  gtk_window_set_keep_below (GTK_WINDOW (data),
+                             gtk_toggle_button_get_active (togglebutton));
+
+  if (gtk_toggle_button_get_active (togglebutton))
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
+}
+
+
 static GtkWidget*
 get_state_controls (GtkWidget *window)
 {
   GtkWidget *vbox;
   GtkWidget *button;
+  GtkWidget *button_above;
+  GtkWidget *button_below;
 
   vbox = gtk_vbox_new (FALSE, 0);
   
   button = gtk_button_new_with_label ("Stick");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_stick),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_stick),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Unstick");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_unstick),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_unstick),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
   button = gtk_button_new_with_label ("Maximize");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_maximize),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_maximize),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Unmaximize");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_unmaximize),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_unmaximize),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Iconify");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_iconify),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_iconify),
+                          window,
+                          G_CONNECT_SWAPPED);
+  gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+
+  button = gtk_button_new_with_label ("Fullscreen");
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_fullscreen),
+                           window,
+                          G_CONNECT_SWAPPED);
+  gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+
+  button = gtk_button_new_with_label ("Unfullscreen");
+  g_signal_connect_object (button,
+                          "clicked",
+                           G_CALLBACK (gtk_window_unfullscreen),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
+  button_above = gtk_toggle_button_new_with_label ("Keep above");
+  g_signal_connect (button_above,
+                   "toggled",
+                   G_CALLBACK (keep_window_above),
+                   window);
+  gtk_box_pack_start (GTK_BOX (vbox), button_above, FALSE, FALSE, 0);
+
+  button_below = gtk_toggle_button_new_with_label ("Keep below");
+  g_signal_connect (button_below,
+                   "toggled",
+                   G_CALLBACK (keep_window_below),
+                   window);
+  gtk_box_pack_start (GTK_BOX (vbox), button_below, FALSE, FALSE, 0);
+
+  g_object_set_data (G_OBJECT (button_above), "radio", button_below);
+  g_object_set_data (G_OBJECT (button_below), "radio", button_above);
+
   button = gtk_button_new_with_label ("Hide (withdraw)");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_widget_hide),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_widget_hide),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
   gtk_widget_show_all (vbox);
@@ -9360,9 +9987,9 @@ create_window_states (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Window states");
       
@@ -9374,9 +10001,10 @@ create_window_states (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (iconified),
                             gtk_widget_get_screen (widget));
       
-      gtk_signal_connect_object (GTK_OBJECT (iconified), "destroy",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_object (iconified, "destroy",
+                              G_CALLBACK (gtk_widget_destroy),
+                              window,
+                              G_CONNECT_SWAPPED);
       gtk_window_iconify (GTK_WINDOW (iconified));
       gtk_window_set_title (GTK_WINDOW (iconified), "Iconified initially");
       controls = get_state_controls (iconified);
@@ -9387,9 +10015,10 @@ create_window_states (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (normal),
                             gtk_widget_get_screen (widget));
       
-      gtk_signal_connect_object (GTK_OBJECT (normal), "destroy",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_object (normal, "destroy",
+                              G_CALLBACK (gtk_widget_destroy),
+                              window,
+                              G_CONNECT_SWAPPED);
       
       gtk_window_set_title (GTK_WINDOW (normal), "Deiconified initially");
       controls = get_state_controls (normal);
@@ -9486,16 +10115,16 @@ set_default_size_callback (GtkWidget *widget,
 }
 
 static void
-unset_usize_callback (GtkWidget *widget,
-                      gpointer   data)
+unset_size_request_callback (GtkWidget *widget,
+                            gpointer   data)
 {
   gtk_widget_set_size_request (g_object_get_data (data, "target"),
                                -1, -1);
 }
 
 static void
-set_usize_callback (GtkWidget *widget,
-                    gpointer   data)
+set_size_request_callback (GtkWidget *widget,
+                          gpointer   data)
 {
   gint w, h;
   
@@ -9551,7 +10180,7 @@ static void
 allow_shrink_callback (GtkWidget *widget,
                        gpointer   data)
 {
-  g_object_set (G_OBJECT (g_object_get_data (data, "target")),
+  g_object_set (g_object_get_data (data, "target"),
                 "allow_shrink",
                 GTK_TOGGLE_BUTTON (widget)->active,
                 NULL);
@@ -9561,22 +10190,12 @@ static void
 allow_grow_callback (GtkWidget *widget,
                      gpointer   data)
 {
-  g_object_set (G_OBJECT (g_object_get_data (data, "target")),
+  g_object_set (g_object_get_data (data, "target"),
                 "allow_grow",
                 GTK_TOGGLE_BUTTON (widget)->active,
                 NULL);
 }
 
-static void
-auto_shrink_callback (GtkWidget *widget,
-                      gpointer   data)
-{
-  g_object_set (G_OBJECT (g_object_get_data (data, "target")),
-                "auto_shrink",
-                GTK_TOGGLE_BUTTON (widget)->active,
-                NULL);
-}
-
 static void
 gravity_selected (GtkWidget *widget,
                   gpointer   data)
@@ -9713,15 +10332,16 @@ make_gravity_window (GtkWidget   *destroy_with,
   gtk_window_set_title (GTK_WINDOW (window), title);
   gtk_window_set_gravity (GTK_WINDOW (window), gravity);
 
-  gtk_signal_connect_object (GTK_OBJECT (destroy_with),
-                             "destroy",
-                             GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (destroy_with,
+                          "destroy",
+                          G_CALLBACK (gtk_widget_destroy),
+                          window,
+                          G_CONNECT_SWAPPED);
 
   
   button = gtk_button_new_with_mnemonic ("_Move to current position");
 
-  g_signal_connect (G_OBJECT (button), "clicked",
+  g_signal_connect (button, "clicked",
                     G_CALLBACK (move_gravity_window_to_current_position),
                     window);
 
@@ -9730,7 +10350,7 @@ make_gravity_window (GtkWidget   *destroy_with,
 
   button = gtk_button_new_with_mnemonic ("Move to _starting position");
 
-  g_signal_connect (G_OBJECT (button), "clicked",
+  g_signal_connect (button, "clicked",
                     G_CALLBACK (move_gravity_window_to_starting_position),
                     window);
 
@@ -9834,10 +10454,11 @@ window_controls (GtkWidget *window)
                      "target",
                      window);
   
-  gtk_signal_connect_object (GTK_OBJECT (control_window),
-                             "destroy",
-                             GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (control_window,
+                          "destroy",
+                          G_CALLBACK (gtk_widget_destroy),
+                           window,
+                          G_CONNECT_SWAPPED);
 
   vbox = gtk_vbox_new (FALSE, 5);
   
@@ -9846,10 +10467,10 @@ window_controls (GtkWidget *window)
   label = gtk_label_new ("<no configure events>");
   gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
   
-  gtk_signal_connect (GTK_OBJECT (window),
-                      "configure_event",
-                      GTK_SIGNAL_FUNC (configure_event_callback),
-                      label);
+  g_signal_connect (window,
+                   "configure_event",
+                   G_CALLBACK (configure_event_callback),
+                   label);
 
   adj = (GtkAdjustment *) gtk_adjustment_new (10.0, -2000.0, 2000.0, 1.0,
                                               5.0, 0.0);
@@ -9870,116 +10491,112 @@ window_controls (GtkWidget *window)
   entry = gtk_entry_new ();
   gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0);
 
-  gtk_signal_connect (GTK_OBJECT (entry), "changed",
-                      GTK_SIGNAL_FUNC (set_geometry_callback),
-                      control_window);
+  g_signal_connect (entry, "changed",
+                   G_CALLBACK (set_geometry_callback),
+                   control_window);
 
   button = gtk_button_new_with_label ("Show gravity test windows");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (do_gravity_test),
-                             control_window);
+  g_signal_connect_swapped (button,
+                           "clicked",
+                           G_CALLBACK (do_gravity_test),
+                           control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Reshow with initial size");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_window_reshow_with_initial_size),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_window_reshow_with_initial_size),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
   button = gtk_button_new_with_label ("Queue resize");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_widget_queue_resize),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_widget_queue_resize),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
   button = gtk_button_new_with_label ("Resize");
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "clicked",
-                      GTK_SIGNAL_FUNC (set_size_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "clicked",
+                   G_CALLBACK (set_size_callback),
+                   control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Set default size");
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "clicked",
-                      GTK_SIGNAL_FUNC (set_default_size_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "clicked",
+                   G_CALLBACK (set_default_size_callback),
+                   control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Unset default size");
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "clicked",
-                      GTK_SIGNAL_FUNC (unset_default_size_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "clicked",
+                   G_CALLBACK (unset_default_size_callback),
+                    control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
   button = gtk_button_new_with_label ("Set size request");
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "clicked",
-                      GTK_SIGNAL_FUNC (set_usize_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "clicked",
+                   G_CALLBACK (set_size_request_callback),
+                   control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Unset size request");
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "clicked",
-                      GTK_SIGNAL_FUNC (unset_usize_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "clicked",
+                   G_CALLBACK (unset_size_request_callback),
+                    control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
   button = gtk_button_new_with_label ("Move");
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "clicked",
-                      GTK_SIGNAL_FUNC (set_location_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "clicked",
+                   G_CALLBACK (set_location_callback),
+                   control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_label ("Move to current position");
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "clicked",
-                      GTK_SIGNAL_FUNC (move_to_position_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "clicked",
+                   G_CALLBACK (move_to_position_callback),
+                   control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
   button = gtk_check_button_new_with_label ("Allow shrink");
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "toggled",
-                      GTK_SIGNAL_FUNC (allow_shrink_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "toggled",
+                   G_CALLBACK (allow_shrink_callback),
+                   control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_check_button_new_with_label ("Allow grow");
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "toggled",
-                      GTK_SIGNAL_FUNC (allow_grow_callback),
-                      GTK_OBJECT (control_window));
+  g_signal_connect (button,
+                   "toggled",
+                   G_CALLBACK (allow_grow_callback),
+                    control_window);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
-  button = gtk_check_button_new_with_label ("Auto shrink");
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
-  gtk_signal_connect (GTK_OBJECT (button),
-                      "toggled",
-                      GTK_SIGNAL_FUNC (auto_shrink_callback),
-                      GTK_OBJECT (control_window));
-  gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
-
   button = gtk_button_new_with_mnemonic ("_Show");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_widget_show),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_widget_show),
+                          window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
 
   button = gtk_button_new_with_mnemonic ("_Hide");
-  gtk_signal_connect_object (GTK_OBJECT (button),
-                             "clicked",
-                             GTK_SIGNAL_FUNC (gtk_widget_hide),
-                             GTK_OBJECT (window));
+  g_signal_connect_object (button,
+                          "clicked",
+                          G_CALLBACK (gtk_widget_hide),
+                           window,
+                          G_CONNECT_SWAPPED);
   gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0);
   
   menu = gtk_menu_new ();
@@ -10017,10 +10634,10 @@ window_controls (GtkWidget *window)
   gtk_option_menu_set_menu (GTK_OPTION_MENU (om), menu);
   
 
-  gtk_signal_connect (GTK_OBJECT (om),
-                      "changed",
-                      GTK_SIGNAL_FUNC (gravity_selected),
-                      control_window);
+  g_signal_connect (om,
+                   "changed",
+                   G_CALLBACK (gravity_selected),
+                   control_window);
 
   gtk_box_pack_end (GTK_BOX (vbox), om, FALSE, FALSE, 0);
 
@@ -10055,10 +10672,10 @@ window_controls (GtkWidget *window)
   gtk_option_menu_set_menu (GTK_OPTION_MENU (om), menu);
   
 
-  gtk_signal_connect (GTK_OBJECT (om),
-                      "changed",
-                      GTK_SIGNAL_FUNC (pos_selected),
-                      control_window);
+  g_signal_connect (om,
+                   "changed",
+                   G_CALLBACK (pos_selected),
+                   control_window);
 
   gtk_box_pack_end (GTK_BOX (vbox), om, FALSE, FALSE, 0);
   
@@ -10085,15 +10702,15 @@ create_window_sizing (GtkWidget *widget)
       gtk_container_add (GTK_CONTAINER (target_window), label);
       gtk_widget_show (label);
       
-      gtk_signal_connect (GTK_OBJECT (target_window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &target_window);
+      g_signal_connect (target_window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &target_window);
 
       window = window_controls (target_window);
       
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC (gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
       
       gtk_window_set_title (GTK_WINDOW (target_window), "Window to size");
     }
@@ -10246,10 +10863,8 @@ static void
 adjust_align (GtkAdjustment *adj, ProgressData *pdata)
 {
   gtk_progress_set_text_alignment (GTK_PROGRESS (pdata->pbar),
-        gtk_spin_button_get_value_as_float 
-                                  (GTK_SPIN_BUTTON (pdata->x_align_spin)),
-        gtk_spin_button_get_value_as_float
-                                  (GTK_SPIN_BUTTON (pdata->y_align_spin)));
+        gtk_spin_button_get_value (GTK_SPIN_BUTTON (pdata->x_align_spin)),
+        gtk_spin_button_get_value (GTK_SPIN_BUTTON (pdata->y_align_spin)));
 }
 
 static void
@@ -10309,11 +10924,11 @@ create_progress_bar (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (pdata->window),
                             gtk_widget_get_screen (widget));
 
-      gtk_window_set_policy (GTK_WINDOW (pdata->window), FALSE, FALSE, TRUE);
+      gtk_window_set_resizable (GTK_WINDOW (pdata->window), FALSE);
 
-      gtk_signal_connect (GTK_OBJECT (pdata->window), "destroy",
-                         GTK_SIGNAL_FUNC (destroy_progress),
-                         &pdata);
+      g_signal_connect (pdata->window, "destroy",
+                       G_CALLBACK (destroy_progress),
+                       &pdata);
 
       pdata->timer = 0;
 
@@ -10335,10 +10950,12 @@ create_progress_bar (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (vbox2), align, FALSE, FALSE, 5);
 
       adj = (GtkAdjustment *) gtk_adjustment_new (0, 1, 300, 0, 0, 0);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (progress_value_changed), pdata);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (progress_value_changed), pdata);
 
-      pdata->pbar = gtk_progress_bar_new_with_adjustment (adj);
+      pdata->pbar = gtk_widget_new (GTK_TYPE_PROGRESS_BAR,
+                                   "adjustment", adj,
+                                   NULL);
       gtk_progress_set_format_string (GTK_PROGRESS (pdata->pbar),
                                      "%v from [%l,%u] (=%p%%)");
       gtk_container_add (GTK_CONTAINER (align), pdata->pbar);
@@ -10379,9 +10996,9 @@ create_progress_bar (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (hbox), pdata->omenu1, TRUE, TRUE, 0);
       
       check = gtk_check_button_new_with_label ("Show text");
-      gtk_signal_connect (GTK_OBJECT (check), "clicked",
-                         GTK_SIGNAL_FUNC (toggle_show_text),
-                         pdata);
+      g_signal_connect (check, "clicked",
+                       G_CALLBACK (toggle_show_text),
+                       pdata);
       gtk_table_attach (GTK_TABLE (tab), check, 0, 1, 1, 2,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
                        5, 5);
@@ -10395,12 +11012,12 @@ create_progress_bar (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
 
       pdata->entry = gtk_entry_new ();
-      gtk_signal_connect (GTK_OBJECT (pdata->entry), "changed",
-                         GTK_SIGNAL_FUNC (entry_changed),
-                         pdata);
+      g_signal_connect (pdata->entry, "changed",
+                       G_CALLBACK (entry_changed),
+                       pdata);
       gtk_box_pack_start (GTK_BOX (hbox), pdata->entry, TRUE, TRUE, 0);
       gtk_entry_set_text (GTK_ENTRY (pdata->entry), "%v from [%l,%u] (=%p%%)");
-      gtk_widget_set_usize (pdata->entry, 100, -1);
+      gtk_widget_set_size_request (pdata->entry, 100, -1);
       gtk_widget_set_sensitive (pdata->entry, FALSE);
 
       label = gtk_label_new ("Text align :");
@@ -10419,8 +11036,8 @@ create_progress_bar (GtkWidget *widget)
       
       adj = (GtkAdjustment *) gtk_adjustment_new (0.5, 0, 1, 0.1, 0.1, 0);
       pdata->x_align_spin = gtk_spin_button_new (adj, 0, 1);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (adjust_align), pdata);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (adjust_align), pdata);
       gtk_box_pack_start (GTK_BOX (hbox), pdata->x_align_spin, FALSE, TRUE, 0);
       gtk_widget_set_sensitive (pdata->x_align_spin, FALSE);
 
@@ -10429,8 +11046,8 @@ create_progress_bar (GtkWidget *widget)
 
       adj = (GtkAdjustment *) gtk_adjustment_new (0.5, 0, 1, 0.1, 0.1, 0);
       pdata->y_align_spin = gtk_spin_button_new (adj, 0, 1);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (adjust_align), pdata);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (adjust_align), pdata);
       gtk_box_pack_start (GTK_BOX (hbox), pdata->y_align_spin, FALSE, TRUE, 0);
       gtk_widget_set_sensitive (pdata->y_align_spin, FALSE);
 
@@ -10461,15 +11078,14 @@ create_progress_bar (GtkWidget *widget)
                        5, 5);
       adj = (GtkAdjustment *) gtk_adjustment_new (10, 2, 20, 1, 5, 0);
       pdata->block_spin = gtk_spin_button_new (adj, 0, 0);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (adjust_blocks), pdata);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (adjust_blocks), pdata);
       gtk_box_pack_start (GTK_BOX (hbox), pdata->block_spin, FALSE, TRUE, 0);
       gtk_widget_set_sensitive (pdata->block_spin, FALSE);
 
       check = gtk_check_button_new_with_label ("Activity mode");
-      gtk_signal_connect (GTK_OBJECT (check), "clicked",
-                         GTK_SIGNAL_FUNC (toggle_activity_mode),
-                         pdata);
+      g_signal_connect (check, "clicked",
+                       G_CALLBACK (toggle_activity_mode), pdata);
       gtk_table_attach (GTK_TABLE (tab), check, 0, 1, 5, 6,
                        GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
                        5, 5);
@@ -10482,8 +11098,8 @@ create_progress_bar (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
       adj = (GtkAdjustment *) gtk_adjustment_new (3, 1, 20, 1, 5, 0);
       pdata->step_spin = gtk_spin_button_new (adj, 0, 0);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (adjust_step), pdata);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (adjust_step), pdata);
       gtk_box_pack_start (GTK_BOX (hbox), pdata->step_spin, FALSE, TRUE, 0);
       gtk_widget_set_sensitive (pdata->step_spin, FALSE);
 
@@ -10495,16 +11111,16 @@ create_progress_bar (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0);
       adj = (GtkAdjustment *) gtk_adjustment_new (5, 2, 10, 1, 5, 0);
       pdata->act_blocks_spin = gtk_spin_button_new (adj, 0, 0);
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (adjust_act_blocks), pdata);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (adjust_act_blocks), pdata);
       gtk_box_pack_start (GTK_BOX (hbox), pdata->act_blocks_spin, FALSE, TRUE,
                          0);
       gtk_widget_set_sensitive (pdata->act_blocks_spin, FALSE);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                GTK_OBJECT (pdata->window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               pdata->window);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (pdata->window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -10559,7 +11175,7 @@ find_widget (GtkWidget *widget, FindWidgetData *data)
       while (window != widget->parent->window)
        {
          gint tx, ty, twidth, theight;
-         gdk_window_get_size (window, &twidth, &theight);
+         gdk_drawable_get_size (window, &twidth, &theight);
 
          if (new_allocation.x < 0)
            {
@@ -10624,14 +11240,14 @@ find_widget (GtkWidget *widget, FindWidgetData *data)
 }
 
 static GtkWidget *
-find_widget_at_pointer (GdkScreen *screen)
+find_widget_at_pointer (GdkDisplay *display)
 {
   GtkWidget *widget = NULL;
   GdkWindow *pointer_window;
   gint x, y;
   FindWidgetData data;
  
- pointer_window = gdk_screen_get_window_at_pointer (screen, NULL, NULL);
+ pointer_window = gdk_display_get_window_at_pointer (display, NULL, NULL);
  
  if (pointer_window)
    gdk_window_get_user_data (pointer_window, (gpointer*) &widget);
@@ -10673,13 +11289,13 @@ destroy_properties (GtkWidget             *widget,
 
   if (data->cursor)
     {
-      gdk_cursor_destroy (data->cursor);
+      gdk_cursor_unref (data->cursor);
       data->cursor = NULL;
     }
 
   if (data->handler)
     {
-      gtk_signal_disconnect (widget, data->handler);
+      g_signal_handler_disconnect (widget, data->handler);
       data->handler = 0;
     }
 
@@ -10702,7 +11318,7 @@ property_query_event (GtkWidget        *widget,
       gdk_display_pointer_ungrab (gtk_widget_get_display (widget),
                                  GDK_CURRENT_TIME);
       
-      res_widget = find_widget_at_pointer (gtk_widget_get_screen (widget));
+      res_widget = find_widget_at_pointer (gtk_widget_get_display (widget));
       if (res_widget)
        {
          g_object_set_data (G_OBJECT (res_widget), "prop-editor-screen",
@@ -10722,13 +11338,13 @@ query_properties (GtkButton *button,
 {
   gint failure;
 
-  gtk_signal_connect (GTK_OBJECT (button), "event",
-                     (GtkSignalFunc) property_query_event, data);
+  g_signal_connect (button, "event",
+                   G_CALLBACK (property_query_event), data);
 
 
   if (!data->cursor)
-    data->cursor = gdk_cursor_new_for_screen (gtk_widget_get_screen (GTK_WIDGET (button)),
-                                             GDK_TARGET);
+    data->cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (button)),
+                                              GDK_TARGET);
   
   failure = gdk_pointer_grab (GTK_WIDGET (button)->window,
                              TRUE,
@@ -10764,9 +11380,9 @@ create_properties (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));      
 
-      data->handler = gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                                         GTK_SIGNAL_FUNC(destroy_properties),
-                                         data);
+      data->handler = g_signal_connect (window, "destroy",
+                                       G_CALLBACK (destroy_properties),
+                                       data);
 
       gtk_window_set_title (GTK_WINDOW (window), "test properties");
       gtk_container_set_border_width (GTK_CONTAINER (window), 10);
@@ -10779,9 +11395,9 @@ create_properties (GtkWidget *widget)
       
       button = gtk_button_new_with_label ("Query properties");
       gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(query_properties),
-                         data);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (query_properties),
+                       data);
     }
 
   if (!GTK_WIDGET_VISIBLE (window))
@@ -10820,7 +11436,8 @@ color_idle_func (GtkWidget *preview)
 
   count += 1;
 
-  gtk_widget_draw (preview, NULL);
+  gtk_widget_queue_draw (preview);
+  gdk_window_process_updates (preview->window, TRUE);
 
   return TRUE;
 }
@@ -10850,9 +11467,9 @@ create_color_preview (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(color_preview_destroy),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (color_preview_destroy),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "test");
       gtk_container_set_border_width (GTK_CONTAINER (window), 10);
@@ -10936,9 +11553,9 @@ create_gray_preview (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gray_preview_destroy),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gray_preview_destroy),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "test");
       gtk_container_set_border_width (GTK_CONTAINER (window), 10);
@@ -11048,9 +11665,9 @@ create_selection_test (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Selection Test");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -11070,29 +11687,29 @@ create_selection_test (GtkWidget *widget)
                                      GTK_POLICY_AUTOMATIC, 
                                      GTK_POLICY_AUTOMATIC);
       gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 0);
-      gtk_widget_set_usize (scrolled_win, 100, 200);
+      gtk_widget_set_size_request (scrolled_win, 100, 200);
 
       list = gtk_list_new ();
       gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_win), list);
 
-      gtk_signal_connect (GTK_OBJECT(list), "selection_received",
-                         GTK_SIGNAL_FUNC (selection_test_received), NULL);
+      g_signal_connect (list, "selection_received",
+                       G_CALLBACK (selection_test_received), NULL);
 
       /* .. And create some buttons */
       button = gtk_button_new_with_label ("Get Targets");
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
                          button, TRUE, TRUE, 0);
 
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC (selection_test_get_targets), list);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (selection_test_get_targets), list);
 
       button = gtk_button_new_with_label ("Quit");
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
                          button, TRUE, TRUE, 0);
 
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
     }
 
   if (!GTK_WIDGET_VISIBLE (window))
@@ -11123,9 +11740,9 @@ create_gamma_curve (GtkWidget *widget)
       gtk_window_set_title (GTK_WINDOW (window), "test");
       gtk_container_set_border_width (GTK_CONTAINER (window), 10);
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK(gtk_widget_destroyed),
+                       &window);
 
       curve = gtk_gamma_curve_new ();
       gtk_container_add (GTK_CONTAINER (window), curve);
@@ -11205,7 +11822,7 @@ scroll_test_configure (GtkWidget *widget, GdkEventConfigure *event,
   adj->page_increment = 0.9 * widget->allocation.height;
   adj->page_size = widget->allocation.height;
 
-  gtk_signal_emit_by_name (GTK_OBJECT (adj), "changed");
+  g_signal_emit_by_name (adj, "changed");
 }
 
 static void
@@ -11243,9 +11860,9 @@ create_scroll_test (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Scroll Test");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -11256,7 +11873,7 @@ create_scroll_test (GtkWidget *widget)
       gtk_widget_show (hbox);
 
       drawing_area = gtk_drawing_area_new ();
-      gtk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 200, 200);
+      gtk_widget_set_size_request (drawing_area, 200, 200);
       gtk_box_pack_start (GTK_BOX (hbox), drawing_area, TRUE, TRUE, 0);
       gtk_widget_show (drawing_area);
 
@@ -11269,16 +11886,16 @@ create_scroll_test (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (hbox), scrollbar, FALSE, FALSE, 0);
       gtk_widget_show (scrollbar);
 
-      gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
-                         GTK_SIGNAL_FUNC (scroll_test_expose), adj);
-      gtk_signal_connect (GTK_OBJECT (drawing_area), "configure_event",
-                         GTK_SIGNAL_FUNC (scroll_test_configure), adj);
-      gtk_signal_connect (GTK_OBJECT (drawing_area), "scroll_event",
-                         GTK_SIGNAL_FUNC (scroll_test_scroll), adj);
+      g_signal_connect (drawing_area, "expose_event",
+                       G_CALLBACK (scroll_test_expose), adj);
+      g_signal_connect (drawing_area, "configure_event",
+                       G_CALLBACK (scroll_test_configure), adj);
+      g_signal_connect (drawing_area, "scroll_event",
+                       G_CALLBACK (scroll_test_scroll), adj);
       
-      gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
-                         GTK_SIGNAL_FUNC (scroll_test_adjustment_changed),
-                         drawing_area);
+      g_signal_connect (adj, "value_changed",
+                       G_CALLBACK (scroll_test_adjustment_changed),
+                       drawing_area);
       
       /* .. And create some buttons */
 
@@ -11286,9 +11903,9 @@ create_scroll_test (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
                          button, TRUE, TRUE, 0);
 
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       gtk_widget_show (button);
 
       /* Set up gridded geometry */
@@ -11376,9 +11993,9 @@ create_timeout_test (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(destroy_timeout_test),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (destroy_timeout_test),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Timeout Test");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -11390,9 +12007,9 @@ create_timeout_test (GtkWidget *widget)
       gtk_widget_show (label);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -11400,18 +12017,18 @@ create_timeout_test (GtkWidget *widget)
       gtk_widget_show (button);
 
       button = gtk_button_new_with_label ("start");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(start_timeout_test),
-                         label);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK(start_timeout_test),
+                       label);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
       gtk_widget_show (button);
 
       button = gtk_button_new_with_label ("stop");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(stop_timeout_test),
-                         NULL);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (stop_timeout_test),
+                       NULL);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -11473,10 +12090,10 @@ destroy_idle_test (GtkWidget  *widget,
 }
 
 static void
-toggle_idle_container (GtkObject *button,
+toggle_idle_container (GObject *button,
                       GtkContainer *container)
 {
-  gtk_container_set_resize_mode (container, GPOINTER_TO_INT (gtk_object_get_user_data (button)));
+  gtk_container_set_resize_mode (container, GPOINTER_TO_INT (g_object_get_data (button, "user_data")));
 }
 
 static void
@@ -11498,9 +12115,9 @@ create_idle_test (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(destroy_idle_test),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (destroy_idle_test),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Idle Test");
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -11566,9 +12183,9 @@ create_idle_test (GtkWidget *widget)
                    NULL);
 
       button = gtk_button_new_with_label ("close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -11576,18 +12193,18 @@ create_idle_test (GtkWidget *widget)
       gtk_widget_show (button);
 
       button = gtk_button_new_with_label ("start");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(start_idle_test),
-                         label);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (start_idle_test),
+                       label);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
       gtk_widget_show (button);
 
       button = gtk_button_new_with_label ("stop");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(stop_idle_test),
-                         NULL);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (stop_idle_test),
+                       NULL);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -11609,17 +12226,19 @@ reload_all_rc_files (void)
 {
   static GdkAtom atom_rcfiles = GDK_NONE;
 
-  GdkEventClient sev;
+  GdkEvent *send_event = gdk_event_new (GDK_CLIENT_EVENT);
   int i;
   
   if (!atom_rcfiles)
     atom_rcfiles = gdk_atom_intern("_GTK_READ_RCFILES", FALSE);
 
   for(i = 0; i < 5; i++)
-    sev.data.l[i] = 0;
-  sev.data_format = 32;
-  sev.message_type = atom_rcfiles;
-  gdk_event_send_clientmessage_toall ((GdkEvent *) &sev);
+    send_event->client.data.l[i] = 0;
+  send_event->client.data_format = 32;
+  send_event->client.message_type = atom_rcfiles;
+  gdk_event_send_clientmessage_toall (send_event);
+
+  gdk_event_free (send_event);
 }
 
 void
@@ -11638,9 +12257,9 @@ create_rc_file (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(destroy_idle_test),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       frame = gtk_aspect_frame_new ("Testing RC file prioritization", 0.5, 0.5, 0.0, TRUE);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), frame, FALSE, FALSE, 0);
@@ -11664,24 +12283,24 @@ create_rc_file (GtkWidget *widget)
       gtk_container_set_border_width (GTK_CONTAINER (window), 0);
 
       button = gtk_button_new_with_label ("Reload");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(gtk_rc_reparse_all), NULL);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (gtk_rc_reparse_all), NULL);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
       gtk_widget_grab_default (button);
 
       button = gtk_button_new_with_label ("Reload All");
-      gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                         GTK_SIGNAL_FUNC(reload_all_rc_files), NULL);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (reload_all_rc_files), NULL);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
 
       button = gtk_button_new_with_label ("Close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -11720,9 +12339,9 @@ create_mainloop (GtkWidget *widget)
 
       gtk_window_set_title (GTK_WINDOW (window), "Test Main Loop");
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(mainloop_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (mainloop_destroyed),
+                       &window);
 
       label = gtk_label_new ("In recursive main loop...");
       gtk_misc_set_padding (GTK_MISC(label), 20, 20);
@@ -11735,9 +12354,9 @@ create_mainloop (GtkWidget *widget)
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), button, 
                          FALSE, TRUE, 0);
 
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC (gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
 
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_widget_grab_default (button);
@@ -11805,12 +12424,12 @@ void create_layout (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
 
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       gtk_window_set_title (GTK_WINDOW (window), "Layout");
-      gtk_widget_set_usize (window, 200, 200);
+      gtk_widget_set_size_request (window, 200, 200);
 
       scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow),
@@ -11830,8 +12449,8 @@ void create_layout (GtkWidget *widget)
       GTK_LAYOUT (layout)->vadjustment->step_increment = 10.0;
       
       gtk_widget_set_events (layout, GDK_EXPOSURE_MASK);
-      gtk_signal_connect (GTK_OBJECT (layout), "expose_event",
-                         GTK_SIGNAL_FUNC (layout_expose_handler), NULL);
+      g_signal_connect (layout, "expose_event",
+                       G_CALLBACK (layout_expose_handler), NULL);
       
       gtk_layout_set_size (GTK_LAYOUT (layout), 1600, 128000);
       
@@ -11890,15 +12509,15 @@ create_styles (GtkWidget *widget)
       gtk_window_set_screen (GTK_WINDOW (window),
                             gtk_widget_get_screen (widget));
      
-      gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                         GTK_SIGNAL_FUNC(gtk_widget_destroyed),
-                         &window);
+      g_signal_connect (window, "destroy",
+                       G_CALLBACK (gtk_widget_destroyed),
+                       &window);
 
       
       button = gtk_button_new_with_label ("Close");
-      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
-                                GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                GTK_OBJECT (window));
+      g_signal_connect_swapped (button, "clicked",
+                               G_CALLBACK (gtk_widget_destroy),
+                               window);
       GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
       gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), 
                          button, TRUE, TRUE, 0);
@@ -11976,7 +12595,7 @@ create_styles (GtkWidget *widget)
       gtk_widget_modify_style (button, rc_style);
       gtk_widget_modify_style (GTK_BIN (button)->child, rc_style);
 
-      g_object_unref (G_OBJECT (rc_style));
+      g_object_unref (rc_style);
       
       gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
     }
@@ -12000,11 +12619,16 @@ do_exit (GtkWidget *widget, GtkWidget *window)
 
 struct {
   char *label;
-  void (*func) ();
+  void (*func) (GtkWidget *widget);
   gboolean do_not_benchmark;
 } buttons[] =
 {
+#ifdef G_OS_WIN32
+  /* dog slow on NT, no working at all on 9x */
+  { "big windows", create_big_windows, TRUE },
+#else
   { "big windows", create_big_windows },
+#endif
   { "button box", create_button_box },
   { "buttons", create_buttons },
   { "check buttons", create_check_buttons },
@@ -12012,16 +12636,17 @@ struct {
   { "color selection", create_color_selection },
   { "ctree", create_ctree },
   { "cursors", create_cursors },
-  { "dialog", create_dialog },
-  { "display & screen", create_display_screen },
+  { "dialog", create_dialog, TRUE },
+  { "display & screen", create_display_screen, TRUE },
   { "entry", create_entry },
+  { "event box", create_event_box },
   { "event watcher", create_event_watcher },
   { "file selection", create_file_selection },
   { "flipping", create_flipping },
   { "focus", create_focus },
   { "font selection", create_font_selection },
   { "gamma curve", create_gamma_curve, TRUE },
-  { "gridded geometry", create_gridded_geometry, TRUE },
+  { "gridded geometry", create_gridded_geometry },
   { "handle box", create_handle_box },
   { "image from drawable", create_get_image },
   { "image", create_image },
@@ -12045,6 +12670,7 @@ struct {
   { "range controls", create_range_controls },
   { "rc file", create_rc_file },
   { "reparent", create_reparent },
+  { "resize grips", create_resize_grips },
   { "rulers", create_rulers },
   { "saved position", create_saved_position },
   { "scrolled windows", create_scrolled_windows },
@@ -12096,12 +12722,12 @@ create_main_window (void)
                                 &geometry,
                                 GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);
 
-  gtk_signal_connect (GTK_OBJECT (window), "destroy",
-                     GTK_SIGNAL_FUNC(gtk_main_quit),
-                     NULL);
-  gtk_signal_connect (GTK_OBJECT (window), "delete-event",
-                     GTK_SIGNAL_FUNC (gtk_false),
-                     NULL);
+  g_signal_connect (window, "destroy",
+                   G_CALLBACK (gtk_main_quit),
+                   NULL);
+  g_signal_connect (window, "delete-event",
+                   G_CALLBACK (gtk_false),
+                   NULL);
 
   box1 = gtk_vbox_new (FALSE, 0);
   gtk_container_add (GTK_CONTAINER (window), box1);
@@ -12140,10 +12766,10 @@ create_main_window (void)
     {
       button = gtk_button_new_with_label (buttons[i].label);
       if (buttons[i].func)
-        gtk_signal_connect (GTK_OBJECT (button)
-                           "clicked", 
-                           GTK_SIGNAL_FUNC(buttons[i].func),
-                           NULL);
+        g_signal_connect (button
+                         "clicked", 
+                         G_CALLBACK(buttons[i].func),
+                         NULL);
       else
         gtk_widget_set_sensitive (button, FALSE);
       gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
@@ -12157,9 +12783,9 @@ create_main_window (void)
   gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
 
   button = gtk_button_new_with_mnemonic ("_Close");
-  gtk_signal_connect (GTK_OBJECT (button), "clicked",
-                     GTK_SIGNAL_FUNC (do_exit),
-                     window);
+  g_signal_connect (button, "clicked",
+                   G_CALLBACK (do_exit),
+                   window);
   gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
   GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
   gtk_widget_grab_default (button);
@@ -12170,10 +12796,11 @@ create_main_window (void)
 static void
 test_init ()
 {
-  if (file_exists ("../gdk-pixbuf/libpixbufloader-pnm.la"))
+  if (g_file_test ("../gdk-pixbuf/libpixbufloader-pnm.la",
+                  G_FILE_TEST_EXISTS))
     {
-      putenv ("GDK_PIXBUF_MODULEDIR=../gdk-pixbuf");
-      putenv ("GTK_IM_MODULE_FILE=../modules/input/gtk.immodules");
+      g_setenv ("GDK_PIXBUF_MODULE_FILE", "../gdk-pixbuf/gdk-pixbuf.loaders", TRUE);
+      g_setenv ("GTK_IM_MODULE_FILE", "../modules/input/gtk.immodules", TRUE);
     }
 }
 
@@ -12195,16 +12822,16 @@ pad (const char *str, int to)
 }
 
 static void
-bench_iteration (void (* fn) ())
+bench_iteration (GtkWidget *widget, void (* fn) (GtkWidget *widget))
 {
-  fn (); /* on */
-  while (g_main_iteration (FALSE));
-  fn (); /* off */
-  while (g_main_iteration (FALSE));
+  fn (widget); /* on */
+  while (g_main_context_iteration (NULL, FALSE));
+  fn (widget); /* off */
+  while (g_main_context_iteration (NULL, FALSE));
 }
 
 void
-do_real_bench (void (* fn) (), char *name, int num)
+do_real_bench (GtkWidget *widget, void (* fn) (GtkWidget *widget), char *name, int num)
 {
   GTimeVal tv0, tv1;
   double dt_first;
@@ -12219,7 +12846,7 @@ do_real_bench (void (* fn) (), char *name, int num)
   }
 
   g_get_current_time (&tv0);
-  bench_iteration (fn); 
+  bench_iteration (widget, fn); 
   g_get_current_time (&tv1);
 
   dt_first = ((double)tv1.tv_sec - tv0.tv_sec) * 1000.0
@@ -12227,7 +12854,7 @@ do_real_bench (void (* fn) (), char *name, int num)
 
   g_get_current_time (&tv0);
   for (n = 0; n < num - 1; n++)
-    bench_iteration (fn); 
+    bench_iteration (widget, fn); 
   g_get_current_time (&tv1);
   dt = ((double)tv1.tv_sec - tv0.tv_sec) * 1000.0
        + (tv1.tv_usec - tv0.tv_usec) / 1000.0;
@@ -12243,15 +12870,17 @@ void
 do_bench (char* what, int num)
 {
   int i;
-  void (* fn) ();
+  GtkWidget *widget;
+  void (* fn) (GtkWidget *widget);
   fn = NULL;
+  widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 
-  if (g_strcasecmp (what, "ALL") == 0)
+  if (g_ascii_strcasecmp (what, "ALL") == 0)
     {
       for (i = 0; i < nbuttons; i++)
        {
          if (!buttons[i].do_not_benchmark)
-           do_real_bench (buttons[i].func, buttons[i].label, num);
+           do_real_bench (widget, buttons[i].func, buttons[i].label, num);
        }
 
       return;
@@ -12270,7 +12899,7 @@ do_bench (char* what, int num)
       if (!fn)
        g_print ("Can't bench: \"%s\" not found.\n", what);
       else
-       do_real_bench (fn, buttons[i].label, num);
+       do_real_bench (widget, fn, buttons[i].label, num);
     }
 }
 
@@ -12298,6 +12927,8 @@ main (int argc, char *argv[])
   if (file_exists ("testgtkrc"))
     gtk_rc_add_default_file ("testgtkrc");
 
+  g_set_application_name ("GTK+ Test Program");
+
   gtk_init (&argc, &argv);
 
   /*  benchmarking
@@ -12350,7 +12981,7 @@ main (int argc, char *argv[])
                                '9', GDK_CONTROL_MASK | GDK_RELEASE_MASK,
                                "debug_msg",
                                1,
-                               GTK_TYPE_STRING, "GtkWidgetClass <ctrl><release>9 test");
+                               G_TYPE_STRING, "GtkWidgetClass <ctrl><release>9 test");
   
   /* We use gtk_rc_parse_string() here so we can make sure it works across theme
    * changes
@@ -12368,12 +12999,12 @@ main (int argc, char *argv[])
 
   if (1)
     {
-      while (g_main_pending ())
-       g_main_iteration (FALSE);
+      while (g_main_context_pending (NULL))
+       g_main_context_iteration (NULL, FALSE);
 #if 0
       sleep (1);
-      while (g_main_pending ())
-       g_main_iteration (FALSE);
+      while (g_main_context_pending (NULL))
+       g_main_context_iteration (NULL, FALSE);
 #endif
     }
   return 0;