[Xfce4-commits] <exo:stephan/gtk3> More porting.

Nick Schermer noreply at xfce.org
Sat May 5 20:08:03 CEST 2012


Updating branch refs/heads/stephan/gtk3
         to d87dfbfb86eeda6d25f65354305002e2a38b513b (commit)
       from 34b853c61739c2c626020b80cb0db4307e74fb38 (commit)

commit d87dfbfb86eeda6d25f65354305002e2a38b513b
Author: Nick Schermer <nick at xfce.org>
Date:   Sat May 5 20:05:40 2012 +0200

    More porting.
    
    Get the stuff working for Thunar. Disabled the toolbar,
    wrap-table can probably be removed, possibly
    the same for icon bar.

 configure.in.in                                    |    2 +-
 exo-desktop-item-edit/exo-die-command-entry.c      |    2 +-
 exo-desktop-item-edit/exo-die-editor.c             |   12 +-
 exo-desktop-item-edit/main.c                       |   21 +-
 exo-helper/exo-helper-chooser-dialog.c             |    7 +-
 exo-helper/exo-helper-chooser.c                    |   59 ++--
 exo-helper/exo-helper-launcher-dialog.c            |    7 +-
 exo-helper/exo-helper.c                            |    2 +-
 .../{exo-compose-mail-1 => exo-compose-mail-2}     |    0
 exo-helper/main.c                                  |    5 +-
 exo/Makefile.am                                    |   36 +--
 exo/abicheck.sh                                    |    2 +-
 exo/{exo-1.pc.in => exo-2.pc.in}                   |    0
 exo/exo-execute.c                                  |    2 +-
 exo/exo-gtk-extensions.c                           |    4 +-
 exo/exo-icon-bar.c                                 |   18 +-
 exo/exo-icon-chooser-dialog.c                      |   24 +-
 exo/exo-icon-view.c                                |  311 ++++++++++++--------
 exo/exo-private.c                                  |    8 +-
 exo/exo-thumbnail-preview.c                        |   24 +-
 exo/exo-toolbars-editor-dialog.c                   |    9 +-
 exo/exo-toolbars-editor.c                          |    6 +-
 exo/exo-toolbars-private.c                         |    4 +-
 exo/exo-toolbars-view.c                            |    4 +-
 exo/exo-tree-view.c                                |   18 +-
 exo/exo-wrap-table.c                               |    5 +-
 exo/exo.h                                          |   10 +-
 exo/exo.symbols                                    |  117 +-------
 28 files changed, 322 insertions(+), 397 deletions(-)

diff --git a/configure.in.in b/configure.in.in
index acea09f..46a5d3f 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -230,7 +230,7 @@ docs/Makefile
 docs/reference/Makefile
 docs/reference/version.xml
 exo/Makefile
-exo/exo-1.pc
+exo/exo-2.pc
 exo/exo-config.h
 exo-csource/Makefile
 exo-desktop-item-edit/Makefile
diff --git a/exo-desktop-item-edit/exo-die-command-entry.c b/exo-desktop-item-edit/exo-die-command-entry.c
index 41ddd44..3e2af71 100644
--- a/exo-desktop-item-edit/exo-die-command-entry.c
+++ b/exo-desktop-item-edit/exo-die-command-entry.c
@@ -248,7 +248,7 @@ exo_die_command_entry_button_clicked (GtkWidget          *button,
 
   /* determine the toplevel window */
   toplevel = gtk_widget_get_toplevel (button);
-  if (toplevel == NULL || !GTK_WIDGET_TOPLEVEL (toplevel))
+  if (toplevel == NULL || !gtk_widget_is_toplevel (toplevel))
     return;
 
   /* allocate the file chooser */
diff --git a/exo-desktop-item-edit/exo-die-editor.c b/exo-desktop-item-edit/exo-die-editor.c
index 33fd09d..e8e5e85 100644
--- a/exo-desktop-item-edit/exo-die-editor.c
+++ b/exo-desktop-item-edit/exo-die-editor.c
@@ -363,7 +363,7 @@ exo_die_editor_init (ExoDieEditor *editor)
   exo_binding_new_full (G_OBJECT (editor), "mode", G_OBJECT (label), "visible", exo_die_true_if_application, NULL, NULL);
   gtk_table_attach (GTK_TABLE (editor), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 3);
 
-  box = gtk_hbox_new (FALSE, 6);
+  box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   gtk_table_attach (GTK_TABLE (editor), box, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 3);
   exo_binding_new_full (G_OBJECT (editor), "mode", G_OBJECT (box), "visible", exo_die_true_if_application, NULL, NULL);
 
@@ -583,7 +583,7 @@ exo_die_editor_icon_clicked (GtkWidget    *button,
 
   /* determine the toplevel widget */
   toplevel = gtk_widget_get_toplevel (button);
-  if (toplevel == NULL || !GTK_WIDGET_TOPLEVEL (toplevel))
+  if (toplevel == NULL || !gtk_widget_is_toplevel (toplevel))
     return;
 
   /* allocate the icon chooser dialog */
@@ -630,7 +630,7 @@ exo_die_editor_path_clicked (GtkWidget    *button,
 
   /* determine the toplevel widget */
   toplevel = gtk_widget_get_toplevel (button);
-  if (toplevel == NULL || !GTK_WIDGET_TOPLEVEL (toplevel))
+  if (toplevel == NULL || !gtk_widget_is_toplevel (toplevel))
     return;
 
   /* allocate the file chooser dialog */
@@ -1173,6 +1173,7 @@ exo_die_editor_set_icon (ExoDieEditor *editor,
   GtkWidget    *label;
   gint          pixbuf_width;
   gint          pixbuf_height;
+  GtkWidget    *child;
 
   g_return_if_fail (EXO_DIE_IS_EDITOR (editor));
   g_return_if_fail (g_utf8_validate (icon, -1, NULL));
@@ -1188,8 +1189,9 @@ exo_die_editor_set_icon (ExoDieEditor *editor,
       g_object_notify (G_OBJECT (editor), "icon");
 
       /* drop the previous icon button child */
-      if (GTK_BIN (editor->icon_button)->child != NULL)
-        gtk_widget_destroy (GTK_BIN (editor->icon_button)->child);
+      child = gtk_bin_get_child (GTK_BIN (editor->icon_button));
+      if (child != NULL)
+        gtk_widget_destroy (child);
 
       /* check the icon depending on the type */
       if (icon != NULL && g_path_is_absolute (icon))
diff --git a/exo-desktop-item-edit/main.c b/exo-desktop-item-edit/main.c
index 62ba7f8..ad83d14 100644
--- a/exo-desktop-item-edit/main.c
+++ b/exo-desktop-item-edit/main.c
@@ -124,6 +124,7 @@ main (int argc, char **argv)
   GEnumValue      *enum_value;
 #if defined(GDK_WINDOWING_X11)
   GdkWindow       *xwindow;
+  GtkAllocation    alloc;
 #endif
   GtkWidget       *chooser;
   GtkWidget       *message;
@@ -320,7 +321,7 @@ main (int argc, char **argv)
 
   /* allocate the dialog */
   dialog = xfce_titled_dialog_new_with_buttons (opt_create_new ? _(CREATE_TITLES[mode]) : _(EDIT_TITLES[mode]),
-                                                NULL, GTK_DIALOG_NO_SEPARATOR,
+                                                NULL, 0,
                                                 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                                 NULL);
   gtk_window_set_default_size (GTK_WINDOW (dialog), 350, 375);
@@ -337,7 +338,7 @@ main (int argc, char **argv)
   /* add the "Create"/"Save" button (as default) */
   button = gtk_button_new_from_stock (opt_create_new ? _("C_reate") : GTK_STOCK_SAVE);
   gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_ACCEPT);
-  GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+  gtk_widget_set_can_default (button, TRUE);
   gtk_widget_grab_default (button);
   gtk_widget_show (button);
 
@@ -346,7 +347,7 @@ main (int argc, char **argv)
   exo_die_editor_set_mode (EXO_DIE_EDITOR (editor), mode);
   gtk_container_set_border_width (GTK_CONTAINER (editor), 12);
   exo_binding_new (G_OBJECT (editor), "complete", G_OBJECT (button), "sensitive");
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), editor, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), editor, TRUE, TRUE, 0);
   gtk_widget_show (editor);
 
   /* setup the name */
@@ -422,23 +423,23 @@ main (int argc, char **argv)
   if (G_UNLIKELY (opt_xid != 0))
     {
       /* try to determine the window for the id */
-      xwindow = gdk_window_foreign_new ((GdkNativeWindow) opt_xid);
+      xwindow = gdk_x11_window_foreign_new_for_display (gdk_display_get_default (), (Window) opt_xid);
       if (G_LIKELY (xwindow != NULL))
         {
           /* realize the dialog first... */
           gtk_widget_realize (dialog);
 
           /* ...and set the "transient for" relation */
-          gdk_window_set_transient_for (dialog->window, xwindow);
-          gtk_window_set_screen (GTK_WINDOW (dialog),
-              gdk_drawable_get_screen (GDK_DRAWABLE (xwindow)));
+          gdk_window_set_transient_for (gtk_widget_get_window (dialog), xwindow);
+          gtk_window_set_screen (GTK_WINDOW (dialog), gdk_window_get_screen (xwindow));
 
           /* center on parent */
           gdk_window_get_root_origin (xwindow, &ox, &oy);
-          gdk_window_get_geometry (xwindow, NULL, NULL, &ow, &oh, NULL);
+          gdk_window_get_geometry (xwindow, NULL, NULL, &ow, &oh);
 
-          ox += (ow - dialog->allocation.width) / 2;
-          oy += (oh - dialog->allocation.height) / 2;
+          gtk_widget_get_allocation (dialog, &alloc);
+          ox += (ow - alloc.width) / 2;
+          oy += (oh - alloc.height) / 2;
 
           gtk_window_move (GTK_WINDOW (dialog), MAX (ox, 0), MAX (oy, 0));
         }
diff --git a/exo-helper/exo-helper-chooser-dialog.c b/exo-helper/exo-helper-chooser-dialog.c
index 8387937..84ed84b 100644
--- a/exo-helper/exo-helper-chooser-dialog.c
+++ b/exo-helper/exo-helper-chooser-dialog.c
@@ -97,7 +97,6 @@ exo_helper_chooser_dialog_init (ExoHelperChooserDialog *chooser_dialog)
   g_assert (EXO_HELPER_N_CATEGORIES == 4);
 
   gtk_dialog_add_button (GTK_DIALOG (chooser_dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
-  gtk_dialog_set_has_separator (GTK_DIALOG (chooser_dialog), FALSE);
   gtk_window_set_icon_name (GTK_WINDOW (chooser_dialog), "preferences-desktop-default-applications");
   gtk_window_set_title (GTK_WINDOW (chooser_dialog), _("Preferred Applications"));
   xfce_titled_dialog_set_subtitle (XFCE_TITLED_DIALOG (chooser_dialog), _("Select default applications for various services"));
@@ -105,12 +104,12 @@ exo_helper_chooser_dialog_init (ExoHelperChooserDialog *chooser_dialog)
   /* add the "Help" button */
   button = gtk_button_new_from_stock (GTK_STOCK_HELP);
   g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (exo_helper_chooser_dialog_show_help), chooser_dialog);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (chooser_dialog)->action_area), button, FALSE, TRUE, 0);
-  gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (chooser_dialog)->action_area), button, TRUE);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (chooser_dialog))), button, FALSE, TRUE, 0);
+  gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (gtk_dialog_get_action_area (GTK_DIALOG (chooser_dialog))), button, TRUE);
   gtk_widget_show (button);
 
   topcontainer = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (chooser_dialog)->vbox), topcontainer, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (chooser_dialog))), topcontainer, TRUE, TRUE, 0);
   gtk_widget_show (topcontainer);
   chooser_dialog->plug_child = topcontainer;
 
diff --git a/exo-helper/exo-helper-chooser.c b/exo-helper/exo-helper-chooser.c
index aeebef3..41af32b 100644
--- a/exo-helper/exo-helper-chooser.c
+++ b/exo-helper/exo-helper-chooser.c
@@ -69,7 +69,6 @@ struct _ExoHelperChooser
 
   GtkWidget         *image;
   GtkWidget         *label;
-  GtkTooltips       *tooltips;
 
   ExoHelperDatabase *database;
   ExoHelperCategory  category;
@@ -139,14 +138,11 @@ exo_helper_chooser_init (ExoHelperChooser *chooser)
 
   chooser->database = exo_helper_database_get ();
 
-  chooser->tooltips = gtk_tooltips_new ();
-  g_object_ref_sink (G_OBJECT (chooser->tooltips));
-
   gtk_widget_push_composite_child ();
 
   button = gtk_button_new ();
   g_signal_connect_swapped (G_OBJECT (button), "pressed", G_CALLBACK (exo_helper_chooser_pressed), chooser);
-  gtk_tooltips_set_tip (chooser->tooltips, button, _("Press left mouse button to change the selected application."), NULL);
+  gtk_widget_set_tooltip_text (button, _("Press left mouse button to change the selected application."));
   gtk_container_add (GTK_CONTAINER (chooser), button);
   gtk_widget_show (button);
 
@@ -155,7 +151,7 @@ exo_helper_chooser_init (ExoHelperChooser *chooser)
   atk_object_set_name (object, _("Application Chooser Button"));
   atk_object_set_description (object, _("Press left mouse button to change the selected application."));
 
-  hbox = gtk_hbox_new (FALSE, 4);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
   gtk_container_add (GTK_CONTAINER (button), hbox);
   gtk_widget_show (hbox);
 
@@ -193,7 +189,6 @@ exo_helper_chooser_finalize (GObject *object)
   ExoHelperChooser *chooser = EXO_HELPER_CHOOSER (object);
 
   g_object_unref (G_OBJECT (chooser->database));
-  g_object_unref (G_OBJECT (chooser->tooltips));
 
   (*G_OBJECT_CLASS (exo_helper_chooser_parent_class)->finalize) (object);
 }
@@ -381,7 +376,7 @@ browse_clicked (GtkWidget *button,
 
   /* determine the toplevel window */
   toplevel = gtk_widget_get_toplevel (entry);
-  if (toplevel == NULL || !GTK_WIDGET_TOPLEVEL (toplevel))
+  if (toplevel == NULL || !gtk_widget_is_toplevel (toplevel))
     return;
 
   /* allocate the chooser */
@@ -532,7 +527,6 @@ menu_activate_other (GtkWidget        *item,
   dialog = gtk_dialog_new_with_buttons (dgettext (GETTEXT_PACKAGE, BROWSE_TITLES[chooser->category]),
                                         GTK_WINDOW (toplevel),
                                         GTK_DIALOG_DESTROY_WITH_PARENT
-                                        | GTK_DIALOG_NO_SEPARATOR
                                         | GTK_DIALOG_MODAL,
                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                         GTK_STOCK_OK, GTK_RESPONSE_OK,
@@ -540,13 +534,13 @@ menu_activate_other (GtkWidget        *item,
   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
   gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE);
   gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
-  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 6);
-  gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 5);
-  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->action_area), 6);
+  gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), 6);
+  gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_action_area (GTK_DIALOG (dialog))), 5);
+  gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (dialog))), 6);
   gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
 
   hbox = g_object_new (GTK_TYPE_HBOX, "border-width", 5, "spacing", 12, NULL);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox, TRUE, TRUE, 0);
   gtk_widget_show (hbox);
 
   image = gtk_image_new_from_icon_name ("preferences-desktop-default-applications", GTK_ICON_SIZE_DIALOG);
@@ -554,7 +548,7 @@ menu_activate_other (GtkWidget        *item,
   gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
   gtk_widget_show (image);
 
-  vbox = gtk_vbox_new (FALSE, 6);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
   gtk_widget_show (vbox);
 
@@ -566,7 +560,7 @@ menu_activate_other (GtkWidget        *item,
   gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
   gtk_widget_show (label);
 
-  hbox = gtk_hbox_new (FALSE, 3);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
   gtk_widget_show (hbox);
 
@@ -576,7 +570,7 @@ menu_activate_other (GtkWidget        *item,
   gtk_widget_show (entry);
 
   button = gtk_button_new ();
-  gtk_tooltips_set_tip (chooser->tooltips, button, _("Browse the file system to choose a custom command."), NULL);
+  gtk_widget_set_tooltip_text (button, _("Browse the file system to choose a custom command."));
   g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (browse_clicked), entry);
   gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
   gtk_widget_show (button);
@@ -625,8 +619,8 @@ menu_position (GtkMenu  *menu,
                gboolean *push_in,
                gpointer  chooser)
 {
-  GtkRequisition chooser_request;
-  GtkRequisition menu_request;
+  GtkAllocation  chooser_request;
+  GtkAllocation  menu_request;
   GdkRectangle   geometry;
   GdkScreen     *screen;
   GtkWidget     *toplevel = gtk_widget_get_toplevel (chooser);
@@ -636,10 +630,10 @@ menu_position (GtkMenu  *menu,
 
   gtk_widget_translate_coordinates (GTK_WIDGET (chooser), toplevel, 0, 0, &x0, &y0);
 
-  gtk_widget_size_request (GTK_WIDGET (chooser), &chooser_request);
-  gtk_widget_size_request (GTK_WIDGET (menu), &menu_request);
+  gtk_widget_get_allocation (GTK_WIDGET (chooser), &chooser_request);
+  gtk_widget_get_allocation (GTK_WIDGET (menu), &menu_request);
 
-  gdk_window_get_position (GTK_WIDGET (chooser)->window, x, y);
+  gtk_window_get_position (GTK_WINDOW (chooser), x, y);
 
   *y += y0;
   *x += x0;
@@ -678,16 +672,20 @@ exo_helper_chooser_pressed (ExoHelperChooser *chooser,
   GList          *helpers;
   GList          *lp;
   gint            icon_size;
+  GtkAllocation   menu_alloc;
+  GtkAllocation   chooser_alloc;
+  GdkWindow      *gdkwindow;
 
   g_return_if_fail (EXO_IS_HELPER_CHOOSER (chooser));
   g_return_if_fail (GTK_IS_BUTTON (button));
 
   /* set a watch cursor while loading the menu */
-  if (G_LIKELY (button->window != NULL))
+  gdkwindow = gtk_widget_get_window (button);
+  if (G_LIKELY (gdkwindow != NULL))
     {
       cursor = gdk_cursor_new (GDK_WATCH);
-      gdk_window_set_cursor (button->window, cursor);
-      gdk_cursor_unref (cursor);
+      gdk_window_set_cursor (gdkwindow, cursor);
+      g_object_unref (G_OBJECT (cursor));
       gdk_flush ();
     }
 
@@ -760,18 +758,20 @@ exo_helper_chooser_pressed (ExoHelperChooser *chooser,
     }
 
   item = gtk_menu_item_new_with_mnemonic (_("_Other..."));
-  gtk_tooltips_set_tip (chooser->tooltips, item, _("Use a custom application which is not included in the above list."), NULL);
+  gtk_widget_set_tooltip_text (item, _("Use a custom application which is not included in the above list."));
   g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (menu_activate_other), chooser);
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
   gtk_widget_show (item);
 
   /* make sure the menu has atleast the same width as the chooser */
-  if (menu->allocation.width < GTK_WIDGET (chooser)->allocation.width)
-    gtk_widget_set_size_request (menu, GTK_WIDGET (chooser)->allocation.width, -1);
+  gtk_widget_get_allocation (menu, &menu_alloc);
+  gtk_widget_get_allocation (GTK_WIDGET (chooser), &chooser_alloc);
+  if (menu_alloc.width < chooser_alloc.width)
+    gtk_widget_set_size_request (menu, chooser_alloc.width, -1);
 
   /* reset the watch cursor on the chooser */
-  if (G_LIKELY (button->window != NULL))
-    gdk_window_set_cursor (button->window, NULL);
+  if (G_LIKELY (gdkwindow != NULL))
+    gdk_window_set_cursor (gdkwindow, NULL);
 
   /* allocate a new main loop */
   loop = g_main_loop_new (NULL, FALSE);
@@ -784,7 +784,6 @@ exo_helper_chooser_pressed (ExoHelperChooser *chooser,
   gtk_grab_remove (menu);
   g_main_loop_unref (loop);
 
-  gtk_button_released (GTK_BUTTON (button));
   g_object_unref (G_OBJECT (menu));
 }
 
diff --git a/exo-helper/exo-helper-launcher-dialog.c b/exo-helper/exo-helper-launcher-dialog.c
index 6dba99a..4662242 100644
--- a/exo-helper/exo-helper-launcher-dialog.c
+++ b/exo-helper/exo-helper-launcher-dialog.c
@@ -108,13 +108,12 @@ exo_helper_launcher_dialog_init (ExoHelperLauncherDialog *launcher_dialog)
   gtk_dialog_add_button (GTK_DIALOG (launcher_dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
   gtk_dialog_add_button (GTK_DIALOG (launcher_dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
   gtk_dialog_set_default_response (GTK_DIALOG (launcher_dialog), GTK_RESPONSE_OK);
-  gtk_dialog_set_has_separator (GTK_DIALOG (launcher_dialog), FALSE);
   gtk_window_set_resizable (GTK_WINDOW (launcher_dialog), FALSE);
   gtk_window_set_title (GTK_WINDOW (launcher_dialog), _("Choose Preferred Application"));
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_container_set_border_width (GTK_CONTAINER (hbox), 12);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (launcher_dialog)->vbox), hbox, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (launcher_dialog))), hbox, TRUE, TRUE, 0);
   gtk_widget_show (hbox);
 
   image = gtk_image_new_from_icon_name ("preferences-desktop-default-applications", GTK_ICON_SIZE_DIALOG);
@@ -122,7 +121,7 @@ exo_helper_launcher_dialog_init (ExoHelperLauncherDialog *launcher_dialog)
   gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
   gtk_widget_show (image);
 
-  vbox = gtk_vbox_new (FALSE, 12);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
   gtk_widget_show (vbox);
 
diff --git a/exo-helper/exo-helper.c b/exo-helper/exo-helper.c
index a3a8c60..574cccd 100644
--- a/exo-helper/exo-helper.c
+++ b/exo-helper/exo-helper.c
@@ -399,7 +399,7 @@ exo_helper_execute (ExoHelper   *helper,
         continue;
 
       /* try to run the command */
-      succeed = gdk_spawn_on_screen (screen, NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, &pid, &err);
+      succeed = g_spawn_async (NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, &pid, &err);
 
       /* cleanup */
       g_strfreev (argv);
diff --git a/exo-helper/helpers/exo-compose-mail-1 b/exo-helper/helpers/exo-compose-mail-2
similarity index 100%
rename from exo-helper/helpers/exo-compose-mail-1
rename to exo-helper/helpers/exo-compose-mail-2
diff --git a/exo-helper/main.c b/exo-helper/main.c
index f5866a0..be0141b 100644
--- a/exo-helper/main.c
+++ b/exo-helper/main.c
@@ -34,6 +34,7 @@
 #include <exo-helper/exo-helper-launcher-dialog.h>
 #include <exo-helper/exo-helper-utils.h>
 
+#include <gtk/gtkx.h>
 
 
 static const gchar *CATEGORY_EXEC_ERRORS[] =
@@ -62,14 +63,14 @@ main (int argc, char **argv)
   gboolean           opt_version = FALSE;
   gboolean           opt_configure = FALSE;
   gchar             *opt_launch_type = NULL;
-  GdkNativeWindow    opt_socket_id = 0;
+  gint64             opt_socket_id = 0;
 
   GOptionContext    *opt_ctx;
   GOptionGroup      *gtk_option_group;
   GOptionEntry       option_entries[] = {
     { "version", 'V', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &opt_version, N_("Print version information and exit"), NULL, },
     { "configure", 'c', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &opt_configure, N_("Open the Preferred Applications\nconfiguration dialog"), NULL, },
-    { "socket-id", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT, &opt_socket_id, N_("Settings manager socket"), N_("SOCKET ID"), },
+    { "socket-id", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT64, &opt_socket_id, N_("Settings manager socket"), N_("SOCKET ID"), },
     { "launch", 'l', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING, &opt_launch_type, N_("Launch the default helper of TYPE with the optional PARAMETER, where TYPE is one of the following values."), N_("TYPE [PARAMETER]"), },
     { NULL, },
   };
diff --git a/exo/Makefile.am b/exo/Makefile.am
index bf30234..92ca75a 100644
--- a/exo/Makefile.am
+++ b/exo/Makefile.am
@@ -8,30 +8,22 @@ INCLUDES = 								\
 	-DLIBEXO_VERSION_API=\"$(LIBEXO_VERSION_API)\"			\
 	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"
 
-lib_LTLIBRARIES = libexo-1.la
+lib_LTLIBRARIES = libexo-2.la
 
 libexo_headers =							\
 	exo-binding.h							\
 	exo-cell-renderer-ellipsized-text.h				\
-	exo-cell-renderer-icon.h					\
 	exo-execute.h							\
 	exo-gdk-pixbuf-extensions.h					\
 	exo-gtk-extensions.h						\
 	exo-gobject-extensions.h					\
-	exo-icon-bar.h							\
-	exo-icon-chooser-dialog.h					\
 	exo-icon-view.h							\
+	exo-icon-chooser-dialog.h					\
 	exo-job.h							\
 	exo-simple-job.h						\
 	exo-string.h							\
-	exo-toolbars-editor-dialog.h					\
-	exo-toolbars-editor.h						\
-	exo-toolbars-model.h						\
-	exo-toolbars-view.h						\
 	exo-tree-view.h							\
-	exo-utils.h							\
-	exo-wrap-table.h						\
-	exo-xsession-client.h
+	exo-utils.h
 
 libexo_built_public_sources =						\
 	exo-enum-types.h
@@ -44,7 +36,7 @@ libexo_built_sources =							\
 	exo-marshal.c							\
 	exo-marshal.h
 
-libexoincludedir = $(includedir)/exo-1/exo
+libexoincludedir = $(includedir)/exo-2/exo
 
 libexoinclude_HEADERS =							\
 	$(libexo_built_public_sources)					\
@@ -52,22 +44,20 @@ libexoinclude_HEADERS =							\
 	exo.h								\
 	exo-config.h
 
-libexo_1_la_SOURCES =							\
+libexo_2_la_SOURCES =							\
 	$(libexoinclude_HEADERS)					\
 	$(libexo_built_sources)						\
 	exo-binding.c							\
 	exo-cell-renderer-ellipsized-text.c				\
-	exo-cell-renderer-icon.c					\
 	exo-config.c							\
 	exo-execute.c							\
 	exo-gdk-pixbuf-extensions.c					\
 	exo-gtk-extensions.c						\
 	exo-gobject-extensions.c					\
-	exo-icon-bar.c							\
+	exo-icon-view.c							\
 	exo-icon-chooser-dialog.c					\
 	exo-icon-chooser-model.c					\
 	exo-icon-chooser-model.h					\
-	exo-icon-view.c							\
 	exo-job.c							\
 	exo-job.h							\
 	exo-simple-job.c						\
@@ -78,18 +68,10 @@ libexo_1_la_SOURCES =							\
 	exo-thumbnail-preview.h						\
 	exo-thumbnail.c							\
 	exo-thumbnail.h							\
-	exo-toolbars-editor-dialog.c					\
-	exo-toolbars-editor.c						\
-	exo-toolbars-model.c						\
-	exo-toolbars-private.c						\
-	exo-toolbars-private.h						\
-	exo-toolbars-view.c						\
 	exo-tree-view.c							\
-	exo-utils.c							\
-	exo-wrap-table.c						\
-	exo-xsession-client.c
+	exo-utils.c
 
-libexo_1_la_CFLAGS =							\
+libexo_2_la_CFLAGS =							\
 	$(GIO_CFLAGS)							\
 	$(GTK_CFLAGS)							\
 	$(LIBX11_CFLAGS)						\
@@ -101,7 +83,7 @@ libexo_1_la_LDFLAGS =							\
 	-export-symbols-regex "^[^_].*"					\
 	-no-undefined
 
-libexo_1_la_LIBADD =							\
+libexo_2_la_LIBADD =							\
 	$(GIO_LIBS)							\
 	$(GTK_LIBS)							\
 	$(LIBX11_LIBS)							\
diff --git a/exo/abicheck.sh b/exo/abicheck.sh
index 437e12b..586e7ae 100755
--- a/exo/abicheck.sh
+++ b/exo/abicheck.sh
@@ -21,5 +21,5 @@
 
 trap 'rm expected-abi actual-abi' EXIT
 ${CPP:-cpp} -DINCLUDE_INTERNAL_SYMBOLS -DINCLUDE_VARIABLES -DALL_FILES ${srcdir:-.}/exo.symbols | sed 's/ G_GNUC.*$//;s/ PRIVATE//;/^ *$/d;/^#/d' | sort >expected-abi
-${NM:-nm} -D -g -P .libs/libexo-1.so | awk '$2~/^[DRTG]$/&&$1~/^[^_]/{print $1}' | sort >actual-abi
+${NM:-nm} -D -g -P .libs/libexo-2.so | awk '$2~/^[DRTG]$/&&$1~/^[^_]/{print $1}' | sort >actual-abi
 diff -u expected-abi actual-abi
diff --git a/exo/exo-1.pc.in b/exo/exo-2.pc.in
similarity index 100%
rename from exo/exo-1.pc.in
rename to exo/exo-2.pc.in
diff --git a/exo/exo-execute.c b/exo/exo-execute.c
index 31b199f..9cc8a6b 100644
--- a/exo/exo-execute.c
+++ b/exo/exo-execute.c
@@ -143,7 +143,7 @@ exo_execute_preferred_application_on_screen (const gchar *category,
   argv[argc] = NULL;
 
   /* launch the command */
-  return gdk_spawn_on_screen (screen, working_directory, argv, envp, 0, NULL, NULL, NULL, error);
+  return g_spawn_async (working_directory, argv, envp, 0, NULL, NULL, NULL, error);
 }
 
 
diff --git a/exo/exo-gtk-extensions.c b/exo/exo-gtk-extensions.c
index 5148b20..21da6f7 100644
--- a/exo/exo-gtk-extensions.c
+++ b/exo/exo-gtk-extensions.c
@@ -52,7 +52,7 @@
 static gboolean
 later_destroy (gpointer object)
 {
-  gtk_widget_destroy (GTK_OBJECT (object));
+  gtk_widget_destroy (GTK_WIDGET (object));
   g_object_unref (G_OBJECT (object));
   return FALSE;
 }
@@ -69,7 +69,7 @@ later_destroy (gpointer object)
 void
 exo_gtk_widget_destroy_later (GtkWidget *object)
 {
-  g_return_if_fail (GTK_IS_OBJECT (object));
+  g_return_if_fail (GTK_IS_WIDGET (object));
 
   g_idle_add_full (G_PRIORITY_HIGH, later_destroy, object, NULL);
   g_object_ref_sink (object);
diff --git a/exo/exo-icon-bar.c b/exo/exo-icon-bar.c
index 2f76198..7712e90 100644
--- a/exo/exo-icon-bar.c
+++ b/exo/exo-icon-bar.c
@@ -237,7 +237,6 @@ G_DEFINE_TYPE (ExoIconBar, exo_icon_bar, GTK_TYPE_CONTAINER)
 static void
 exo_icon_bar_class_init (ExoIconBarClass *klass)
 {
-  GtkWidgetClass *gtkobject_class;
   GtkWidgetClass *gtkwidget_class;
   GObjectClass   *gobject_class;
 
@@ -247,11 +246,10 @@ exo_icon_bar_class_init (ExoIconBarClass *klass)
   gobject_class->finalize = exo_icon_bar_finalize;
   gobject_class->get_property = exo_icon_bar_get_property;
   gobject_class->set_property = exo_icon_bar_set_property;
-
-  gtkobject_class = GTK_OBJECT_CLASS (klass);
-  gtkobject_class->destroy = exo_icon_bar_destroy;
+  
 
   gtkwidget_class = GTK_WIDGET_CLASS (klass);
+  gtkwidget_class->destroy = exo_icon_bar_destroy;
   gtkwidget_class->style_set = exo_icon_bar_style_set;
   gtkwidget_class->realize = exo_icon_bar_realize;
   gtkwidget_class->unrealize = exo_icon_bar_unrealize;
@@ -448,7 +446,7 @@ exo_icon_bar_destroy (GtkWidget *object)
 
   exo_icon_bar_set_model (icon_bar, NULL);
 
-  (*GTK_OBJECT_CLASS (exo_icon_bar_parent_class)->destroy) (object);
+  (*GTK_WIDGET_CLASS (exo_icon_bar_parent_class)->destroy) (object);
 }
 
 
@@ -549,7 +547,7 @@ exo_icon_bar_style_set (GtkWidget *widget,
 
   (*GTK_WIDGET_CLASS (exo_icon_bar_parent_class)->style_set) (widget, previous_style);
 
-  if (GTK_WIDGET_REALIZED (widget))
+  if (gtk_widget_get_realized (widget))
     {
       gdk_window_set_background (icon_bar->priv->bin_window,
                                  &widget->style->base[widget->state]);
@@ -680,7 +678,7 @@ exo_icon_bar_size_allocate (GtkWidget     *widget,
 
   widget->allocation = *allocation;
 
-  if (GTK_WIDGET_REALIZED (widget))
+  if (gtk_widget_get_realized (widget))
     {
       gdk_window_move_resize (widget->window,
                               allocation->x,
@@ -860,7 +858,6 @@ exo_icon_bar_set_adjustments (ExoIconBar    *icon_bar,
     {
       icon_bar->priv->hadjustment = hadj;
       g_object_ref (icon_bar->priv->hadjustment);
-      gtk_widget_sink (GTK_OBJECT (icon_bar->priv->hadjustment));
 
       g_signal_connect (icon_bar->priv->hadjustment, "value_changed",
                         G_CALLBACK (exo_icon_bar_adjustment_changed), icon_bar);
@@ -871,7 +868,6 @@ exo_icon_bar_set_adjustments (ExoIconBar    *icon_bar,
     {
       icon_bar->priv->vadjustment = vadj;
       g_object_ref (icon_bar->priv->vadjustment);
-      gtk_widget_sink (GTK_OBJECT (icon_bar->priv->vadjustment));
 
       g_signal_connect (icon_bar->priv->vadjustment, "value_changed",
                         G_CALLBACK (exo_icon_bar_adjustment_changed), icon_bar);
@@ -888,7 +884,7 @@ static void
 exo_icon_bar_adjustment_changed (GtkAdjustment *adjustment,
                                  ExoIconBar    *icon_bar)
 {
-  if (GTK_WIDGET_REALIZED (icon_bar))
+  if (gtk_widget_get_realized (GTK_WIDGET (icon_bar)))
     {
       gdk_window_move (icon_bar->priv->bin_window,
                        - icon_bar->priv->hadjustment->value,
@@ -935,7 +931,7 @@ exo_icon_bar_queue_draw_item (ExoIconBar     *icon_bar,
 {
   GdkRectangle area;
 
-  if (GTK_WIDGET_REALIZED (icon_bar))
+  if (gtk_widget_get_realized (GTK_WIDGET (icon_bar)))
     {
       if (icon_bar->priv->orientation == GTK_ORIENTATION_VERTICAL)
         {
diff --git a/exo/exo-icon-chooser-dialog.c b/exo/exo-icon-chooser-dialog.c
index 025400a..b65949b 100644
--- a/exo/exo-icon-chooser-dialog.c
+++ b/exo/exo-icon-chooser-dialog.c
@@ -35,11 +35,10 @@
 
 #include <exo/exo-binding.h>
 #include <exo/exo-cell-renderer-ellipsized-text.h>
-#include <exo/exo-cell-renderer-icon.h>
 #include <exo/exo-gtk-extensions.h>
+#include <exo/exo-icon-view.h>
 #include <exo/exo-icon-chooser-dialog.h>
 #include <exo/exo-icon-chooser-model.h>
-#include <exo/exo-icon-view.h>
 #include <exo/exo-string.h>
 #include <exo/exo-private.h>
 #include <exo/exo-alias.h>
@@ -168,8 +167,8 @@ exo_icon_chooser_dialog_class_init (ExoIconChooserDialogClass *klass)
 
   /* connect additional key bindings to the GtkDialog::close action signal */
   binding_set = gtk_binding_set_by_class (klass);
-  gtk_binding_entry_add_signal (binding_set, GDK_w, GDK_CONTROL_MASK, "close", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_W, GDK_CONTROL_MASK, "close", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_w, GDK_CONTROL_MASK, "close", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_W, GDK_CONTROL_MASK, "close", 0);
 }
 
 
@@ -194,9 +193,9 @@ exo_icon_chooser_dialog_init (ExoIconChooserDialog *icon_chooser_dialog)
   gtk_widget_push_composite_child ();
 
   /* add the main box */
-  vbox = gtk_vbox_new (FALSE, 6);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (icon_chooser_dialog)->vbox), vbox, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (icon_chooser_dialog))), vbox, TRUE, TRUE, 0);
   gtk_widget_show (vbox);
 
   /* add the header table */
@@ -212,9 +211,9 @@ exo_icon_chooser_dialog_init (ExoIconChooserDialog *icon_chooser_dialog)
   gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
   gtk_widget_show (label);
 
-  priv->combo = gtk_combo_box_new_text ();
+  priv->combo = gtk_combo_box_text_new ();
   for (context = 0; context < G_N_ELEMENTS (CONTEXT_TITLES); ++context)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo), _(CONTEXT_TITLES[context]));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (priv->combo), "", _(CONTEXT_TITLES[context]));
   gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (priv->combo), exo_icon_chooser_dialog_separator_func, icon_chooser_dialog, NULL);
   g_signal_connect (G_OBJECT (priv->combo), "changed", G_CALLBACK (exo_icon_chooser_dialog_combo_changed), icon_chooser_dialog);
   gtk_table_attach (GTK_TABLE (table), priv->combo, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
@@ -256,9 +255,9 @@ exo_icon_chooser_dialog_init (ExoIconChooserDialog *icon_chooser_dialog)
   gtk_widget_show (priv->icon_chooser);
 
   /* setup the icon renderer */
-  renderer = exo_cell_renderer_icon_new ();
+  renderer = gtk_cell_renderer_pixbuf_new ();
   gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->icon_chooser), renderer, TRUE);
-  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (priv->icon_chooser), renderer, "icon", EXO_ICON_CHOOSER_MODEL_COLUMN_ICON_NAME, NULL);
+  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (priv->icon_chooser), renderer, "icon-name", EXO_ICON_CHOOSER_MODEL_COLUMN_ICON_NAME, NULL);
 
   /* setup the text renderer */
   renderer = g_object_new (EXO_TYPE_CELL_RENDERER_ELLIPSIZED_TEXT,
@@ -344,11 +343,12 @@ exo_icon_chooser_dialog_close (GtkDialog *dialog)
   GdkEvent *event;
 
   /* verify that the dialog is realized */
-  if (G_LIKELY (GTK_WIDGET_REALIZED (dialog)))
+  if (G_LIKELY (gtk_widget_get_realized (GTK_WIDGET (dialog))))
     {
       /* send a delete event to the dialog */
       event = gdk_event_new (GDK_DELETE);
-      event->any.window = g_object_ref (GTK_WIDGET (dialog)->window);
+      event->any.window = gtk_widget_get_window (GTK_WIDGET (dialog));
+      g_object_ref (G_OBJECT (event->any.window));
       event->any.send_event = TRUE;
       gtk_main_do_event (event);
       gdk_event_free (event);
diff --git a/exo/exo-icon-view.c b/exo/exo-icon-view.c
index 44e5bde..fd05aec 100644
--- a/exo/exo-icon-view.c
+++ b/exo/exo-icon-view.c
@@ -149,14 +149,18 @@ static void                 exo_icon_view_set_property                   (GObjec
                                                                           GParamSpec             *pspec);
 static void                 exo_icon_view_realize                        (GtkWidget              *widget);
 static void                 exo_icon_view_unrealize                      (GtkWidget              *widget);
-static void                 exo_icon_view_size_request                   (GtkWidget              *widget,
-                                                                          GtkRequisition         *requisition);
+static void                 exo_icon_view_get_preferred_width            (GtkWidget              *widget,
+                                                                          gint                   *minimal_width,
+                                                                          gint                   *natural_width);
+static void                 exo_icon_view_get_preferred_height           (GtkWidget              *widget,
+                                                                          gint                   *minimal_height,
+                                                                          gint                   *natural_height);
 static void                 exo_icon_view_size_allocate                  (GtkWidget              *widget,
                                                                           GtkAllocation          *allocation);
 static void                 exo_icon_view_style_set                      (GtkWidget              *widget,
                                                                           GtkStyle               *previous_style);
-static gboolean             exo_icon_view_expose_event                   (GtkWidget              *widget,
-                                                                          GdkEventExpose         *event);
+static gboolean             exo_icon_view_draw                           (GtkWidget              *widget,
+                                                                          cairo_t                *cr);
 static gboolean             exo_icon_view_motion_notify_event            (GtkWidget              *widget,
                                                                           GdkEventMotion         *event);
 static gboolean             exo_icon_view_button_press_event             (GtkWidget              *widget,
@@ -597,10 +601,11 @@ exo_icon_view_class_init (ExoIconViewClass *klass)
   gtkwidget_class = GTK_WIDGET_CLASS (klass);
   gtkwidget_class->realize = exo_icon_view_realize;
   gtkwidget_class->unrealize = exo_icon_view_unrealize;
-  gtkwidget_class->size_request = exo_icon_view_size_request;
+  gtkwidget_class->get_preferred_width = exo_icon_view_get_preferred_width;
+  gtkwidget_class->get_preferred_height = exo_icon_view_get_preferred_height;
   gtkwidget_class->size_allocate = exo_icon_view_size_allocate;
   gtkwidget_class->style_set = exo_icon_view_style_set;
-  gtkwidget_class->expose_event = exo_icon_view_expose_event;
+  gtkwidget_class->draw = exo_icon_view_draw;
   gtkwidget_class->motion_notify_event = exo_icon_view_motion_notify_event;
   gtkwidget_class->button_press_event = exo_icon_view_button_press_event;
   gtkwidget_class->button_release_event = exo_icon_view_button_release_event;
@@ -1085,34 +1090,34 @@ exo_icon_view_class_init (ExoIconViewClass *klass)
 
   /* Key bindings */
   gtkbinding_set = gtk_binding_set_by_class (klass);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_a, GDK_CONTROL_MASK, "select-all", 0);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_a, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "unselect-all", 0);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_space, GDK_CONTROL_MASK, "toggle-cursor-item", 0);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_space, 0, "activate-cursor-item", 0);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_Return, 0, "activate-cursor-item", 0);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_ISO_Enter, 0, "activate-cursor-item", 0);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KP_Enter, 0, "activate-cursor-item", 0);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_f, GDK_CONTROL_MASK, "start-interactive-search", 0);
-  gtk_binding_entry_add_signal (gtkbinding_set, GDK_F, GDK_CONTROL_MASK, "start-interactive-search", 0);
-
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_Up, 0, GTK_MOVEMENT_DISPLAY_LINES, -1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KP_Up, 0, GTK_MOVEMENT_DISPLAY_LINES, -1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_Down, 0, GTK_MOVEMENT_DISPLAY_LINES, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KP_Down, 0, GTK_MOVEMENT_DISPLAY_LINES, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_p, GDK_CONTROL_MASK, GTK_MOVEMENT_DISPLAY_LINES, -1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_n, GDK_CONTROL_MASK, GTK_MOVEMENT_DISPLAY_LINES, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_Home, 0, GTK_MOVEMENT_BUFFER_ENDS, -1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KP_Home, 0, GTK_MOVEMENT_BUFFER_ENDS, -1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_End, 0, GTK_MOVEMENT_BUFFER_ENDS, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KP_End, 0, GTK_MOVEMENT_BUFFER_ENDS, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_Page_Up, 0, GTK_MOVEMENT_PAGES, -1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KP_Page_Up, 0, GTK_MOVEMENT_PAGES, -1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_Page_Down, 0, GTK_MOVEMENT_PAGES, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KP_Page_Down, 0, GTK_MOVEMENT_PAGES, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_Right, 0, GTK_MOVEMENT_VISUAL_POSITIONS, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_Left, 0, GTK_MOVEMENT_VISUAL_POSITIONS, -1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KP_Right, 0, GTK_MOVEMENT_VISUAL_POSITIONS, 1);
-  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KP_Left, 0, GTK_MOVEMENT_VISUAL_POSITIONS, -1);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_a, GDK_CONTROL_MASK, "select-all", 0);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_a, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "unselect-all", 0);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_space, GDK_CONTROL_MASK, "toggle-cursor-item", 0);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_space, 0, "activate-cursor-item", 0);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_Return, 0, "activate-cursor-item", 0);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_ISO_Enter, 0, "activate-cursor-item", 0);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_KP_Enter, 0, "activate-cursor-item", 0);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_f, GDK_CONTROL_MASK, "start-interactive-search", 0);
+  gtk_binding_entry_add_signal (gtkbinding_set, GDK_KEY_F, GDK_CONTROL_MASK, "start-interactive-search", 0);
+
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_Up, 0, GTK_MOVEMENT_DISPLAY_LINES, -1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_KP_Up, 0, GTK_MOVEMENT_DISPLAY_LINES, -1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_Down, 0, GTK_MOVEMENT_DISPLAY_LINES, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_KP_Down, 0, GTK_MOVEMENT_DISPLAY_LINES, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_p, GDK_CONTROL_MASK, GTK_MOVEMENT_DISPLAY_LINES, -1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_n, GDK_CONTROL_MASK, GTK_MOVEMENT_DISPLAY_LINES, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_Home, 0, GTK_MOVEMENT_BUFFER_ENDS, -1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_KP_Home, 0, GTK_MOVEMENT_BUFFER_ENDS, -1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_End, 0, GTK_MOVEMENT_BUFFER_ENDS, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_KP_End, 0, GTK_MOVEMENT_BUFFER_ENDS, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_Page_Up, 0, GTK_MOVEMENT_PAGES, -1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_KP_Page_Up, 0, GTK_MOVEMENT_PAGES, -1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_Page_Down, 0, GTK_MOVEMENT_PAGES, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_KP_Page_Down, 0, GTK_MOVEMENT_PAGES, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_Right, 0, GTK_MOVEMENT_VISUAL_POSITIONS, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_Left, 0, GTK_MOVEMENT_VISUAL_POSITIONS, -1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_KP_Right, 0, GTK_MOVEMENT_VISUAL_POSITIONS, 1);
+  exo_icon_view_add_move_binding (gtkbinding_set, GDK_KEY_KP_Left, 0, GTK_MOVEMENT_VISUAL_POSITIONS, -1);
 }
 
 
@@ -1495,6 +1500,53 @@ exo_icon_view_size_request (GtkWidget      *widget,
 
 
 
+
+static void                 
+exo_icon_view_get_preferred_width (GtkWidget *widget,
+                                   gint      *minimal_width,
+                                   gint      *natural_width)
+{
+  const ExoIconViewPrivate *priv = EXO_ICON_VIEW (widget)->priv;
+  ExoIconViewChild         *child;
+  GList                    *lp;
+  
+  /* well, this is easy */
+  *minimal_width = *natural_width = priv->width;
+
+  /* handle the child widgets */
+  for (lp = priv->children; lp != NULL; lp = lp->next)
+    {
+      child = lp->data;
+      if (gtk_widget_get_visible (child->widget))
+        gtk_widget_get_preferred_size (child->widget, NULL, NULL);
+    }
+}
+
+
+
+static void                 
+exo_icon_view_get_preferred_height (GtkWidget *widget,
+                                    gint      *minimal_height,
+                                    gint      *natural_height)
+{
+  const ExoIconViewPrivate *priv = EXO_ICON_VIEW (widget)->priv;
+  ExoIconViewChild         *child;
+  GList                    *lp;
+  
+  /* well, this is easy */
+  *minimal_height = *natural_height = priv->height;
+
+  /* handle the child widgets */
+  for (lp = priv->children; lp != NULL; lp = lp->next)
+    {
+      child = lp->data;
+      if (gtk_widget_get_visible (child->widget))
+        gtk_widget_get_preferred_size (child->widget, NULL, NULL);
+    }
+}
+
+
+
 static void
 exo_icon_view_allocate_children (ExoIconView *icon_view)
 {
@@ -1538,13 +1590,17 @@ exo_icon_view_size_allocate (GtkWidget     *widget,
   ExoIconView   *icon_view = EXO_ICON_VIEW (widget);
 
   /* apply the new size allocation */
-  widget->allocation = *allocation;
+  gtk_widget_set_allocation (widget, allocation);
 
   /* move/resize the clipping window, the icons window
    * will be handled by exo_icon_view_layout().
    */
-  if (GTK_WIDGET_REALIZED (widget))
-    gdk_window_move_resize (widget->window, allocation->x, allocation->y, allocation->width, allocation->height);
+  if (gtk_widget_get_realized (widget))
+    {
+      gdk_window_move_resize (gtk_widget_get_window (widget),
+                              allocation->x, allocation->y,
+                              allocation->width, allocation->height);
+    }
 
   /* layout the items */
   exo_icon_view_layout (icon_view);
@@ -1554,23 +1610,23 @@ exo_icon_view_size_allocate (GtkWidget     *widget,
 
   /* update the horizontal scroll adjustment accordingly */
   hadjustment = icon_view->priv->hadjustment;
-  hadjustment->page_size = allocation->width;
-  hadjustment->page_increment = allocation->width * 0.9;
-  hadjustment->step_increment = allocation->width * 0.1;
-  hadjustment->lower = 0;
-  hadjustment->upper = MAX (allocation->width, icon_view->priv->width);
-  if (hadjustment->value > hadjustment->upper - hadjustment->page_size)
-    gtk_adjustment_set_value (hadjustment, MAX (0, hadjustment->upper - hadjustment->page_size));
+  gtk_adjustment_set_page_size (hadjustment, allocation->width);
+  gtk_adjustment_set_page_increment (hadjustment, allocation->width * 0.9);
+  gtk_adjustment_set_step_increment (hadjustment, allocation->width * 0.1);
+  gtk_adjustment_set_lower (hadjustment, 0);
+  gtk_adjustment_set_upper (hadjustment, MAX (allocation->width, icon_view->priv->width));
+  if (gtk_adjustment_get_value (hadjustment) > gtk_adjustment_get_upper (hadjustment) - gtk_adjustment_get_page_size (hadjustment))
+    gtk_adjustment_set_value (hadjustment, MAX (0, gtk_adjustment_get_upper (hadjustment) - gtk_adjustment_get_page_size (hadjustment)));
 
   /* update the vertical scroll adjustment accordingly */
   vadjustment = icon_view->priv->vadjustment;
-  vadjustment->page_size = allocation->height;
-  vadjustment->page_increment = allocation->height * 0.9;
-  vadjustment->step_increment = allocation->height * 0.1;
-  vadjustment->lower = 0;
-  vadjustment->upper = MAX (allocation->height, icon_view->priv->height);
-  if (vadjustment->value > vadjustment->upper - vadjustment->page_size)
-    gtk_adjustment_set_value (vadjustment, MAX (0, vadjustment->upper - vadjustment->page_size));
+  gtk_adjustment_set_page_size (vadjustment, allocation->height);
+  gtk_adjustment_set_page_increment (vadjustment, allocation->height * 0.9);
+  gtk_adjustment_set_step_increment (vadjustment, allocation->height * 0.1);
+  gtk_adjustment_set_lower (vadjustment, 0);
+  gtk_adjustment_set_upper (vadjustment, MAX (allocation->height, icon_view->priv->height));
+  if (gtk_adjustment_get_value (vadjustment) > gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment))
+    gtk_adjustment_set_value (vadjustment, MAX (0, gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment)));
 
   /* we need to emit "changed" ourselves */
   gtk_adjustment_changed (hadjustment);
@@ -1589,15 +1645,15 @@ exo_icon_view_style_set (GtkWidget *widget,
   (*GTK_WIDGET_CLASS (exo_icon_view_parent_class)->style_set) (widget, previous_style);
 
   /* apply the new style for the bin_window if we're realized */
-  if (GTK_WIDGET_REALIZED (widget))
+  if (gtk_widget_get_realized (widget))
     gdk_window_set_background (icon_view->priv->bin_window, &widget->style->base[widget->state]);
 }
 
 
 
 static gboolean
-exo_icon_view_expose_event (GtkWidget      *widget,
-                            GdkEventExpose *event)
+exo_icon_view_draw (GtkWidget *widget,
+                    cairo_t   *cr)
 {
   ExoIconViewDropPosition dest_pos;
   ExoIconViewPrivate     *priv = EXO_ICON_VIEW (widget)->priv;
@@ -1663,6 +1719,7 @@ exo_icon_view_expose_event (GtkWidget      *widget,
       /* we take advantage of double-buffering here and use only a single
        * draw_rectangle() operation w/o having to take care of clipping.
        */
+      gtk_render_
       gdk_draw_rectangle (event->window, priv->rubberband_fill_gc, TRUE,
                           rubber_rect.x, rubber_rect.y, rubber_rect.width, rubber_rect.height);
     }
@@ -1784,7 +1841,8 @@ rubberband_scroll_timeout (gpointer user_data)
              : icon_view->priv->hadjustment;
 
   /* determine the new scroll value */
-  value = MIN (adjustment->value + icon_view->priv->scroll_value_diff, adjustment->upper - adjustment->page_size);
+  value = MIN (gtk_adjustment_get_value (adjustment) + icon_view->priv->scroll_value_diff,
+               gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_page_size (adjustment));
 
   /* apply the new value */
   gtk_adjustment_set_value (adjustment, value);
@@ -1817,18 +1875,18 @@ exo_icon_view_motion_notify_event (GtkWidget      *widget,
       if (icon_view->priv->layout_mode == EXO_ICON_VIEW_LAYOUT_ROWS)
         {
           abso = event->y - icon_view->priv->height *
-             (icon_view->priv->vadjustment->value /
-             (icon_view->priv->vadjustment->upper -
-              icon_view->priv->vadjustment->lower));
+             (gtk_adjustment_get_value (icon_view->priv->vadjustment) /
+             (gtk_adjustment_get_upper (icon_view->priv->vadjustment) -
+              gtk_adjustment_get_lower (icon_view->priv->vadjustment)));
 
           size = widget->allocation.height;
         }
       else
         {
           abso = event->x - icon_view->priv->width *
-             (icon_view->priv->hadjustment->value /
-             (icon_view->priv->hadjustment->upper -
-              icon_view->priv->hadjustment->lower));
+             (gtk_adjustment_get_value (icon_view->priv->hadjustment) /
+             (gtk_adjustment_get_upper (icon_view->priv->hadjustment) -
+              gtk_adjustment_get_lower (icon_view->priv->hadjustment)));
 
           size = widget->allocation.width;
         }
@@ -1871,7 +1929,7 @@ exo_icon_view_motion_notify_event (GtkWidget      *widget,
                   /* hand2 seems to be what we should use */
                   cursor = gdk_cursor_new (GDK_HAND2);
                   gdk_window_set_cursor (event->window, cursor);
-                  gdk_cursor_unref (cursor);
+                  g_object_unref (G_OBJECT (cursor));
                 }
               else
                 {
@@ -1991,7 +2049,7 @@ exo_icon_view_put (ExoIconView     *icon_view,
   icon_view->priv->children = g_list_append (icon_view->priv->children, child);
 
   /* setup the parent for the child */
-  if (GTK_WIDGET_REALIZED (icon_view))
+  if (gtk_widget_get_realized (GTK_WIDGET (icon_view)))
     gtk_widget_set_parent_window (child->widget, icon_view->priv->bin_window);
   gtk_widget_set_parent (widget, GTK_WIDGET (icon_view));
 }
@@ -2353,11 +2411,13 @@ exo_icon_view_scroll_event (GtkWidget      *widget,
   adjustment = icon_view->priv->hadjustment;
 
   /* determine the scroll delta */
-  delta = pow (adjustment->page_size, 2.0 / 3.0);
+  delta = pow (gtk_adjustment_get_page_size (adjustment), 2.0 / 3.0);
   delta = (event->direction == GDK_SCROLL_UP) ? -delta : delta;
 
   /* apply the new adjustment value */
-  value = CLAMP (adjustment->value + delta, adjustment->lower, adjustment->upper - adjustment->page_size);
+  value = CLAMP (gtk_adjustment_get_value (adjustment) + delta, 
+                 gtk_adjustment_get_lower (adjustment),
+                 gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_page_size (adjustment));
   gtk_adjustment_set_value (adjustment, value);
 
   return TRUE;
@@ -2480,7 +2540,7 @@ exo_icon_view_leave_notify_event (GtkWidget        *widget,
                                   GdkEventCrossing *event)
 {
   /* reset cursor to default */
-  if (GTK_WIDGET_REALIZED (widget))
+  if (gtk_widget_get_realized (widget))
     gdk_window_set_cursor (widget->window, NULL);
 
   /* call the parent's leave_notify_event (if any) */
@@ -2786,7 +2846,6 @@ exo_icon_view_set_adjustments (ExoIconView   *icon_view,
     {
       icon_view->priv->hadjustment = hadj;
       g_object_ref (icon_view->priv->hadjustment);
-      gtk_widget_sink (GTK_OBJECT (icon_view->priv->hadjustment));
 
       g_signal_connect (icon_view->priv->hadjustment, "value-changed",
                         G_CALLBACK (exo_icon_view_adjustment_changed),
@@ -2798,7 +2857,6 @@ exo_icon_view_set_adjustments (ExoIconView   *icon_view,
     {
       icon_view->priv->vadjustment = vadj;
       g_object_ref (icon_view->priv->vadjustment);
-      gtk_widget_sink (GTK_OBJECT (icon_view->priv->vadjustment));
 
       g_signal_connect (icon_view->priv->vadjustment, "value-changed",
                         G_CALLBACK (exo_icon_view_adjustment_changed),
@@ -2928,9 +2986,11 @@ static void
 exo_icon_view_adjustment_changed (GtkAdjustment *adjustment,
                                   ExoIconView   *icon_view)
 {
-  if (GTK_WIDGET_REALIZED (icon_view))
+  if (gtk_widget_get_realized (GTK_WIDGET (icon_view)))
     {
-      gdk_window_move (icon_view->priv->bin_window, -icon_view->priv->hadjustment->value, -icon_view->priv->vadjustment->value);
+      gdk_window_move (icon_view->priv->bin_window,
+                       -gtk_adjustment_get_value (icon_view->priv->hadjustment), 
+                       -gtk_adjustment_get_value (icon_view->priv->vadjustment));
 
       if (G_UNLIKELY (icon_view->priv->doing_rubberband))
         exo_icon_view_update_rubberband (GTK_WIDGET (icon_view));
@@ -3141,16 +3201,16 @@ static void
 exo_icon_view_set_adjustment_upper (GtkAdjustment *adj,
                                     gdouble        upper)
 {
-  if (upper != adj->upper)
+  if (upper != gtk_adjustment_get_upper (adj))
     {
-      gdouble min = MAX (0.0, upper - adj->page_size);
+      gdouble min = MAX (0.0, upper - gtk_adjustment_get_page_size (adj));
       gboolean value_changed = FALSE;
 
-      adj->upper = upper;
+      gtk_adjustment_set_upper (adj, upper)
 
-      if (adj->value > min)
+      if (gtk_adjustment_get_value (adj) > min)
         {
-          adj->value = min;
+          gtk_adjustment_set_value (adj, min)
           value_changed = TRUE;
         }
 
@@ -3323,7 +3383,7 @@ exo_icon_view_layout (ExoIconView *icon_view)
       || priv->height != GTK_WIDGET (icon_view)->requisition.height)
     gtk_widget_queue_resize_no_redraw (GTK_WIDGET (icon_view));
 
-  if (GTK_WIDGET_REALIZED (icon_view))
+  if (gtk_widget_get_realized (GTK_WIDGET (icon_view)))
     {
       gdk_window_resize (priv->bin_window,
                          MAX (priv->width, GTK_WIDGET (icon_view)->allocation.width),
@@ -3918,7 +3978,8 @@ exo_icon_view_row_deleted (GtkTreeModel *model,
         g_source_remove (icon_view->priv->single_click_timeout_id);
 
       /* in single click mode, we also reset the cursor when realized */
-      if (G_UNLIKELY (icon_view->priv->single_click && GTK_WIDGET_REALIZED (icon_view)))
+      if (G_UNLIKELY (icon_view->priv->single_click
+          && gtk_widget_get_realized (GTK_WIDGET (icon_view))))
         gdk_window_set_cursor (icon_view->priv->bin_window, NULL);
     }
 
@@ -4168,7 +4229,7 @@ find_item_page_up_down (ExoIconView     *icon_view,
   GList *item = g_list_find (icon_view->priv->items, current);
   GList *next;
   gint   col = current->col;
-  gint   y = current->area.y + count * icon_view->priv->vadjustment->page_size;
+  gint   y = current->area.y + count * gtk_adjustment_get_page_size (icon_view->priv->vadjustment);
 
   if (count > 0)
     {
@@ -4589,16 +4650,16 @@ exo_icon_view_scroll_to_item (ExoIconView     *icon_view,
 
   if (y + item->area.y - focus_width < 0)
     gtk_adjustment_set_value (icon_view->priv->vadjustment,
-                              icon_view->priv->vadjustment->value + y + item->area.y - focus_width);
+                              gtk_adjustment_get_value (icon_view->priv->vadjustment) + y + item->area.y - focus_width);
   else if (y + item->area.y + item->area.height + focus_width > GTK_WIDGET (icon_view)->allocation.height)
     gtk_adjustment_set_value (icon_view->priv->vadjustment,
-                              icon_view->priv->vadjustment->value + y + item->area.y + item->area.height
+                              gtk_adjustment_get_value (icon_view->priv->vadjustment) + y + item->area.y + item->area.height
                               + focus_width - GTK_WIDGET (icon_view)->allocation.height);
 
   if (x + item->area.x - focus_width < 0)
     {
       gtk_adjustment_set_value (icon_view->priv->hadjustment,
-                                icon_view->priv->hadjustment->value + x + item->area.x - focus_width);
+                                gtk_adjustment_get_value (icon_view->priv->hadjustment) + x + item->area.x - focus_width);
     }
   else if (x + item->area.x + item->area.width + focus_width > GTK_WIDGET (icon_view)->allocation.width
         && item->area.width < GTK_WIDGET (icon_view)->allocation.width)
@@ -4609,7 +4670,7 @@ exo_icon_view_scroll_to_item (ExoIconView     *icon_view,
        */
 
       gtk_adjustment_set_value (icon_view->priv->hadjustment,
-                                icon_view->priv->hadjustment->value + x + item->area.x + item->area.width
+                                gtk_adjustment_get_value (icon_view->priv->hadjustment) + x + item->area.x + item->area.width
                                 + focus_width - GTK_WIDGET (icon_view)->allocation.width);
     }
 
@@ -4712,7 +4773,7 @@ exo_icon_view_cell_layout_pack_start (GtkCellLayout   *layout,
   _exo_return_if_fail (exo_icon_view_get_cell_info (icon_view, renderer) == NULL);
 
   g_object_ref (renderer);
-  gtk_widget_sink (GTK_OBJECT (renderer));
+  gtk_widget_sink (GTK_WIDGET (renderer));
 
   info = g_slice_new0 (ExoIconViewCellInfo);
   info->cell = renderer;
@@ -4741,7 +4802,7 @@ exo_icon_view_cell_layout_pack_end (GtkCellLayout   *layout,
   _exo_return_if_fail (exo_icon_view_get_cell_info (icon_view, renderer) == NULL);
 
   g_object_ref (renderer);
-  gtk_widget_sink (GTK_OBJECT (renderer));
+  gtk_widget_sink (GTK_WIDGET (renderer));
 
   info = g_slice_new0 (ExoIconViewCellInfo);
   info->cell = renderer;
@@ -4925,9 +4986,9 @@ exo_icon_view_widget_to_icon_coords (const ExoIconView *icon_view,
   g_return_if_fail (EXO_IS_ICON_VIEW (icon_view));
 
   if (G_LIKELY (ix != NULL))
-    *ix = wx + icon_view->priv->hadjustment->value;
+    *ix = wx + gtk_adjustment_get_value (icon_view->priv->hadjustment);
   if (G_LIKELY (iy != NULL))
-    *iy = wy + icon_view->priv->vadjustment->value;
+    *iy = wy + gtk_adjustment_get_value (icon_view->priv->vadjustment);
 }
 
 
@@ -4953,9 +5014,9 @@ exo_icon_view_icon_to_widget_coords (const ExoIconView *icon_view,
   g_return_if_fail (EXO_IS_ICON_VIEW (icon_view));
 
   if (G_LIKELY (wx != NULL))
-    *wx = ix - icon_view->priv->hadjustment->value;
+    *wx = ix - gtk_adjustment_get_value (icon_view->priv->hadjustment);
   if (G_LIKELY (wy != NULL))
-    *wy = iy - icon_view->priv->vadjustment->value;
+    *wy = iy - gtk_adjustment_get_value (icon_view->priv->vadjustment);
 }
 
 
@@ -4983,8 +5044,8 @@ exo_icon_view_get_path_at_pos (const ExoIconView *icon_view,
   g_return_val_if_fail (EXO_IS_ICON_VIEW (icon_view), NULL);
 
   /* translate the widget coordinates to icon window coordinates */
-  x += icon_view->priv->hadjustment->value;
-  y += icon_view->priv->vadjustment->value;
+  x += gtk_adjustment_get_value (icon_view->priv->hadjustment);
+  y += gtk_adjustment_get_value (icon_view->priv->vadjustment);
 
   item = exo_icon_view_get_item_at_coords (icon_view, x, y, TRUE, NULL);
 
@@ -5074,10 +5135,10 @@ exo_icon_view_get_visible_range (const ExoIconView *icon_view,
   for (i = 0, lp = priv->items; lp != NULL; ++i, lp = lp->next)
     {
       item = (const ExoIconViewItem *) lp->data;
-      if ((item->area.x + item->area.width >= (gint) priv->hadjustment->value) &&
-          (item->area.y + item->area.height >= (gint) priv->vadjustment->value) &&
-          (item->area.x <= (gint) (priv->hadjustment->value + priv->hadjustment->page_size)) &&
-          (item->area.y <= (gint) (priv->vadjustment->value + priv->vadjustment->page_size)))
+      if ((item->area.x + item->area.width >= (gint) gtk_adjustment_get_value (priv->hadjustment)) &&
+          (item->area.y + item->area.height >= (gint) gtk_adjustment_get_value (priv->vadjustment)) &&
+          (item->area.x <= (gint) (gtk_adjustment_get_value (priv->hadjustment) + gtk_adjustment_get_page_size (priv->hadjustment))) &&
+          (item->area.y <= (gint) (pgtk_adjustment_get_value (priv->vadjustment) + gtk_adjustment_get_page_size (priv->vadjustment))))
         {
           if (start_index == -1)
             start_index = i;
@@ -5320,7 +5381,8 @@ exo_icon_view_set_model (ExoIconView  *icon_view,
         g_source_remove (icon_view->priv->single_click_timeout_id);
 
       /* reset cursor when in single click mode and realized */
-      if (G_UNLIKELY (icon_view->priv->single_click && GTK_WIDGET_REALIZED (icon_view)))
+      if (G_UNLIKELY (icon_view->priv->single_click
+          && gtk_widget_get_realized (GTK_WIDGET (icon_view))))
         gdk_window_set_cursor (icon_view->priv->bin_window, NULL);
     }
 
@@ -5391,7 +5453,7 @@ exo_icon_view_set_model (ExoIconView  *icon_view,
   /* notify listeners */
   g_object_notify (G_OBJECT (icon_view), "model");
 
-  if (GTK_WIDGET_REALIZED (icon_view))
+  if (gtk_widget_get_realized (GTK_WIDGET (icon_view)))
     gtk_widget_queue_resize (GTK_WIDGET (icon_view));
 }
 
@@ -5899,7 +5961,7 @@ exo_icon_view_scroll_to_path (ExoIconView *icon_view,
   g_return_if_fail (col_align >= 0.0 && col_align <= 1.0);
 
   /* Delay scrolling if either not realized or pending layout() */
-  if (!GTK_WIDGET_REALIZED (icon_view) || icon_view->priv->layout_idle_id != 0)
+  if (!gtk_widget_get_realized (icon_view) || icon_view->priv->layout_idle_id != 0)
     {
       /* release the previous scroll_to_path reference */
       if (G_UNLIKELY (icon_view->priv->scroll_to_path != NULL))
@@ -5931,16 +5993,16 @@ exo_icon_view_scroll_to_path (ExoIconView *icon_view,
 
           offset =  y + item->area.y - focus_width -
             row_align * (GTK_WIDGET (icon_view)->allocation.height - item->area.height);
-          value = CLAMP (icon_view->priv->vadjustment->value + offset,
-                         icon_view->priv->vadjustment->lower,
-                         icon_view->priv->vadjustment->upper - icon_view->priv->vadjustment->page_size);
+          value = CLAMP (gtk_adjustment_get_value (icon_view->priv->vadjustment) + offset,
+                         gtk_adjustment_get_lower (icon_view->priv->vadjustment),
+                         gtk_adjustment_get_upper (icon_view->priv->vadjustment) - gtk_adjustment_get_page_size (icon_view->priv->vadjustment));
           gtk_adjustment_set_value (icon_view->priv->vadjustment, value);
 
           offset = x + item->area.x - focus_width -
             col_align * (GTK_WIDGET (icon_view)->allocation.width - item->area.width);
-          value = CLAMP (icon_view->priv->hadjustment->value + offset,
-                         icon_view->priv->hadjustment->lower,
-                         icon_view->priv->hadjustment->upper - icon_view->priv->hadjustment->page_size);
+          value = CLAMP (gtk_adjustment_get_value (icon_view->priv->hadjustment) + offset,
+                         gtk_adjustment_get_lower (icon_view->priv->hadjustment),
+                         gtk_adjustment_get_upper (icon_view->priv->hadjustment) - gtk_adjustment_get_page_size (icon_view->priv->hadjustment));
           gtk_adjustment_set_value (icon_view->priv->hadjustment, value);
 
           gtk_adjustment_changed (icon_view->priv->hadjustment);
@@ -6498,8 +6560,8 @@ exo_icon_view_autoscroll (ExoIconView *icon_view)
   gint hoffset, voffset;
   gfloat value;
 
-  gdk_window_get_pointer (GTK_WIDGET (icon_view)->window, &px, &py, NULL);
-  gdk_window_get_geometry (GTK_WIDGET (icon_view)->window, &x, &y, &width, &height, NULL);
+  gdk_window_get_pointer (gtk_widget_get_window (GTK_WIDGET (icon_view)), &px, &py, NULL);
+  gdk_window_get_geometry (gtk_widget_get_window (GTK_WIDGET (icon_view)), &x, &y, &width, &height);
 
   /* see if we are near the edge. */
   voffset = py - (y + 2 * SCROLL_EDGE_SIZE);
@@ -6512,16 +6574,16 @@ exo_icon_view_autoscroll (ExoIconView *icon_view)
 
   if (voffset != 0)
     {
-      value = CLAMP (icon_view->priv->vadjustment->value + voffset,
-                     icon_view->priv->vadjustment->lower,
-                     icon_view->priv->vadjustment->upper - icon_view->priv->vadjustment->page_size);
+      value = CLAMP (gtk_adjustment_get_value (icon_view->priv->vadjustment) + voffset,
+                     gtk_adjustment_get_lower (icon_view->priv->vadjustment),
+                     gtk_adjustment_get_upper (icon_view->priv->vadjustment) - gtk_adjustment_get_page_size(icon_view->priv->vadjustment));
       gtk_adjustment_set_value (icon_view->priv->vadjustment, value);
     }
   if (hoffset != 0)
     {
-      value = CLAMP (icon_view->priv->hadjustment->value + hoffset,
-                     icon_view->priv->hadjustment->lower,
-                     icon_view->priv->hadjustment->upper - icon_view->priv->hadjustment->page_size);
+      value = CLAMP (gtk_adjustment_get_value (icon_view->priv->hadjustment) + hoffset,
+                     gtk_adjustment_get_lower (icon_view->priv->hadjustment),
+                     gtk_adjustment_get_upper (icon_view->priv->hadjustment) - gtk_adjustment_get_page_size (icon_view->priv->hadjustment));
       gtk_adjustment_set_value (icon_view->priv->hadjustment, value);
     }
 }
@@ -7410,7 +7472,7 @@ exo_icon_view_create_drag_icon (ExoIconView *icon_view,
   g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, NULL);
 
   /* verify that the widget is realized */
-  if (G_UNLIKELY (!GTK_WIDGET_REALIZED (icon_view)))
+  if (G_UNLIKELY (!gtk_widget_get_realized (GTK_WIDGET (icon_view))))
     return NULL;
 
   idx = gtk_tree_path_get_indices (path)[0];
@@ -8002,10 +8064,17 @@ exo_icon_view_search_ensure_directory (ExoIconView *icon_view)
   /* check if we already have a search window */
   if (G_LIKELY (icon_view->priv->search_window != NULL))
     {
-      if (GTK_WINDOW (toplevel)->group != NULL)
-        gtk_window_group_add_window (GTK_WINDOW (toplevel)->group, GTK_WINDOW (icon_view->priv->search_window));
-      else if (GTK_WINDOW (icon_view->priv->search_window)->group != NULL)
-        gtk_window_group_remove_window (GTK_WINDOW (icon_view->priv->search_window)->group, GTK_WINDOW (icon_view->priv->search_window));
+      group = gtk_window_get_group (GTK_WINDOW (toplevel));
+      if (group != NULL)
+        {
+          gtk_window_group_add_window (group, GTK_WINDOW (icon_view->priv->search_window));
+        }
+      else
+        {
+          group = gtk_window_get_group (GTK_WINDOW (icon_view->priv->search_window));
+          if (group != NULL)
+            gtk_window_group_remove_window (group, GTK_WINDOW (icon_view->priv->search_window));
+        }
       return;
     }
 
@@ -8439,35 +8508,35 @@ exo_icon_view_search_key_press_event (GtkWidget   *widget,
 
 
   /* close window and cancel the search */
-  if (event->keyval == GDK_Escape || event->keyval == GDK_Tab)
+  if (event->keyval == GDK_KEY_Escape || event->keyval == GDK_KEY_Tab)
     {
       exo_icon_view_search_dialog_hide (widget, icon_view);
       return TRUE;
     }
 
   /* select previous matching iter */
-  if (event->keyval == GDK_Up || event->keyval == GDK_KP_Up)
+  if (event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_KP_Up)
     {
       exo_icon_view_search_move (widget, icon_view, TRUE);
       retval = TRUE;
     }
 
   if (((event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK | GDK_SHIFT_MASK))
-      && (event->keyval == GDK_g || event->keyval == GDK_G))
+      && (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
     {
       exo_icon_view_search_move (widget, icon_view, TRUE);
       retval = TRUE;
     }
 
   /* select next matching iter */
-  if (event->keyval == GDK_Down || event->keyval == GDK_KP_Down)
+  if (event->keyval == GDK_KEY_Down || event->keyval == GDK_KEY_KP_Down)
     {
       exo_icon_view_search_move (widget, icon_view, FALSE);
       retval = TRUE;
     }
 
   if (((event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) == GDK_CONTROL_MASK)
-      && (event->keyval == GDK_g || event->keyval == GDK_G))
+      && (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
     {
       exo_icon_view_search_move (widget, icon_view, FALSE);
       retval = TRUE;
diff --git a/exo/exo-private.c b/exo/exo-private.c
index a9025ac..6aaa0e9 100644
--- a/exo/exo-private.c
+++ b/exo/exo-private.c
@@ -62,14 +62,12 @@ _exo_gtk_widget_send_focus_change (GtkWidget *widget,
 
   g_object_ref (G_OBJECT (widget));
 
- if (in)
-    GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
-  else
-    GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
+  gtk_widget_set_can_focus (widget, in);
 
   fevent = gdk_event_new (GDK_FOCUS_CHANGE);
   fevent->focus_change.type = GDK_FOCUS_CHANGE;
-  fevent->focus_change.window = g_object_ref (widget->window);
+  fevent->focus_change.window = gtk_widget_get_window (widget);
+  g_object_ref (G_OBJECT (fevent->focus_change.window));
   fevent->focus_change.in = in;
 
   gtk_widget_event (widget, fevent);
diff --git a/exo/exo-thumbnail-preview.c b/exo/exo-thumbnail-preview.c
index 797cdf9..95b1cce 100644
--- a/exo/exo-thumbnail-preview.c
+++ b/exo/exo-thumbnail-preview.c
@@ -45,9 +45,8 @@
 
 
 
-static void exo_thumbnail_preview_style_set (GtkWidget           *ebox,
-                                             GtkStyle            *previous_style,
-                                             ExoThumbnailPreview *thumbnail_preview);
+static void exo_thumbnail_preview_style_updated (GtkWidget           *ebox,
+                                                 ExoThumbnailPreview *thumbnail_preview);
 
 
 
@@ -94,11 +93,11 @@ exo_thumbnail_preview_init (ExoThumbnailPreview *thumbnail_preview)
 
   ebox = gtk_event_box_new ();
   gtk_widget_modify_bg (ebox, GTK_STATE_NORMAL, &gtk_widget_get_style (ebox)->base[GTK_STATE_NORMAL]);
-  g_signal_connect (G_OBJECT (ebox), "style-set", G_CALLBACK (exo_thumbnail_preview_style_set), thumbnail_preview);
+  g_signal_connect (G_OBJECT (ebox), "style-updated", G_CALLBACK (exo_thumbnail_preview_style_updated), thumbnail_preview);
   gtk_container_add (GTK_CONTAINER (thumbnail_preview), ebox);
   gtk_widget_show (ebox);
 
-  vbox = gtk_vbox_new (FALSE, 0);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (ebox), vbox);
   gtk_widget_show (vbox);
 
@@ -115,7 +114,7 @@ exo_thumbnail_preview_init (ExoThumbnailPreview *thumbnail_preview)
   gtk_container_add (GTK_CONTAINER (button), label);
   gtk_widget_show (label);
 
-  box = gtk_vbox_new (FALSE, 2);
+  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
   gtk_container_set_border_width (GTK_CONTAINER (box), 2);
   gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 0);
   gtk_widget_show (box);
@@ -140,20 +139,19 @@ exo_thumbnail_preview_init (ExoThumbnailPreview *thumbnail_preview)
 
 
 static void
-exo_thumbnail_preview_style_set (GtkWidget           *ebox,
-                                 GtkStyle            *previous_style,
-                                 ExoThumbnailPreview *thumbnail_preview)
+exo_thumbnail_preview_style_updated (GtkWidget           *ebox,
+                                     ExoThumbnailPreview *thumbnail_preview)
 {
   _exo_return_if_fail (EXO_IS_THUMBNAIL_PREVIEW (thumbnail_preview));
   _exo_return_if_fail (GTK_IS_EVENT_BOX (ebox));
 
   /* check if the ebox is already realized */
-  if (GTK_WIDGET_REALIZED (ebox))
+  if (gtk_widget_get_realized (ebox))
     {
       /* set background color (using the base color) */
-      g_signal_handlers_block_by_func (G_OBJECT (ebox), exo_thumbnail_preview_style_set, thumbnail_preview);
-      gtk_widget_modify_bg (ebox, GTK_STATE_NORMAL, &ebox->style->base[GTK_STATE_NORMAL]);
-      g_signal_handlers_unblock_by_func (G_OBJECT (ebox), exo_thumbnail_preview_style_set, thumbnail_preview);
+      g_signal_handlers_block_by_func (G_OBJECT (ebox), exo_thumbnail_preview_style_updated, thumbnail_preview);
+      /*TODO gtk_widget_modify_bg (ebox, GTK_STATE_NORMAL, &ebox->style->base[GTK_STATE_NORMAL]); */
+      g_signal_handlers_unblock_by_func (G_OBJECT (ebox), exo_thumbnail_preview_style_updated, thumbnail_preview);
     }
 }
 
diff --git a/exo/exo-toolbars-editor-dialog.c b/exo/exo-toolbars-editor-dialog.c
index 95b4568..bd50ad3 100644
--- a/exo/exo-toolbars-editor-dialog.c
+++ b/exo/exo-toolbars-editor-dialog.c
@@ -90,24 +90,23 @@ exo_toolbars_editor_dialog_init (ExoToolbarsEditorDialog *dialog)
 
   dialog->priv = EXO_TOOLBARS_EDITOR_DIALOG_GET_PRIVATE (dialog);
 
-  gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
   gtk_window_set_default_size (GTK_WINDOW (dialog), -1, 300);
 
   dialog->priv->editor = g_object_new (EXO_TYPE_TOOLBARS_EDITOR, NULL);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), dialog->priv->editor, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), dialog->priv->editor, TRUE, TRUE, 0);
   gtk_widget_show (dialog->priv->editor);
 
   button = gtk_button_new ();
   g_signal_connect_swapped (G_OBJECT (button), "clicked",
                             G_CALLBACK (exo_toolbars_editor_dialog_add_toolbar), dialog);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (dialog))), button, FALSE, TRUE, 0);
   gtk_widget_show (button);
 
   align = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
   gtk_container_add (GTK_CONTAINER (button), align);
   gtk_widget_show (align);
 
-  hbox = gtk_hbox_new (FALSE, 2);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
   gtk_container_add (GTK_CONTAINER (align), hbox);
   gtk_widget_show (hbox);
 
@@ -122,7 +121,7 @@ exo_toolbars_editor_dialog_init (ExoToolbarsEditorDialog *dialog)
   button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
   g_signal_connect_swapped (G_OBJECT (button), "clicked",
                             G_CALLBACK (gtk_widget_destroy), dialog);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (dialog))), button, FALSE, TRUE, 0);
   gtk_widget_show (button);
 }
 
diff --git a/exo/exo-toolbars-editor.c b/exo/exo-toolbars-editor.c
index c1f639f..8e265f1 100644
--- a/exo/exo-toolbars-editor.c
+++ b/exo/exo-toolbars-editor.c
@@ -209,7 +209,7 @@ exo_toolbars_editor_init (ExoToolbarsEditor *editor)
                                          editor->priv->table);
   gtk_widget_show (editor->priv->table);
 
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   gtk_box_pack_start (GTK_BOX (editor), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -310,7 +310,7 @@ exo_toolbars_editor_drag_data_get (GtkWidget          *item,
 
   action = g_object_get_data (G_OBJECT (item), I_("gtk-action"));
   target = (action != NULL) ? gtk_action_get_name (action) : "separator";
-  gtk_selection_data_set (selection_data, selection_data->target,
+  gtk_selection_data_set (selection_data, gtk_selection_data_get_target (selection_data),
                           8, (const guchar *) target, strlen (target));
 }
 
@@ -375,7 +375,7 @@ exo_toolbars_editor_create_item (ExoToolbarsEditor  *editor,
                         G_CALLBACK (gtk_widget_show), NULL);
     }
 
-  vbox = gtk_vbox_new (0, FALSE);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (ebox), vbox);
   gtk_widget_show (vbox);
 
diff --git a/exo/exo-toolbars-private.c b/exo/exo-toolbars-private.c
index bffcaba..8a776c2 100644
--- a/exo/exo-toolbars-private.c
+++ b/exo/exo-toolbars-private.c
@@ -153,7 +153,7 @@ _exo_toolbars_new_separator_pixbuf (void)
   GtkWidget *separator;
   GdkPixbuf *pixbuf;
 
-  separator = gtk_vseparator_new ();
+  separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
   pixbuf = new_pixbuf_from_widget (separator);
   gtk_widget_destroy (separator);
 
@@ -348,7 +348,7 @@ _exo_toolbars_set_drag_cursor (GtkWidget *widget)
                                            pixbuf, 12, 12);
       gdk_window_set_cursor (widget->window, cursor);
       g_object_unref (G_OBJECT (pixbuf));
-      gdk_cursor_unref (cursor);
+      g_object_unref (G_OBJECT (cursor));
     }
 }
 
diff --git a/exo/exo-toolbars-view.c b/exo/exo-toolbars-view.c
index 21410c4..a18748f 100644
--- a/exo/exo-toolbars-view.c
+++ b/exo/exo-toolbars-view.c
@@ -663,7 +663,7 @@ exo_toolbars_view_drag_data_received (GtkWidget         *toolbar,
                                                                             data_is_separator (id),
                                                                             NULL);
       g_object_ref (G_OBJECT (view->priv->dragged_item));
-      gtk_widget_sink (GTK_OBJECT (view->priv->dragged_item));
+      gtk_widget_sink (GTK_WIDGET (view->priv->dragged_item));
     }
   else
     {
@@ -962,7 +962,7 @@ exo_toolbars_view_create_dock (ExoToolbarsView *view)
   GtkWidget *toolbar;
   GtkWidget *hbox;
 
-  hbox = gtk_hbox_new (0, FALSE);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
   gtk_widget_show (hbox);
 
   toolbar = g_object_new (GTK_TYPE_TOOLBAR,
diff --git a/exo/exo-tree-view.c b/exo/exo-tree-view.c
index 96b26e4..bdfae28 100644
--- a/exo/exo-tree-view.c
+++ b/exo/exo-tree-view.c
@@ -316,7 +316,7 @@ exo_tree_view_button_press_event (GtkWidget      *widget,
       /* if no custom select function is set, we simply use exo_noop_false here,
        * to tell the tree view that it may not alter the selection.
        */
-      if (G_LIKELY (selection->user_func == NULL))
+      if (G_LIKELY (gtk_tree_selection_get_select_function (selection) == NULL))
         gtk_tree_selection_set_select_function (selection, (GtkTreeSelectionFunc) exo_noop_false, NULL, NULL);
       else
         selected_paths = gtk_tree_selection_get_selected_rows (selection, NULL);
@@ -365,7 +365,7 @@ exo_tree_view_button_press_event (GtkWidget      *widget,
       && path != NULL && gtk_tree_selection_path_is_selected (selection, path))
     {
       /* check if we have to restore paths */
-      if (G_LIKELY (selection->user_func != (GtkTreeSelectionFunc) exo_noop_false))
+      if (G_LIKELY (gtk_tree_selection_get_select_function (selection) != (GtkTreeSelectionFunc) exo_noop_false))
         {
           /* select all previously selected paths */
           for (lp = selected_paths; lp != NULL; lp = lp->next)
@@ -374,12 +374,12 @@ exo_tree_view_button_press_event (GtkWidget      *widget,
     }
 
   /* see bug http://bugzilla.xfce.org/show_bug.cgi?id=6230 for more information */
-  if (G_LIKELY (selection->user_func == (GtkTreeSelectionFunc) exo_noop_false))
+  if (G_LIKELY (gtk_tree_selection_get_select_function (selection) == (GtkTreeSelectionFunc) exo_noop_false))
     {
       /* just reset the select function (previously set to exo_noop_false),
        * there's no clean way to do this, so what the heck.
        */
-      selection->user_func = NULL;
+      gtk_tree_selection_set_select_function (selection, NULL, NULL, NULL);
     }
 
   /* release the path (if any) */
@@ -518,7 +518,7 @@ exo_tree_view_motion_notify_event (GtkWidget      *widget,
                   /* setup the hand cursor to indicate that the row at the pointer can be activated with a single click */
                   cursor = gdk_cursor_new (GDK_HAND2);
                   gdk_window_set_cursor (event->window, cursor);
-                  gdk_cursor_unref (cursor);
+                  g_object_unref (G_OBJECT (cursor));
                 }
               else
                 {
@@ -575,7 +575,7 @@ exo_tree_view_leave_notify_event (GtkWidget        *widget,
     }
 
   /* reset the cursor for the tree view internal window */
-  if (GTK_WIDGET_REALIZED (tree_view))
+  if (gtk_widget_get_realized (widget))
     gdk_window_set_cursor (gtk_tree_view_get_bin_window (GTK_TREE_VIEW (tree_view)), NULL);
 
   /* the next button-release-event should not activate */
@@ -621,7 +621,7 @@ exo_tree_view_move_cursor (GtkTreeView    *view,
     }
 
   /* reset the cursor for the tree view internal window */
-  if (GTK_WIDGET_REALIZED (tree_view))
+  if (gtk_widget_get_realized (GTK_WIDGET (view)))
     gdk_window_set_cursor (gtk_tree_view_get_bin_window (GTK_TREE_VIEW (tree_view)), NULL);
 
   /* call the parent's handler */
@@ -646,7 +646,9 @@ exo_tree_view_single_click_timeout (gpointer user_data)
   GDK_THREADS_ENTER ();
 
   /* verify that we are in single-click mode, have focus and a hover path */
-  if (GTK_WIDGET_HAS_FOCUS (tree_view) && tree_view->priv->single_click && tree_view->priv->hover_path != NULL)
+  if (gtk_widget_has_focus (GTK_WIDGET (tree_view))
+      && tree_view->priv->single_click
+      && tree_view->priv->hover_path != NULL)
     {
       /* transform the hover_path to a tree iterator */
       model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
diff --git a/exo/exo-wrap-table.c b/exo/exo-wrap-table.c
index 020cea6..3611921 100644
--- a/exo/exo-wrap-table.c
+++ b/exo/exo-wrap-table.c
@@ -323,11 +323,12 @@ exo_wrap_table_add (GtkContainer *container,
   table->priv->children = g_list_append (table->priv->children, widget);
 
   /* realize the widget if required */
-  if (GTK_WIDGET_REALIZED (container))
+  if (gtk_widget_get_realized (GTK_WIDGET (container)))
     gtk_widget_realize (widget);
 
   /* map the widget if required */
-  if (GTK_WIDGET_VISIBLE (container) && GTK_WIDGET_VISIBLE (widget))
+  if (gtk_widget_get_visible (GTK_WIDGET (container))
+      && gtk_widget_get_visible (GTK_WIDGET (widget)))
     {
       if (GTK_WIDGET_MAPPED (container))
         gtk_widget_map (widget);
diff --git a/exo/exo.h b/exo/exo.h
index 0dffb4e..fe600cf 100644
--- a/exo/exo.h
+++ b/exo/exo.h
@@ -37,26 +37,18 @@
 
 #include <exo/exo-binding.h>
 #include <exo/exo-cell-renderer-ellipsized-text.h>
-#include <exo/exo-cell-renderer-icon.h>
 #include <exo/exo-execute.h>
 #include <exo/exo-enum-types.h>
 #include <exo/exo-gdk-pixbuf-extensions.h>
 #include <exo/exo-gtk-extensions.h>
 #include <exo/exo-gobject-extensions.h>
-#include <exo/exo-icon-bar.h>
-#include <exo/exo-icon-chooser-dialog.h>
 #include <exo/exo-icon-view.h>
+#include <exo/exo-icon-chooser-dialog.h>
 #include <exo/exo-job.h>
 #include <exo/exo-simple-job.h>
 #include <exo/exo-string.h>
-#include <exo/exo-toolbars-editor.h>
-#include <exo/exo-toolbars-editor-dialog.h>
-#include <exo/exo-toolbars-model.h>
-#include <exo/exo-toolbars-view.h>
 #include <exo/exo-tree-view.h>
 #include <exo/exo-utils.h>
-#include <exo/exo-wrap-table.h>
-#include <exo/exo-xsession-client.h>
 
 #undef EXO_INSIDE_EXO_H
 
diff --git a/exo/exo.symbols b/exo/exo.symbols
index 74511cb..3fa5601 100644
--- a/exo/exo.symbols
+++ b/exo/exo.symbols
@@ -54,14 +54,6 @@ exo_cell_renderer_ellipsized_text_new G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT
 #endif
 #endif
 
-/* ExoCellRendererIcon methods */
-#if IN_HEADER(__EXO_CELL_RENDERER_ICON_H__)
-#if IN_SOURCE(__EXO_CELL_RENDERER_ICON_C__)
-exo_cell_renderer_icon_get_type G_GNUC_CONST
-exo_cell_renderer_icon_new G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT
-#endif
-#endif
-
 /* exo-config variables */
 #if IN_HEADER(__EXO_CONFIG_H__)
 #if IN_SOURCE(__EXO_CONFIG_C__)
@@ -77,9 +69,7 @@ exo_check_version
 /* exo-enum-types functions */
 #if IN_HEADER(__EXO_ENUM_TYPES_H__)
 #if IN_SOURCE(__EXO_ENUM_TYPES_C__)
-exo_icon_view_drop_position_get_type G_GNUC_CONST
-exo_icon_view_layout_mode_get_type G_GNUC_CONST
-exo_toolbars_model_flags_get_type G_GNUC_CONST
+
 #endif
 #endif
 
@@ -116,33 +106,12 @@ exo_g_value_transform_negate
 /* exo-gtk-extensions functions */
 #if IN_HEADER(__EXO_GTK_EXTENSIONS_H__)
 #if IN_SOURCE(__EXO_GTK_EXTENSIONS_C__)
-exo_gtk_object_destroy_later
+exo_gtk_widget_destroy_later
 exo_gtk_file_chooser_add_thumbnail_preview
 exo_gtk_url_about_dialog_hook
 #endif
 #endif
 
-/* ExoIconBar methods */
-#if IN_HEADER(__EXO_ICON_BAR_H__)
-#if IN_SOURCE(__EXO_ICON_BAR_C__)
-exo_icon_bar_get_type G_GNUC_CONST
-exo_icon_bar_new
-exo_icon_bar_new_with_model
-exo_icon_bar_get_model
-exo_icon_bar_set_model
-exo_icon_bar_get_pixbuf_column
-exo_icon_bar_set_pixbuf_column
-exo_icon_bar_get_text_column
-exo_icon_bar_set_text_column
-exo_icon_bar_get_orientation
-exo_icon_bar_set_orientation
-exo_icon_bar_get_active
-exo_icon_bar_set_active
-exo_icon_bar_get_active_iter
-exo_icon_bar_set_active_iter
-#endif
-#endif
-
 /* ExoIconChooserDialog methods */
 #if IN_HEADER(__EXO_ICON_CHOOSER_DIALOG_H__)
 #if IN_SOURCE(__EXO_ICON_CHOOSER_DIALOG_C__)
@@ -153,75 +122,6 @@ exo_icon_chooser_dialog_set_icon
 #endif
 #endif
 
-/* ExoIconView methods */
-#if IN_HEADER(__EXO_ICON_VIEW_H__)
-#if IN_SOURCE(__EXO_ICON_VIEW_C__)
-exo_icon_view_get_type G_GNUC_CONST
-exo_icon_view_new
-exo_icon_view_new_with_model
-exo_icon_view_get_model
-exo_icon_view_set_model
-exo_icon_view_get_orientation
-exo_icon_view_set_orientation
-exo_icon_view_get_columns
-exo_icon_view_set_columns
-exo_icon_view_get_item_width
-exo_icon_view_set_item_width
-exo_icon_view_get_spacing
-exo_icon_view_set_spacing
-exo_icon_view_get_row_spacing
-exo_icon_view_set_row_spacing
-exo_icon_view_get_column_spacing
-exo_icon_view_set_column_spacing
-exo_icon_view_get_margin
-exo_icon_view_set_margin
-exo_icon_view_get_selection_mode
-exo_icon_view_set_selection_mode
-exo_icon_view_get_single_click
-exo_icon_view_set_single_click
-exo_icon_view_get_single_click_timeout
-exo_icon_view_set_single_click_timeout
-exo_icon_view_get_layout_mode
-exo_icon_view_set_layout_mode
-exo_icon_view_widget_to_icon_coords
-exo_icon_view_icon_to_widget_coords
-exo_icon_view_get_path_at_pos
-exo_icon_view_get_item_at_pos
-exo_icon_view_get_visible_range
-exo_icon_view_selected_foreach
-exo_icon_view_select_path
-exo_icon_view_unselect_path
-exo_icon_view_path_is_selected
-exo_icon_view_get_item_column
-exo_icon_view_get_item_row
-exo_icon_view_get_selected_items
-exo_icon_view_select_all
-exo_icon_view_unselect_all
-exo_icon_view_item_activated
-exo_icon_view_get_cursor
-exo_icon_view_set_cursor
-exo_icon_view_scroll_to_path
-exo_icon_view_enable_model_drag_source
-exo_icon_view_enable_model_drag_dest
-exo_icon_view_unset_model_drag_source
-exo_icon_view_unset_model_drag_dest
-exo_icon_view_set_reorderable
-exo_icon_view_get_reorderable
-exo_icon_view_set_drag_dest_item
-exo_icon_view_get_drag_dest_item
-exo_icon_view_get_dest_item_at_pos
-exo_icon_view_create_drag_icon
-exo_icon_view_get_enable_search
-exo_icon_view_set_enable_search
-exo_icon_view_get_search_column
-exo_icon_view_set_search_column
-exo_icon_view_get_search_equal_func
-exo_icon_view_set_search_equal_func
-exo_icon_view_get_search_position_func
-exo_icon_view_set_search_position_func
-#endif
-#endif
-
 /* exo-job functions */
 #if IN_HEADER(__EXO_JOB_H__)
 #if IN_SOURCE(__EXO_JOB_C__)
@@ -351,19 +251,6 @@ exo_tree_view_set_single_click_timeout
 #endif
 #endif
 
-#if IN_HEADER(__EXO_WRAP_TABLE_H__)
-#if IN_SOURCE(__EXO_WRAP_TABLE_C__)
-exo_wrap_table_get_type G_GNUC_CONST
-exo_wrap_table_new G_GNUC_MALLOC
-exo_wrap_table_get_col_spacing
-exo_wrap_table_set_col_spacing
-exo_wrap_table_get_row_spacing
-exo_wrap_table_set_row_spacing
-exo_wrap_table_get_homogeneous
-exo_wrap_table_set_homogeneous
-#endif
-#endif
-
 /* ExoXsessionClient methods */
 #if IN_HEADER(__EXO_XSESSION_CLIENT_H__)
 #if IN_SOURCE(__EXO_XSESSION_CLIENT_C__)


More information about the Xfce4-commits mailing list