[Xfce4-commits] [xfce/thunar] 11/46: Make Thunar core compile and not crash with Gtk3

noreply at xfce.org noreply at xfce.org
Tue Aug 15 02:35:19 CEST 2017


This is an automated email from the git hooks/post-receive script.

a   n   d   r   e       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/thunar.

commit 81e645d8faaab8c91f6b6b907f1667052a760a76
Author: Jonas Kümmerlin <rgcjonas at gmail.com>
Date:   Sat Aug 8 18:15:26 2015 +0200

    Make Thunar core compile and not crash with Gtk3
    
    Optional plugins are not ported yet. We use a shitload of
    deprecated Gtk APIs now. Not all features work.
    It doesn't look great yet. There are bugs.
    
    But, well, it's a first step.
---
 configure.ac.in                         |   6 +-
 plugins/thunar-sendto-email/main.c      |   2 +-
 po/POTFILES.in                          |   1 -
 thunar/Makefile.am                      |   2 -
 thunar/thunar-abstract-dialog.c         |   4 +-
 thunar/thunar-abstract-icon-view.c      |   5 +-
 thunar/thunar-details-view.c            |   7 +-
 thunar/thunar-dialogs.c                 |   2 -
 thunar/thunar-emblem-chooser.c          |  22 +-
 thunar/thunar-gtk-extensions.h          |   4 +
 thunar/thunar-icon-renderer.c           | 103 ++--
 thunar/thunar-location-buttons.c        |  62 ++-
 thunar/thunar-location-entry.c          |   2 +-
 thunar/thunar-path-entry.c              |  60 +--
 thunar/thunar-permissions-chooser.c     |   1 -
 thunar/thunar-properties-dialog.c       |   4 +-
 thunar/thunar-renamer-progress.c        |  12 +-
 thunar/thunar-shortcuts-icon-renderer.c |  27 +-
 thunar/thunar-shortcuts-view.c          |   8 +-
 thunar/thunar-standard-view.c           |  48 +-
 thunar/thunar-statusbar.c               |   1 -
 thunar/thunar-text-renderer.c           | 880 --------------------------------
 thunar/thunar-text-renderer.h           |  43 --
 thunar/thunar-tree-view.c               |  26 +-
 thunar/thunar-window.c                  |  21 +-
 thunarx/thunarx-property-page.c         |  69 +--
 26 files changed, 220 insertions(+), 1202 deletions(-)

diff --git a/configure.ac.in b/configure.ac.in
index 836e468..740c7f1 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -140,15 +140,15 @@ XDT_CHECK_LIBX11_REQUIRE()
 dnl ***********************************
 dnl *** Check for required packages ***
 dnl ***********************************
-XDT_CHECK_PACKAGE([EXO], [exo-1], [0.10.0])
+XDT_CHECK_PACKAGE([EXO], [exo-2], [0.10.0])
 XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.30.0])
 XDT_CHECK_PACKAGE([GIO], [gio-2.0], [2.30.0])
 XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.30.0])
 XDT_CHECK_PACKAGE([GMODULE], [gmodule-2.0], [2.30.0])
-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.24.0])
+XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.14.0])
 XDT_CHECK_PACKAGE([GDK_PIXBUF], [gdk-pixbuf-2.0], [2.14.0])
 XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.10.0])
-XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.10.0])
+XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.10.0])
 XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.10.0])
 
 dnl ********************************************
diff --git a/plugins/thunar-sendto-email/main.c b/plugins/thunar-sendto-email/main.c
index db31890..7c56c30 100644
--- a/plugins/thunar-sendto-email/main.c
+++ b/plugins/thunar-sendto-email/main.c
@@ -268,7 +268,7 @@ tse_progress (const gchar *working_directory,
 
   /* allocate the progress dialog */
   dialog = gtk_dialog_new_with_buttons (_("Compressing files..."),
-                                        NULL, GTK_DIALOG_NO_SEPARATOR,
+                                        NULL, 0,
                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                         NULL);
   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL);
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1c487a9..587f917 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -76,7 +76,6 @@ thunar/thunar-standard-view.c
 thunar/thunar-statusbar.c
 thunar/thunar-stock.c
 thunar/thunar-templates-action.c
-thunar/thunar-text-renderer.c
 thunar/thunar-thumbnail-cache.c
 thunar/thunar-thumbnailer.c
 thunar/thunar-transfer-job.c
diff --git a/thunar/Makefile.am b/thunar/Makefile.am
index 8e7d624..ac6511e 100644
--- a/thunar/Makefile.am
+++ b/thunar/Makefile.am
@@ -191,8 +191,6 @@ thunar_SOURCES =							\
 	thunar-stock.h							\
 	thunar-templates-action.c					\
 	thunar-templates-action.h					\
-	thunar-text-renderer.c						\
-	thunar-text-renderer.h						\
 	thunar-thumbnail-cache.c					\
 	thunar-thumbnail-cache.h					\
 	thunar-thumbnailer.c						\
diff --git a/thunar/thunar-abstract-dialog.c b/thunar/thunar-abstract-dialog.c
index 48d71fe..1540e8a 100644
--- a/thunar/thunar-abstract-dialog.c
+++ b/thunar/thunar-abstract-dialog.c
@@ -46,8 +46,8 @@ thunar_abstract_dialog_class_init (ThunarAbstractDialogClass *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);
 }
 
 
diff --git a/thunar/thunar-abstract-icon-view.c b/thunar/thunar-abstract-icon-view.c
index 828818b..15c83d6 100644
--- a/thunar/thunar-abstract-icon-view.c
+++ b/thunar/thunar-abstract-icon-view.c
@@ -224,7 +224,8 @@ thunar_abstract_icon_view_init (ThunarAbstractIconView *abstract_icon_view)
                                  "file", THUNAR_COLUMN_FILE);
 
   /* add the name renderer */
-  g_object_set (G_OBJECT (THUNAR_STANDARD_VIEW (abstract_icon_view)->name_renderer), "follow-state", TRUE, NULL);
+  /*FIXME text prelit*/
+  /*g_object_set (G_OBJECT (THUNAR_STANDARD_VIEW (abstract_icon_view)->name_renderer), "follow-state", TRUE, NULL);*/
   gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (view), THUNAR_STANDARD_VIEW (abstract_icon_view)->name_renderer, TRUE);
   gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (view), THUNAR_STANDARD_VIEW (abstract_icon_view)->name_renderer,
                                  "text", THUNAR_COLUMN_NAME);
@@ -695,7 +696,7 @@ thunar_abstract_icon_view_key_press_event (ExoIconView            *view,
                                            ThunarAbstractIconView *abstract_icon_view)
 {
   /* popup context menu if "Menu" or "<Shift>F10" is pressed */
-  if (event->keyval == GDK_Menu || ((event->state & GDK_SHIFT_MASK) != 0 && event->keyval == GDK_F10))
+  if (event->keyval == GDK_KEY_Menu || ((event->state & GDK_SHIFT_MASK) != 0 && event->keyval == GDK_KEY_F10))
     {
       thunar_standard_view_context_menu (THUNAR_STANDARD_VIEW (abstract_icon_view), 0, event->time);
       return TRUE;
diff --git a/thunar/thunar-details-view.c b/thunar/thunar-details-view.c
index acb9339..69f89a1 100644
--- a/thunar/thunar-details-view.c
+++ b/thunar/thunar-details-view.c
@@ -28,7 +28,6 @@
 #include <thunar/thunar-details-view-ui.h>
 #include <thunar/thunar-gtk-extensions.h>
 #include <thunar/thunar-private.h>
-#include <thunar/thunar-text-renderer.h>
 #include <thunar/thunar-preferences.h>
 
 
@@ -237,11 +236,11 @@ thunar_details_view_init (ThunarDetailsView *details_view)
                           G_CALLBACK (thunar_details_view_row_changed), details_view);
 
   /* allocate the shared right-aligned text renderer */
-  right_aligned_renderer = g_object_new (THUNAR_TYPE_TEXT_RENDERER, "xalign", 1.0f, NULL);
+  right_aligned_renderer = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, "xalign", 1.0f, NULL);
   g_object_ref_sink (G_OBJECT (right_aligned_renderer));
 
   /* allocate the shared left-aligned text renderer */
-  left_aligned_renderer = g_object_new (THUNAR_TYPE_TEXT_RENDERER, "xalign", 0.0f, NULL);
+  left_aligned_renderer = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, "xalign", 0.0f, NULL);
   g_object_ref_sink (G_OBJECT (left_aligned_renderer));
 
   /* allocate the tree view columns */
@@ -809,7 +808,7 @@ thunar_details_view_key_press_event (GtkTreeView       *tree_view,
                                      ThunarDetailsView *details_view)
 {
   /* popup context menu if "Menu" or "<Shift>F10" is pressed */
-  if (event->keyval == GDK_Menu || ((event->state & GDK_SHIFT_MASK) != 0 && event->keyval == GDK_F10))
+  if (event->keyval == GDK_KEY_Menu || ((event->state & GDK_SHIFT_MASK) != 0 && event->keyval == GDK_KEY_F10))
     {
       thunar_standard_view_context_menu (THUNAR_STANDARD_VIEW (details_view), 0, event->time);
       return TRUE;
diff --git a/thunar/thunar-dialogs.c b/thunar/thunar-dialogs.c
index 62fa063..9082460 100644
--- a/thunar/thunar-dialogs.c
+++ b/thunar/thunar-dialogs.c
@@ -94,7 +94,6 @@ thunar_dialogs_show_rename_file (gpointer    parent,
   dialog = gtk_dialog_new_with_buttons (title,
                                         window,
                                         GTK_DIALOG_MODAL
-                                        | GTK_DIALOG_NO_SEPARATOR
                                         | GTK_DIALOG_DESTROY_WITH_PARENT,
                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                         _("_Rename"), GTK_RESPONSE_OK,
@@ -539,7 +538,6 @@ thunar_dialogs_show_job_ask_replace (GtkWindow  *parent,
   dialog = gtk_dialog_new_with_buttons (_("Confirm to replace files"),
                                         parent,
                                         GTK_DIALOG_MODAL
-                                        | GTK_DIALOG_NO_SEPARATOR
                                         | GTK_DIALOG_DESTROY_WITH_PARENT,
                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                         _("S_kip All"), THUNAR_JOB_RESPONSE_NO_ALL,
diff --git a/thunar/thunar-emblem-chooser.c b/thunar/thunar-emblem-chooser.c
index 753bfdd..be61f09 100644
--- a/thunar/thunar-emblem-chooser.c
+++ b/thunar/thunar-emblem-chooser.c
@@ -135,10 +135,9 @@ thunar_emblem_chooser_init (ThunarEmblemChooser *chooser)
   gtk_widget_show (viewport);
 
   /* setup the wrap table */
-  chooser->table = g_object_new (EXO_TYPE_WRAP_TABLE,
-                                 "border-width", 6,
+  chooser->table = g_object_new (GTK_TYPE_FLOW_BOX,
                                  "homogeneous", TRUE,
-                                 "col-spacing", 12,
+                                 "column-spacing", 12,
                                  "row-spacing", 12,
                                  NULL);
   gtk_container_add (GTK_CONTAINER (viewport), chooser->table);
@@ -314,6 +313,7 @@ thunar_emblem_chooser_file_changed (ThunarEmblemChooser *chooser)
   GList       *file_emblems;
   GList       *children;
   GList       *lp, *li;
+  GObject     *child;
   guint       *count;
   guint        n_files = 0;
 
@@ -344,22 +344,26 @@ thunar_emblem_chooser_file_changed (ThunarEmblemChooser *chooser)
   children = gtk_container_get_children (GTK_CONTAINER (chooser->table));
   for (lp = children; lp != NULL; lp = lp->next)
     {
-      emblem_name = g_object_get_data (G_OBJECT (lp->data), I_("thunar-emblem"));
+      child = G_OBJECT (lp->data);
+      if (GTK_IS_FLOW_BOX_CHILD (child))
+        child = G_OBJECT (gtk_bin_get_child (GTK_BIN (child)));
+
+      emblem_name = g_object_get_data (child, I_("thunar-emblem"));
       count = g_hash_table_lookup (emblem_names, emblem_name);
 
-      g_signal_handlers_block_by_func (lp->data, thunar_emblem_chooser_button_toggled, chooser);
+      g_signal_handlers_block_by_func (child, thunar_emblem_chooser_button_toggled, chooser);
 
       if (count == NULL || *count == n_files)
         {
-          gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (lp->data), FALSE);
-          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lp->data), count != NULL);
+          gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (child), FALSE);
+          gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (child), count != NULL);
         }
       else
         {
-          gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (lp->data), TRUE);
+          gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (child), TRUE);
         }
 
-      g_signal_handlers_unblock_by_func (lp->data, thunar_emblem_chooser_button_toggled, chooser);
+      g_signal_handlers_unblock_by_func (child, thunar_emblem_chooser_button_toggled, chooser);
     }
   g_list_free (children);
 
diff --git a/thunar/thunar-gtk-extensions.h b/thunar/thunar-gtk-extensions.h
index c5c160e..afc4150 100644
--- a/thunar/thunar-gtk-extensions.h
+++ b/thunar/thunar-gtk-extensions.h
@@ -51,6 +51,8 @@ void             thunar_gtk_widget_set_tooltip                (GtkWidget
 
 GMountOperation *thunar_gtk_mount_operation_new               (gpointer            parent);
 
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+
 static inline int
 thunar_gtk_widget_get_allocation_x (GtkWidget *widget)
 {
@@ -111,6 +113,8 @@ thunar_gtk_widget_get_requisition_height (GtkWidget *widget)
     return requisition.height;
 }
 
+G_GNUC_END_IGNORE_DEPRECATIONS
+
 G_END_DECLS;
 
 #endif /* !__THUNAR_GTK_EXTENSIONS_H__ */
diff --git a/thunar/thunar-icon-renderer.c b/thunar/thunar-icon-renderer.c
index 4e1e7c0..fea809e 100644
--- a/thunar/thunar-icon-renderer.c
+++ b/thunar/thunar-icon-renderer.c
@@ -51,19 +51,19 @@ static void thunar_icon_renderer_set_property  (GObject                 *object,
                                                 guint                    prop_id,
                                                 const GValue            *value,
                                                 GParamSpec              *pspec);
-static void thunar_icon_renderer_get_size      (GtkCellRenderer         *renderer,
+static void thunar_icon_renderer_get_preferred_width (GtkCellRenderer   *renderer,
                                                 GtkWidget               *widget,
-                                                GdkRectangle            *rectangle,
-                                                gint                    *x_offset,
-                                                gint                    *y_offset,
-                                                gint                    *width,
-                                                gint                    *height);
+                                                gint                    *minimum,
+                                                gint                    *natural);
+static void thunar_icon_renderer_get_preferred_height (GtkCellRenderer  *renderer,
+                                                GtkWidget               *widget,
+                                                gint                    *minimum,
+                                                gint                    *natural);
 static void thunar_icon_renderer_render        (GtkCellRenderer         *renderer,
-                                                GdkWindow               *window,
+                                                cairo_t                 *cr,
                                                 GtkWidget               *widget,
-                                                GdkRectangle            *background_area,
-                                                GdkRectangle            *cell_area,
-                                                GdkRectangle            *expose_area,
+                                                const GdkRectangle      *background_area,
+                                                const GdkRectangle      *cell_area,
                                                 GtkCellRendererState     flags);
 
 
@@ -84,7 +84,8 @@ thunar_icon_renderer_class_init (ThunarIconRendererClass *klass)
   gobject_class->set_property = thunar_icon_renderer_set_property;
 
   gtkcell_renderer_class = GTK_CELL_RENDERER_CLASS (klass);
-  gtkcell_renderer_class->get_size = thunar_icon_renderer_get_size;
+  gtkcell_renderer_class->get_preferred_width = thunar_icon_renderer_get_preferred_width;
+  gtkcell_renderer_class->get_preferred_height = thunar_icon_renderer_get_preferred_height;
   gtkcell_renderer_class->render = thunar_icon_renderer_render;
 
   /**
@@ -264,56 +265,40 @@ thunar_icon_renderer_set_property (GObject      *object,
 
 
 static void
-thunar_icon_renderer_get_size (GtkCellRenderer *renderer,
-                               GtkWidget       *widget,
-                               GdkRectangle    *rectangle,
-                               gint            *x_offset,
-                               gint            *y_offset,
-                               gint            *width,
-                               gint            *height)
+thunar_icon_renderer_get_preferred_width (GtkCellRenderer *renderer,
+                                          GtkWidget       *widget,
+                                          gint            *minimum,
+                                          gint            *natural)
 {
   ThunarIconRenderer *icon_renderer = THUNAR_ICON_RENDERER (renderer);
-  float xalign;
-  float yalign;
   int xpad;
-  int ypad;
 
-  gtk_cell_renderer_get_alignment (renderer, &xalign, &yalign);
-  gtk_cell_renderer_get_padding (renderer, &xpad, &ypad);
+  gtk_cell_renderer_get_padding (renderer, &xpad, NULL);
 
-  if (rectangle != NULL)
-    {
-      if (x_offset != NULL)
-        {
-          *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? 1.0 - xalign : xalign)
-                    * (rectangle->width - icon_renderer->size);
-          *x_offset = MAX (*x_offset, 0) + xpad;
-        }
+  if (G_LIKELY (minimum)) *minimum = (gint) xpad * 2 + icon_renderer->size;
+  if (G_LIKELY (natural)) *natural = (gint) xpad * 2 + icon_renderer->size;
+}
 
-      if (y_offset != NULL)
-        {
-          *y_offset = yalign * (rectangle->height - icon_renderer->size);
-          *y_offset = MAX (*y_offset, 0) + ypad;
-        }
-    }
-  else
-    {
-      if (x_offset != NULL)
-        *x_offset = 0;
 
-      if (y_offset != NULL)
-        *y_offset = 0;
-    }
 
-  if (G_LIKELY (width != NULL))
-    *width = (gint) xpad * 2 + icon_renderer->size;
+static void
+thunar_icon_renderer_get_preferred_height (GtkCellRenderer *renderer,
+                                           GtkWidget       *widget,
+                                           gint            *minimum,
+                                           gint            *natural)
+{
+  ThunarIconRenderer *icon_renderer = THUNAR_ICON_RENDERER (renderer);
+  int ypad;
+
+  gtk_cell_renderer_get_padding (renderer, NULL, &ypad);
 
-  if (G_LIKELY (height != NULL))
-    *height = (gint) ypad * 2 + icon_renderer->size;
+  if (G_LIKELY (minimum)) *minimum = (gint) ypad * 2 + icon_renderer->size;
+  if (G_LIKELY (natural)) *natural = (gint) ypad * 2 + icon_renderer->size;
 }
 
 
 
+
 static void
 thunar_icon_renderer_color_selected (cairo_t   *cr,
                                      GtkWidget *widget)
@@ -358,11 +343,10 @@ thunar_icon_renderer_color_lighten (cairo_t   *cr,
 
 static void
 thunar_icon_renderer_render (GtkCellRenderer     *renderer,
-                             GdkWindow           *window,
+                             cairo_t             *cr,
                              GtkWidget           *widget,
-                             GdkRectangle        *background_area,
-                             GdkRectangle        *cell_area,
-                             GdkRectangle        *expose_area,
+                             const GdkRectangle  *background_area,
+                             const GdkRectangle  *cell_area,
                              GtkCellRendererState flags)
 {
   ThunarClipboardManager *clipboard;
@@ -374,6 +358,7 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
   GdkRectangle            emblem_area;
   GdkRectangle            icon_area;
   GdkRectangle            draw_area;
+  GdkRectangle            clip_area;
   GdkPixbuf              *emblem;
   GdkPixbuf              *icon;
   GdkPixbuf              *temp;
@@ -381,7 +366,6 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
   GList                  *lp;
   gint                    max_emblems;
   gint                    position;
-  cairo_t                *cr;
   gdouble                 alpha;
   gint                    emblem_size;
   gboolean                color_selected;
@@ -391,6 +375,9 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
   if (G_UNLIKELY (icon_renderer->file == NULL))
     return;
 
+  if (G_UNLIKELY (!gdk_cairo_get_clip_rectangle (cr, &clip_area)))
+    return;
+
   g_object_get (renderer, "is-expanded", &is_expanded, NULL);
 
   /* determine the icon state */
@@ -438,11 +425,8 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
   color_selected = (flags & GTK_CELL_RENDERER_SELECTED) != 0 && icon_renderer->follow_state;
   color_lighten = (flags & GTK_CELL_RENDERER_PRELIT) != 0 && icon_renderer->follow_state;
 
-  /* create the context */
-  cr = gdk_cairo_create (window);
-
   /* check whether the icon is affected by the expose event */
-  if (gdk_rectangle_intersect (expose_area, &icon_area, &draw_area))
+  if (gdk_rectangle_intersect (&clip_area, &icon_area, &draw_area))
     {
       /* use a translucent icon to represent cutted and hidden files to the user */
       clipboard = thunar_clipboard_manager_get_for_display (gtk_widget_get_display (widget));
@@ -572,7 +556,7 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
                 }
 
               /* render the emblem */
-              if (gdk_rectangle_intersect (expose_area, &emblem_area, &draw_area))
+              if (gdk_rectangle_intersect (&clip_area, &emblem_area, &draw_area))
                 {
                   /* render the invalid parts of the icon */
                   thunar_gdk_cairo_set_source_pixbuf (cr, emblem, emblem_area.x, emblem_area.y);
@@ -600,9 +584,6 @@ thunar_icon_renderer_render (GtkCellRenderer     *renderer,
         }
     }
 
-  /* destroy the context */
-  cairo_destroy (cr);
-
   /* release our reference on the icon factory */
   g_object_unref (G_OBJECT (icon_factory));
 }
diff --git a/thunar/thunar-location-buttons.c b/thunar/thunar-location-buttons.c
index d6411c3..7074ccf 100644
--- a/thunar/thunar-location-buttons.c
+++ b/thunar/thunar-location-buttons.c
@@ -73,8 +73,12 @@ static ThunarFile    *thunar_location_buttons_get_current_directory     (ThunarN
 static void           thunar_location_buttons_set_current_directory     (ThunarNavigator            *navigator,
                                                                          ThunarFile                 *current_directory);
 static void           thunar_location_buttons_unmap                     (GtkWidget                  *widget);
-static void           thunar_location_buttons_size_request              (GtkWidget                  *widget,
-                                                                         GtkRequisition             *requisition);
+static void           thunar_location_buttons_get_preferred_width       (GtkWidget                  *widget,
+                                                                         gint                       *minimum,
+                                                                         gint                       *natural);
+static void           thunar_location_buttons_get_preferred_height      (GtkWidget                  *widget,
+                                                                         gint                       *minimum,
+                                                                         gint                       *natural);
 static void           thunar_location_buttons_size_allocate             (GtkWidget                  *widget,
                                                                          GtkAllocation              *allocation);
 static void           thunar_location_buttons_state_changed             (GtkWidget                  *widget,
@@ -204,7 +208,8 @@ thunar_location_buttons_class_init (ThunarLocationButtonsClass *klass)
 
   gtkwidget_class = GTK_WIDGET_CLASS (klass);
   gtkwidget_class->unmap = thunar_location_buttons_unmap;
-  gtkwidget_class->size_request = thunar_location_buttons_size_request;
+  gtkwidget_class->get_preferred_width = thunar_location_buttons_get_preferred_width;
+  gtkwidget_class->get_preferred_height = thunar_location_buttons_get_preferred_height;
   gtkwidget_class->size_allocate = thunar_location_buttons_size_allocate;
   gtkwidget_class->state_changed = thunar_location_buttons_state_changed;
   gtkwidget_class->grab_notify = thunar_location_buttons_grab_notify;
@@ -541,39 +546,50 @@ thunar_location_buttons_unmap (GtkWidget *widget)
 
 
 static void
-thunar_location_buttons_size_request (GtkWidget      *widget,
-                                      GtkRequisition *requisition)
+thunar_location_buttons_get_preferred_width (GtkWidget  *widget,
+                                             gint       *minimum,
+                                             gint       *natural)
 {
   ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (widget);
-  GtkRequisition         child_requisition;
+  gint                   width = 0, height = 0, child_width = 0, child_height = 0;
   GList                 *lp;
-  gint                   spacing;
-
-  gtk_widget_style_get (GTK_WIDGET (buttons),
-                        "spacing", &spacing,
-                        NULL);
-
-  requisition->width = 0;
-  requisition->height = 0;
 
   /* calculate the size of the biggest button */
   for (lp = buttons->list; lp != NULL; lp = lp->next)
     {
-      gtk_widget_size_request (GTK_WIDGET (lp->data), &child_requisition);
-      requisition->width = MAX (child_requisition.width, requisition->width);
-      requisition->height = MAX (child_requisition.height, requisition->height);
+      gtk_widget_get_preferred_width (GTK_WIDGET (lp->data), &child_width, NULL);
+      gtk_widget_get_preferred_height (GTK_WIDGET (lp->data), &child_height, NULL);
+      width = MAX (width, child_width);
+      height = MAX (height, child_height);
     }
 
   /* add space for the sliders if we have more than one path */
-  buttons->slider_width = MIN (requisition->height * 2 / 3 + 5, requisition->height);
+  buttons->slider_width = MIN (height * 2 / 3 + 5, height);
   if (buttons->list != NULL && buttons->list->next != NULL)
-    requisition->width += (spacing + buttons->slider_width) * 2;
+    width += (buttons->slider_width) * 2;
+
+  *minimum = *natural = width;
+}
+
+
 
-  gtk_widget_size_request (buttons->left_slider, &child_requisition);
-  gtk_widget_size_request (buttons->right_slider, &child_requisition);
+static void
+thunar_location_buttons_get_preferred_height (GtkWidget *widget,
+                                              gint      *minimum,
+                                              gint      *natural)
+{
+  ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (widget);
+  gint                   height = 0, child_height = 0;
+  GList                 *lp;
+
+  /* calculate the size of the biggest button */
+  for (lp = buttons->list; lp != NULL; lp = lp->next)
+    {
+      gtk_widget_get_preferred_height (GTK_WIDGET (lp->data), &child_height, NULL);
+      height = MAX (height, child_height);
+    }
 
-  requisition->width += gtk_container_get_border_width (GTK_CONTAINER (widget)) * 2;
-  requisition->height += gtk_container_get_border_width (GTK_CONTAINER (widget)) * 2;
+  *minimum = *natural = height;
 }
 
 
diff --git a/thunar/thunar-location-entry.c b/thunar/thunar-location-entry.c
index a695274..9c101a4 100644
--- a/thunar/thunar-location-entry.c
+++ b/thunar/thunar-location-entry.c
@@ -143,7 +143,7 @@ thunar_location_entry_class_init (ThunarLocationEntryClass *klass)
 
   /* setup the key bindings for the location entry */
   binding_set = gtk_binding_set_by_class (klass);
-  gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0, "reset", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, "reset", 0);
 }
 
 
diff --git a/thunar/thunar-path-entry.c b/thunar/thunar-path-entry.c
index 54f8317..5955dc1 100644
--- a/thunar/thunar-path-entry.c
+++ b/thunar/thunar-path-entry.c
@@ -60,7 +60,7 @@ enum
 
 
 
-static void     thunar_path_entry_editable_init                 (GtkEditableClass     *iface);
+static void     thunar_path_entry_editable_init                 (GtkEditableInterface *iface);
 static void     thunar_path_entry_finalize                      (GObject              *object);
 static void     thunar_path_entry_get_property                  (GObject              *object,  
                                                                  guint                 prop_id,
@@ -72,10 +72,14 @@ static void     thunar_path_entry_set_property                  (GObject
                                                                  GParamSpec           *pspec);
 static gboolean thunar_path_entry_focus                         (GtkWidget            *widget,
                                                                  GtkDirectionType      direction);
-static gboolean thunar_path_entry_button_press_event            (GtkWidget            *widget,
-                                                                 GdkEventButton       *event);
-static gboolean thunar_path_entry_button_release_event          (GtkWidget            *widget,
-                                                                 GdkEventButton       *event);
+static void     thunar_path_entry_icon_press_event              (GtkEntry            *entry,
+                                                                 GtkEntryIconPosition icon_pos,
+                                                                 GdkEventButton      *event,
+                                                                 gpointer             userdata);
+static void     thunar_path_entry_icon_release_event            (GtkEntry            *entry,
+                                                                 GtkEntryIconPosition icon_pos,
+                                                                 GdkEventButton      *event,
+                                                                 gpointer             user_data);
 static gboolean thunar_path_entry_motion_notify_event           (GtkWidget            *widget,
                                                                  GdkEventMotion       *event);
 static gboolean thunar_path_entry_key_press_event               (GtkWidget            *widget,
@@ -149,7 +153,7 @@ static const GtkTargetEntry drag_targets[] =
 
 
 
-static GtkEditableClass *thunar_path_entry_editable_parent_iface;
+static GtkEditableInterface *thunar_path_entry_editable_parent_iface;
 
 
 
@@ -172,8 +176,6 @@ thunar_path_entry_class_init (ThunarPathEntryClass *klass)
 
   gtkwidget_class = GTK_WIDGET_CLASS (klass);
   gtkwidget_class->focus = thunar_path_entry_focus;
-  gtkwidget_class->button_press_event = thunar_path_entry_button_press_event;
-  gtkwidget_class->button_release_event = thunar_path_entry_button_release_event;
   gtkwidget_class->motion_notify_event = thunar_path_entry_motion_notify_event;
   gtkwidget_class->drag_data_get = thunar_path_entry_drag_data_get;
 
@@ -208,7 +210,7 @@ thunar_path_entry_class_init (ThunarPathEntryClass *klass)
 
 
 static void
-thunar_path_entry_editable_init (GtkEditableClass *iface)
+thunar_path_entry_editable_init (GtkEditableInterface *iface)
 {
   thunar_path_entry_editable_parent_iface = g_type_interface_peek_parent (iface);
 
@@ -266,6 +268,10 @@ thunar_path_entry_init (ThunarPathEntry *path_entry)
   /* clear the auto completion whenever the cursor is moved manually or the selection is changed manually */
   g_signal_connect (G_OBJECT (path_entry), "notify::cursor-position", G_CALLBACK (thunar_path_entry_clear_completion), NULL);
   g_signal_connect (G_OBJECT (path_entry), "notify::selection-bound", G_CALLBACK (thunar_path_entry_clear_completion), NULL);
+
+  /* connect the icon signals */
+  g_signal_connect (G_OBJECT (path_entry), "icon-press", G_CALLBACK (thunar_path_entry_icon_press_event), NULL);
+  g_signal_connect (G_OBJECT (path_entry), "icon-release", G_CALLBACK (thunar_path_entry_icon_release_event), NULL);
 }
 
 
@@ -376,42 +382,38 @@ thunar_path_entry_focus (GtkWidget       *widget,
 
 
 
-static gboolean
-thunar_path_entry_button_press_event (GtkWidget      *widget,
-                                      GdkEventButton *event)
+static void
+thunar_path_entry_icon_press_event (GtkEntry            *entry,
+                                    GtkEntryIconPosition icon_pos,
+                                    GdkEventButton      *event,
+                                    gpointer             userdata)
 {
-  ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+  ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (entry);
 
-  if (event->button == 1
-      && event->window == gtk_entry_get_icon_window (GTK_ENTRY (widget), GTK_ENTRY_ICON_PRIMARY))
+  if (event->button == 1 && icon_pos == GTK_ENTRY_ICON_PRIMARY)
     {
       /* consume the event */
       path_entry->drag_button = event->button;
       path_entry->drag_x = event->x;
       path_entry->drag_y = event->y;
-      return TRUE;
     }
-
-  return (*GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->button_press_event) (widget, event);
 }
 
 
 
-static gboolean
-thunar_path_entry_button_release_event (GtkWidget      *widget,
-                                        GdkEventButton *event)
+static void
+thunar_path_entry_icon_release_event (GtkEntry            *entry,
+                                      GtkEntryIconPosition icon_pos,
+                                      GdkEventButton      *event,
+                                      gpointer             user_data)
 {
-  ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+  ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (entry);
 
-  if (event->button == path_entry->drag_button
-      && event->window == gtk_entry_get_icon_window (GTK_ENTRY (widget), GTK_ENTRY_ICON_PRIMARY))
+  if (event->button == path_entry->drag_button && icon_pos == GTK_ENTRY_ICON_PRIMARY)
     {
       /* reset the drag button state */
       path_entry->drag_button = 0;
-      return TRUE;
     }
-
-  return (*GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->button_release_event) (widget, event);
 }
 
 
@@ -428,7 +430,7 @@ thunar_path_entry_motion_notify_event (GtkWidget      *widget,
 
   if (path_entry->drag_button > 0
       && path_entry->current_file != NULL
-      && event->window == gtk_entry_get_icon_window (GTK_ENTRY (widget), GTK_ENTRY_ICON_PRIMARY)
+      /*FIXME && event->window == gtk_entry_get_icon_window (GTK_ENTRY (widget), GTK_ENTRY_ICON_PRIMARY)*/
       && gtk_drag_check_threshold (widget, path_entry->drag_x, path_entry->drag_y, event->x, event->y))
     {
       /* create the drag context */
@@ -466,7 +468,7 @@ thunar_path_entry_key_press_event (GtkWidget   *widget,
   ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
 
   /* check if we have a tab key press here and control is not pressed */
-  if (G_UNLIKELY (event->keyval == GDK_Tab && (event->state & GDK_CONTROL_MASK) == 0))
+  if (G_UNLIKELY (event->keyval == GDK_KEY_Tab && (event->state & GDK_CONTROL_MASK) == 0))
     {
       /* if we don't have a completion and the cursor is at the end of the line, we just insert the common prefix */
       if (!path_entry->has_completion && gtk_editable_get_position (GTK_EDITABLE (path_entry)) == gtk_entry_get_text_length (GTK_ENTRY (path_entry)))
diff --git a/thunar/thunar-permissions-chooser.c b/thunar/thunar-permissions-chooser.c
index 62fd3d1..fe2c88e 100644
--- a/thunar/thunar-permissions-chooser.c
+++ b/thunar/thunar-permissions-chooser.c
@@ -515,7 +515,6 @@ thunar_permissions_chooser_ask_recursive (ThunarPermissionsChooser *chooser)
       /* allocate the question dialog */
       dialog = gtk_dialog_new_with_buttons (_("Question"), GTK_WINDOW (toplevel),
                                             GTK_DIALOG_DESTROY_WITH_PARENT
-                                            | GTK_DIALOG_NO_SEPARATOR
                                             | GTK_DIALOG_MODAL,
                                             GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                             GTK_STOCK_NO, GTK_RESPONSE_NO,
diff --git a/thunar/thunar-properties-dialog.c b/thunar/thunar-properties-dialog.c
index e6a5985..aca67e8 100644
--- a/thunar/thunar-properties-dialog.c
+++ b/thunar/thunar-properties-dialog.c
@@ -216,8 +216,8 @@ thunar_properties_dialog_class_init (ThunarPropertiesDialogClass *klass)
 
   /* setup the key bindings for the properties dialog */
   binding_set = gtk_binding_set_by_class (klass);
-  gtk_binding_entry_add_signal (binding_set, GDK_F5, 0, "reload", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_r, GDK_CONTROL_MASK, "reload", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_F5, 0, "reload", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_r, GDK_CONTROL_MASK, "reload", 0);
 }
 
 
diff --git a/thunar/thunar-renamer-progress.c b/thunar/thunar-renamer-progress.c
index 73abd7e..8ea805c 100644
--- a/thunar/thunar-renamer-progress.c
+++ b/thunar/thunar-renamer-progress.c
@@ -36,7 +36,7 @@ enum
 
 
 static void     thunar_renamer_progress_finalize          (GObject                    *object);
-static void     thunar_renamer_progress_destroy           (GtkObject                  *object);
+static void     thunar_renamer_progress_destroy           (GtkWidget                  *object);
 static gboolean thunar_renamer_progress_next_idle         (gpointer                    user_data);
 static void     thunar_renamer_progress_next_idle_destroy (gpointer                    user_data);
 
@@ -72,14 +72,14 @@ G_DEFINE_TYPE (ThunarRenamerProgress, thunar_renamer_progress, GTK_TYPE_ALIGNMEN
 static void
 thunar_renamer_progress_class_init (ThunarRenamerProgressClass *klass)
 {
-  GtkObjectClass *gtkobject_class;
+  GtkWidgetClass *gtkwidget_class;
   GObjectClass   *gobject_class;
 
   gobject_class = G_OBJECT_CLASS (klass);
   gobject_class->finalize = thunar_renamer_progress_finalize;
 
-  gtkobject_class = GTK_OBJECT_CLASS (klass);
-  gtkobject_class->destroy = thunar_renamer_progress_destroy;
+  gtkwidget_class = GTK_WIDGET_CLASS (klass);
+  gtkwidget_class->destroy = thunar_renamer_progress_destroy;
 }
 
 
@@ -115,14 +115,14 @@ thunar_renamer_progress_finalize (GObject *object)
 
 
 static void
-thunar_renamer_progress_destroy (GtkObject *object)
+thunar_renamer_progress_destroy (GtkWidget *object)
 {
   ThunarRenamerProgress *renamer_progress = THUNAR_RENAMER_PROGRESS (object);
 
   /* exit the internal main loop on destroy */
   thunar_renamer_progress_cancel (renamer_progress);
 
-  (*GTK_OBJECT_CLASS (thunar_renamer_progress_parent_class)->destroy) (object);
+  (*GTK_WIDGET_CLASS (thunar_renamer_progress_parent_class)->destroy) (object);
 }
 
 
diff --git a/thunar/thunar-shortcuts-icon-renderer.c b/thunar/thunar-shortcuts-icon-renderer.c
index b52da5f..898e79e 100644
--- a/thunar/thunar-shortcuts-icon-renderer.c
+++ b/thunar/thunar-shortcuts-icon-renderer.c
@@ -53,11 +53,10 @@ static void thunar_shortcuts_icon_renderer_set_property (GObject
                                                          const GValue                     *value,
                                                          GParamSpec                       *pspec);
 static void thunar_shortcuts_icon_renderer_render       (GtkCellRenderer                  *renderer,
-                                                         GdkWindow                        *window,
+                                                         cairo_t                          *cr,
                                                          GtkWidget                        *widget,
-                                                         GdkRectangle                     *background_area,
-                                                         GdkRectangle                     *cell_area,
-                                                         GdkRectangle                     *expose_area,
+                                                         const GdkRectangle               *background_area,
+                                                         const GdkRectangle               *cell_area,
                                                          GtkCellRendererState              flags);
 
 
@@ -205,24 +204,26 @@ thunar_shortcuts_icon_renderer_set_property (GObject      *object,
 
 static void
 thunar_shortcuts_icon_renderer_render (GtkCellRenderer     *renderer,
-                                       GdkWindow           *window,
+                                       cairo_t             *cr,
                                        GtkWidget           *widget,
-                                       GdkRectangle        *background_area,
-                                       GdkRectangle        *cell_area,
-                                       GdkRectangle        *expose_area,
+                                       const GdkRectangle  *background_area,
+                                       const GdkRectangle  *cell_area,
                                        GtkCellRendererState flags)
 {
   ThunarShortcutsIconRenderer *shortcuts_icon_renderer = THUNAR_SHORTCUTS_ICON_RENDERER (renderer);
   GtkIconTheme                *icon_theme;
   GdkRectangle                 draw_area;
   GdkRectangle                 icon_area;
+  GdkRectangle                 clip_area;
   GtkIconInfo                 *icon_info;
   GdkPixbuf                   *icon = NULL;
   GdkPixbuf                   *temp;
   GIcon                       *gicon;
-  cairo_t                     *cr;
   gdouble                      alpha;
 
+  if (!gdk_cairo_get_clip_rectangle (cr, &clip_area))
+    return;
+
   /* check if we have a volume set */
   if (G_UNLIKELY (shortcuts_icon_renderer->gicon != NULL
       ||  shortcuts_icon_renderer->device != NULL))
@@ -278,14 +279,12 @@ thunar_shortcuts_icon_renderer_render (GtkCellRenderer     *renderer,
           icon_area.y = cell_area->y + (cell_area->height - icon_area.height) / 2;
 
           /* check whether the icon is affected by the expose event */
-          if (gdk_rectangle_intersect (expose_area, &icon_area, &draw_area))
+          if (gdk_rectangle_intersect (&clip_area, &icon_area, &draw_area))
             {
               /* render the invalid parts of the icon */
-              cr = gdk_cairo_create (window);
               thunar_gdk_cairo_set_source_pixbuf (cr, icon, icon_area.x, icon_area.y);
               gdk_cairo_rectangle (cr, &draw_area);
               cairo_paint_with_alpha (cr, alpha);
-              cairo_destroy (cr);
             }
 
           /* cleanup */
@@ -295,8 +294,8 @@ thunar_shortcuts_icon_renderer_render (GtkCellRenderer     *renderer,
   else
     {
       /* fallback to the default icon renderering */
-      (*GTK_CELL_RENDERER_CLASS (thunar_shortcuts_icon_renderer_parent_class)->render) (renderer, window, widget, background_area,
-                                                                                        cell_area, expose_area, flags);
+      (*GTK_CELL_RENDERER_CLASS (thunar_shortcuts_icon_renderer_parent_class)->render) (renderer, cr, widget, background_area,
+                                                                                        cell_area, flags);
     }
 }
 
diff --git a/thunar/thunar-shortcuts-view.c b/thunar/thunar-shortcuts-view.c
index b4c857d..4119cae 100644
--- a/thunar/thunar-shortcuts-view.c
+++ b/thunar/thunar-shortcuts-view.c
@@ -533,10 +533,10 @@ thunar_shortcuts_view_key_release_event (GtkWidget   *widget,
   /* work nicer with keyboard navigation */
   switch (event->keyval)
     {
-    case GDK_Up:
-    case GDK_Down:
-    case GDK_KP_Up:
-    case GDK_KP_Down:
+    case GDK_KEY_Up:
+    case GDK_KEY_Down:
+    case GDK_KEY_KP_Up:
+    case GDK_KEY_KP_Down:
       thunar_shortcuts_view_open (view, OPEN_IN_VIEW);
 
       /* keep focus on us */
diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c
index c2b6b60..79e4498 100644
--- a/thunar/thunar-standard-view.c
+++ b/thunar/thunar-standard-view.c
@@ -51,7 +51,6 @@
 #include <thunar/thunar-standard-view-ui.h>
 #include <thunar/thunar-templates-action.h>
 #include <thunar/thunar-history.h>
-#include <thunar/thunar-text-renderer.h>
 #include <thunar/thunar-thumbnailer.h>
 
 #if defined(GDK_WINDOWING_X11)
@@ -117,8 +116,8 @@ static void                 thunar_standard_view_set_property               (GOb
 static void                 thunar_standard_view_realize                    (GtkWidget                *widget);
 static void                 thunar_standard_view_unrealize                  (GtkWidget                *widget);
 static void                 thunar_standard_view_grab_focus                 (GtkWidget                *widget);
-static gboolean             thunar_standard_view_expose_event               (GtkWidget                *widget,
-                                                                             GdkEventExpose           *event);
+static gboolean             thunar_standard_view_draw                       (GtkWidget                *widget,
+                                                                             cairo_t                  *cr);
 static GList               *thunar_standard_view_get_selected_files         (ThunarComponent          *component);
 static void                 thunar_standard_view_set_selected_files         (ThunarComponent          *component,
                                                                              GList                    *selected_files);
@@ -468,7 +467,7 @@ thunar_standard_view_class_init (ThunarStandardViewClass *klass)
   gtkwidget_class->realize = thunar_standard_view_realize;
   gtkwidget_class->unrealize = thunar_standard_view_unrealize;
   gtkwidget_class->grab_focus = thunar_standard_view_grab_focus;
-  gtkwidget_class->expose_event = thunar_standard_view_expose_event;
+  gtkwidget_class->draw = thunar_standard_view_draw;
 
   klass->delete_selected_files = thunar_standard_view_delete_selected_files;
   klass->connect_ui_manager = (gpointer) exo_noop;
@@ -586,11 +585,11 @@ thunar_standard_view_class_init (ThunarStandardViewClass *klass)
 
   /* setup the key bindings for the standard views */
   binding_set = gtk_binding_set_by_class (klass);
-  gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, GDK_CONTROL_MASK, "delete-selected-files", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_Delete, 0, "delete-selected-files", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_Delete, GDK_SHIFT_MASK, "delete-selected-files", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, 0, "delete-selected-files", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, GDK_SHIFT_MASK, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_BackSpace, GDK_CONTROL_MASK, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, 0, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, GDK_SHIFT_MASK, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, 0, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_SHIFT_MASK, "delete-selected-files", 0);
 }
 
 
@@ -711,9 +710,14 @@ thunar_standard_view_init (ThunarStandardView *standard_view)
   exo_binding_new (G_OBJECT (standard_view), "zoom-level", G_OBJECT (standard_view->icon_renderer), "size");
 
   /* setup the name renderer */
-  standard_view->name_renderer = thunar_text_renderer_new ();
+  standard_view->name_renderer = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT,
+                                               "alignment", PANGO_ALIGN_CENTER,
+                                               "xalign", 0.5,
+                                               FALSE);
   g_object_ref_sink (G_OBJECT (standard_view->name_renderer));
-  exo_binding_new (G_OBJECT (standard_view->preferences), "misc-single-click", G_OBJECT (standard_view->name_renderer), "follow-prelit");
+
+  /* TODO: prelit underline
+  exo_binding_new (G_OBJECT (standard_view->preferences), "misc-single-click", G_OBJECT (standard_view->name_renderer), "follow-prelit");*/
 
   /* be sure to update the selection whenever the folder changes */
   g_signal_connect_swapped (G_OBJECT (standard_view->model), "notify::folder", G_CALLBACK (thunar_standard_view_selection_changed), standard_view);
@@ -1094,33 +1098,32 @@ thunar_standard_view_grab_focus (GtkWidget *widget)
 
 
 static gboolean
-thunar_standard_view_expose_event (GtkWidget      *widget,
-                                   GdkEventExpose *event)
+thunar_standard_view_draw (GtkWidget      *widget,
+                           cairo_t        *cr)
 {
   gboolean result = FALSE;
-  cairo_t *cr;
   GtkAllocation a;
 
   /* let the scrolled window do it's work */
-  result = (*GTK_WIDGET_CLASS (thunar_standard_view_parent_class)->expose_event) (widget, event);
+  cairo_save (cr);
+  result = (*GTK_WIDGET_CLASS (thunar_standard_view_parent_class)->draw) (widget, cr);
+  cairo_restore (cr);
 
   /* render the folder drop shadow */
   if (G_UNLIKELY (THUNAR_STANDARD_VIEW (widget)->priv->drop_highlight))
     {
       gtk_widget_get_allocation (widget, &a);
 
-      gtk_paint_shadow (gtk_widget_get_style (widget), gtk_widget_get_window (widget),
+      gtk_paint_shadow (gtk_widget_get_style (widget), cr,
                         GTK_STATE_NORMAL, GTK_SHADOW_OUT,
-                        NULL, widget, "dnd",
+                        widget, "dnd",
                         a.x, a.y, a.width, a.height);
 
       /* the cairo version looks better here, so we use it if possible */
-      cr = gdk_cairo_create (gtk_widget_get_window (widget));
       cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
       cairo_set_line_width (cr, 1.0);
       cairo_rectangle (cr, a.x + 0.5, a.y + 0.5, a.width - 1, a.height - 1);
       cairo_stroke (cr);
-      cairo_destroy (cr);
     }
 
   return result;
@@ -2613,7 +2616,6 @@ thunar_standard_view_action_select_by_pattern (GtkAction          *action,
   dialog = gtk_dialog_new_with_buttons (_("Select by Pattern"),
                                         GTK_WINDOW (window),
                                         GTK_DIALOG_MODAL
-                                        | GTK_DIALOG_NO_SEPARATOR
                                         | GTK_DIALOG_DESTROY_WITH_PARENT,
                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                         _("_Select"), GTK_RESPONSE_OK,
@@ -3121,10 +3123,10 @@ thunar_standard_view_key_press_event (GtkWidget          *view,
   _thunar_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), FALSE);
 
   /* need to catch "/" and "~" first, as the views would otherwise start interactive search */
-  if ((event->keyval == GDK_slash || event->keyval == GDK_asciitilde || event->keyval == GDK_dead_tilde) && !(event->state & (~GDK_SHIFT_MASK & gtk_accelerator_get_default_mod_mask ())))
+  if ((event->keyval == GDK_KEY_slash || event->keyval == GDK_KEY_asciitilde || event->keyval == GDK_KEY_dead_tilde) && !(event->state & (~GDK_SHIFT_MASK & gtk_accelerator_get_default_mod_mask ())))
     {
       /* popup the location selector (in whatever way) */
-      if (event->keyval == GDK_dead_tilde)
+      if (event->keyval == GDK_KEY_dead_tilde)
         g_signal_emit (G_OBJECT (standard_view), standard_view_signals[START_OPEN_LOCATION], 0, "~");
       else
         g_signal_emit (G_OBJECT (standard_view), standard_view_signals[START_OPEN_LOCATION], 0, event->string);
@@ -3897,7 +3899,7 @@ thunar_standard_view_drag_scroll_timer (gpointer user_data)
     {
       /* determine pointer location and window geometry */
       gdk_window_get_pointer (gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view))), &x, &y, NULL);
-      gdk_window_get_geometry (gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view))), NULL, NULL, &w, &h, NULL);
+      gdk_window_get_geometry (gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view))), NULL, NULL, &w, &h);
 
       /* check if we are near the edge (vertical) */
       offset = y - (2 * 20);
diff --git a/thunar/thunar-statusbar.c b/thunar/thunar-statusbar.c
index 39ea7c6..b4c9021 100644
--- a/thunar/thunar-statusbar.c
+++ b/thunar/thunar-statusbar.c
@@ -104,7 +104,6 @@ static void
 thunar_statusbar_init (ThunarStatusbar *statusbar)
 {
   statusbar->context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (statusbar), "Main text");
-  gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (statusbar), TRUE);
 }
 
 
diff --git a/thunar/thunar-text-renderer.c b/thunar/thunar-text-renderer.c
deleted file mode 100644
index 42a0140..0000000
--- a/thunar/thunar-text-renderer.c
+++ /dev/null
@@ -1,880 +0,0 @@
-/* vi:set et ai sw=2 sts=2 ts=2: */
-/*-
- * Copyright (c) 2005-2006 Benedikt Meurer <benny at xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_MEMORY_H
-#include <memory.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include <exo/exo.h>
-
-#include <thunar/thunar-gobject-extensions.h>
-#include <thunar/thunar-marshal.h>
-#include <thunar/thunar-pango-extensions.h>
-#include <thunar/thunar-text-renderer.h>
-#include <thunar/thunar-util.h>
-
-
-
-enum
-{
-  PROP_0,
-  PROP_ALIGNMENT,
-  PROP_FOLLOW_PRELIT,
-  PROP_FOLLOW_STATE,
-  PROP_TEXT,
-  PROP_WRAP_MODE,
-  PROP_WRAP_WIDTH,
-  N_PROPERTIES
-};
-
-enum
-{
-  EDITED,
-  LAST_SIGNAL,
-};
-
-
-
-static void             thunar_text_renderer_finalize                         (GObject                 *object);
-static void             thunar_text_renderer_get_property                     (GObject                 *object,
-                                                                               guint                    prop_id,
-                                                                               GValue                  *value,
-                                                                               GParamSpec              *pspec);
-static void             thunar_text_renderer_set_property                     (GObject                 *object,
-                                                                               guint                    prop_id,
-                                                                               const GValue            *value,
-                                                                               GParamSpec              *pspec);
-static void             thunar_text_renderer_get_size                         (GtkCellRenderer         *renderer,
-                                                                               GtkWidget               *widget,
-                                                                               GdkRectangle            *cell_area,
-                                                                               gint                    *x_offset,
-                                                                               gint                    *y_offset,
-                                                                               gint                    *width,
-                                                                               gint                    *height);
-static void             thunar_text_renderer_render                           (GtkCellRenderer         *renderer,
-                                                                               GdkWindow               *window,
-                                                                               GtkWidget               *widget,
-                                                                               GdkRectangle            *background_area,
-                                                                               GdkRectangle            *cell_area,
-                                                                               GdkRectangle            *expose_area,
-                                                                               GtkCellRendererState     flags);
-static GtkCellEditable *thunar_text_renderer_start_editing                    (GtkCellRenderer         *renderer,
-                                                                               GdkEvent                *event,
-                                                                               GtkWidget               *widget,
-                                                                               const gchar             *path,
-                                                                               GdkRectangle            *background_area,
-                                                                               GdkRectangle            *cell_area,
-                                                                               GtkCellRendererState     flags);
-static void             thunar_text_renderer_invalidate                       (ThunarTextRenderer      *text_renderer);
-static void             thunar_text_renderer_set_widget                       (ThunarTextRenderer      *text_renderer,
-                                                                               GtkWidget               *widget);
-static void             thunar_text_renderer_editing_done                     (GtkCellEditable         *editable,
-                                                                               ThunarTextRenderer      *text_renderer);
-static void             thunar_text_renderer_grab_focus                       (GtkWidget               *entry,
-                                                                               ThunarTextRenderer      *text_renderer);
-static gboolean         thunar_text_renderer_focus_out_event                  (GtkWidget               *entry,
-                                                                               GdkEventFocus           *event,
-                                                                               ThunarTextRenderer      *text_renderer);
-static void             thunar_text_renderer_populate_popup                   (GtkEntry                *entry,
-                                                                               GtkMenu                 *menu,
-                                                                               ThunarTextRenderer      *text_renderer);
-static void             thunar_text_renderer_popup_unmap                      (GtkMenu                 *menu,
-                                                                               ThunarTextRenderer      *text_renderer);
-static gboolean         thunar_text_renderer_entry_menu_popdown_timer         (gpointer                 user_data);
-static void             thunar_text_renderer_entry_menu_popdown_timer_destroy (gpointer                 user_data);
-
-
-
-struct _ThunarTextRendererClass
-{
-  GtkCellRendererClass __parent__;
-
-  void (*edited) (ThunarTextRenderer *text_renderer,
-                  const gchar        *path,
-                  const gchar        *text);
-};
-
-struct _ThunarTextRenderer
-{
-  GtkCellRenderer __parent__;
-
-  /* pango renderer properties */
-  PangoLayout    *layout;
-  GtkWidget      *widget;
-  guint           text_static : 1;
-  gchar          *text;
-  gint            char_width;
-  gint            char_height;
-  PangoWrapMode   wrap_mode;
-  gint            wrap_width;
-  guint           follow_state : 1;
-  gint            focus_width;;
-  PangoAlignment  alignment;
-
-  /* underline prelited rows */
-  guint           follow_prelit : 1;
-
-  /* cell editing support */
-  GtkWidget      *entry;
-  guint           entry_menu_active : 1;
-  guint           entry_menu_popdown_timer_id;
-};
-
-
-
-static guint       text_renderer_signals[LAST_SIGNAL];
-static GParamSpec *text_renderer_props[N_PROPERTIES] = { NULL, };
-
-
-
-G_DEFINE_TYPE (ThunarTextRenderer, thunar_text_renderer, GTK_TYPE_CELL_RENDERER)
-
-
-
-static void
-thunar_text_renderer_class_init (ThunarTextRendererClass *klass)
-{
-  GtkCellRendererClass *gtkcell_renderer_class;
-  GObjectClass         *gobject_class;
-
-  gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->finalize = thunar_text_renderer_finalize;
-  gobject_class->get_property = thunar_text_renderer_get_property;
-  gobject_class->set_property = thunar_text_renderer_set_property;
-
-  gtkcell_renderer_class = GTK_CELL_RENDERER_CLASS (klass);
-  gtkcell_renderer_class->get_size = thunar_text_renderer_get_size;
-  gtkcell_renderer_class->render = thunar_text_renderer_render;
-  gtkcell_renderer_class->start_editing = thunar_text_renderer_start_editing;
-
-  /**
-   * ThunarTextRenderer:alignment:
-   *
-   * Specifies how to align the lines of text with respect to each other.
-   **/
-  text_renderer_props[PROP_ALIGNMENT] =
-      g_param_spec_enum ("alignment",
-                         "alignment",
-                         "alignment",
-                         PANGO_TYPE_ALIGNMENT,
-                         PANGO_ALIGN_LEFT,
-                         EXO_PARAM_READWRITE);
-
-  /**
-   * ThunarTextRenderer:follow-prelit:
-   *
-   * Whether to underline prelited cells. This is used for the single
-   * click support in the detailed list view.
-   **/
-  text_renderer_props[PROP_FOLLOW_PRELIT] =
-      g_param_spec_boolean ("follow-prelit",
-                            "follow-prelit",
-                            "follow-prelit",
-                            FALSE,
-                            EXO_PARAM_READWRITE);
-
-  /**
-   * ThunarTextRenderer:follow-state:
-   *
-   * Specifies whether the text renderer should render text
-   * based on the selection state of the items. This is necessary
-   * for #ExoIconView, which doesn't draw any item state indicators
-   * itself.
-   **/
-  text_renderer_props[PROP_FOLLOW_STATE] =
-      g_param_spec_boolean ("follow-state",
-                            "follow-state",
-                            "follow-state",
-                            FALSE,
-                            EXO_PARAM_READWRITE);
-
-  /**
-   * ThunarTextRenderer:text:
-   *
-   * The text to render.
-   **/
-  text_renderer_props[PROP_TEXT] =
-      g_param_spec_string ("text",
-                           "text",
-                           "text",
-                           NULL,
-                           EXO_PARAM_READWRITE);
-
-  /**
-   * ThunarTextRenderer:wrap-mode:
-   *
-   * Specifies how to break the string into multiple lines, if the cell renderer
-   * does not have enough room to display the entire string. This property has
-   * no effect unless the wrap-width property is set.
-   **/
-  text_renderer_props[PROP_WRAP_MODE] =
-      g_param_spec_enum ("wrap-mode",
-                         "wrap-mode",
-                         "wrap-mode",
-                         PANGO_TYPE_WRAP_MODE,
-                         PANGO_WRAP_CHAR,
-                         EXO_PARAM_READWRITE);
-
-  /**
-   * ThunarTextRenderer:wrap-width:
-   *
-   * Specifies the width at which the text is wrapped. The wrap-mode property can
-   * be used to influence at what character positions the line breaks can be placed.
-   * Setting wrap-width to -1 turns wrapping off.
-   **/
-  text_renderer_props[PROP_WRAP_WIDTH] =
-      g_param_spec_int ("wrap-width",
-                        "wrap-width",
-                        "wrap-width",
-                        -1, G_MAXINT, -1,
-                        EXO_PARAM_READWRITE);
-
-  /* install properties */
-  g_object_class_install_properties (gobject_class, N_PROPERTIES, text_renderer_props);
-
-  /**
-   * ThunarTextRenderer::edited:
-   * @text_renderer : a #ThunarTextRenderer.
-   * @path          : the string representation of the tree path, which was edited.
-   * @text          : the new text for the cell.
-   * @user_data     : user data set when the signal handler was connected.
-   *
-   * Emitted whenever the user successfully edits a cell.
-   **/
-  text_renderer_signals[EDITED] =
-    g_signal_new (I_("edited"),
-                  G_OBJECT_CLASS_TYPE (gobject_class),
-                  G_SIGNAL_RUN_LAST,
-                  G_STRUCT_OFFSET (ThunarTextRendererClass, edited),
-                  NULL, NULL,
-                  _thunar_marshal_VOID__STRING_STRING,
-                  G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
-}
-
-
-
-static void
-thunar_text_renderer_init (ThunarTextRenderer *text_renderer)
-{
-  text_renderer->wrap_width = -1;
-  text_renderer->alignment = PANGO_ALIGN_LEFT;
-}
-
-
-
-static void
-thunar_text_renderer_finalize (GObject *object)
-{
-  ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (object);
-
-  /* release text (if not static) */
-  if (!text_renderer->text_static)
-    g_free (text_renderer->text);
-
-  /* drop the cached widget */
-  thunar_text_renderer_set_widget (text_renderer, NULL);
-
-  (*G_OBJECT_CLASS (thunar_text_renderer_parent_class)->finalize) (object);
-}
-
-
-
-static void
-thunar_text_renderer_get_property (GObject    *object,
-                                   guint       prop_id,
-                                   GValue     *value,
-                                   GParamSpec *pspec)
-{
-  ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (object);
-
-  switch (prop_id)
-    {
-    case PROP_ALIGNMENT:
-      g_value_set_enum (value, text_renderer->alignment);
-      break;
-
-    case PROP_FOLLOW_PRELIT:
-      g_value_set_boolean (value, text_renderer->follow_prelit);
-      break;
-
-    case PROP_FOLLOW_STATE:
-      g_value_set_boolean (value, text_renderer->follow_state);
-      break;
-
-    case PROP_TEXT:
-      g_value_set_string (value, text_renderer->text);
-      break;
-
-    case PROP_WRAP_MODE:
-      g_value_set_enum (value, text_renderer->wrap_mode);
-      break;
-
-    case PROP_WRAP_WIDTH:
-      g_value_set_int (value, text_renderer->wrap_width);
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_text_renderer_set_property (GObject      *object,
-                                   guint         prop_id,
-                                   const GValue *value,
-                                   GParamSpec   *pspec)
-{
-  ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (object);
-  const gchar        *sval;
-
-  switch (prop_id)
-    {
-    case PROP_ALIGNMENT:
-      text_renderer->alignment = g_value_get_enum (value);
-      break;
-
-    case PROP_FOLLOW_PRELIT:
-      text_renderer->follow_prelit = g_value_get_boolean (value);
-      break;
-
-    case PROP_FOLLOW_STATE:
-      text_renderer->follow_state = g_value_get_boolean (value);
-      break;
-
-    case PROP_TEXT:
-      /* release the previous text (if not static) */
-      if (!text_renderer->text_static)
-        g_free (text_renderer->text);
-      sval = g_value_get_string (value);
-      text_renderer->text_static = (value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS);
-      text_renderer->text = (sval == NULL) ? "" : (gchar *)sval;
-      if (!text_renderer->text_static)
-        text_renderer->text = g_strdup (text_renderer->text);
-      break;
-
-    case PROP_WRAP_MODE:
-      text_renderer->wrap_mode = g_value_get_enum (value);
-      break;
-
-    case PROP_WRAP_WIDTH:
-      /* be sure to reset fixed height if wrapping is requested */
-      text_renderer->wrap_width = g_value_get_int (value);
-      if (G_LIKELY (text_renderer->wrap_width >= 0))
-        gtk_cell_renderer_set_fixed_size (GTK_CELL_RENDERER (text_renderer), -1, -1);
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_text_renderer_get_size (GtkCellRenderer *renderer,
-                               GtkWidget       *widget,
-                               GdkRectangle    *cell_area,
-                               gint            *x_offset,
-                               gint            *y_offset,
-                               gint            *width,
-                               gint            *height)
-{
-  ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (renderer);
-  gint                text_length;
-  gint                text_width;
-  gint                text_height;
-  gint                renderer_xpad;
-  gint                renderer_ypad;
-  gfloat              renderer_xalign;
-  gfloat              renderer_yalign;
-
-  /* setup the new widget */
-  thunar_text_renderer_set_widget (text_renderer, widget);
-
-  /* we can guess the dimensions if we don't wrap */
-  if (text_renderer->wrap_width < 0)
-    {
-      /* determine the text_length in characters */
-      text_length = g_utf8_strlen (text_renderer->text, -1);
-
-      /* the approximation is usually 1-2 chars wrong, so wth */
-      text_length += 2;
-
-      /* calculate the appromixate text width/height */
-      text_width = text_renderer->char_width * text_length;
-      text_height = text_renderer->char_height;
-    }
-  else
-    {
-      /* calculate the real text dimension */
-      pango_layout_set_width (text_renderer->layout, text_renderer->wrap_width * PANGO_SCALE);
-      pango_layout_set_wrap (text_renderer->layout, text_renderer->wrap_mode);
-      pango_layout_set_text (text_renderer->layout, text_renderer->text, -1);
-      pango_layout_get_pixel_size (text_renderer->layout, &text_width, &text_height);
-    }
-
-  /* if we have to follow the state manually, we'll need
-   * to reserve some space to render the indicator to.
-   */
-  if (text_renderer->follow_state)
-    {
-      text_width += 2 * text_renderer->focus_width;
-      text_height += 2 * text_renderer->focus_width;
-    }
-
-  /* update width/height */
-  gtk_cell_renderer_get_padding (renderer, &renderer_xpad, &renderer_ypad);
-  gtk_cell_renderer_get_alignment (renderer, &renderer_xalign, &renderer_yalign);
-
-  if (G_LIKELY (width != NULL))
-    *width = text_width + 2 * renderer_xpad;
-  if (G_LIKELY (height != NULL))
-    *height = text_height + 2 * renderer_ypad;
-
-  /* update the x/y offsets */
-  if (G_LIKELY (cell_area != NULL))
-    {
-      if (G_LIKELY (x_offset != NULL))
-        {
-          *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? (1.0 - renderer_xalign) : renderer_xalign)
-                    * (cell_area->width - text_width - (2 * renderer_xpad));
-          *x_offset = MAX (*x_offset, 0);
-        }
-
-      if (G_LIKELY (y_offset != NULL))
-        {
-          *y_offset = renderer_yalign * (cell_area->height - text_height - (2 * renderer_ypad));
-          *y_offset = MAX (*y_offset, 0);
-        }
-    }
-}
-
-
-
-static void
-thunar_text_renderer_render (GtkCellRenderer     *renderer,
-                             GdkWindow           *window,
-                             GtkWidget           *widget,
-                             GdkRectangle        *background_area,
-                             GdkRectangle        *cell_area,
-                             GdkRectangle        *expose_area,
-                             GtkCellRendererState flags)
-{
-  ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (renderer);
-  GtkStateType        state;
-  cairo_t            *cr;
-  gint                x0, x1, y0, y1;
-  gint                x_offset;
-  gint                y_offset;
-  PangoRectangle      rect;
-  gint                renderer_xpad;
-  gint                renderer_ypad;
-  gfloat              renderer_xalign;
-  gfloat              renderer_yalign;
-
-  gtk_cell_renderer_get_padding (renderer, &renderer_xpad, &renderer_ypad);
-  gtk_cell_renderer_get_alignment (renderer, &renderer_xalign, &renderer_yalign);
-
-  /* setup the new widget */
-  thunar_text_renderer_set_widget (text_renderer, widget);
-
-  if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED)
-    {
-      if (gtk_widget_has_focus (widget))
-        state = GTK_STATE_SELECTED;
-      else
-        state = GTK_STATE_ACTIVE;
-    }
-  else if ((flags & GTK_CELL_RENDERER_PRELIT) == GTK_CELL_RENDERER_PRELIT
-        && gtk_widget_get_state (widget) == GTK_STATE_PRELIGHT)
-    {
-      state = GTK_STATE_PRELIGHT;
-    }
-  else
-    {
-      if (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE)
-        state = GTK_STATE_INSENSITIVE;
-      else
-        state = GTK_STATE_NORMAL;
-    }
-
-  /* check if we should follow the prelit state (used for single click support) */
-  if (text_renderer->follow_prelit && (flags & GTK_CELL_RENDERER_PRELIT) != 0)
-    pango_layout_set_attributes (text_renderer->layout, thunar_pango_attr_list_underline_single ());
-  else
-    pango_layout_set_attributes (text_renderer->layout, NULL);
-
-  /* setup the wrapping */
-  if (text_renderer->wrap_width < 0)
-    {
-      pango_layout_set_width (text_renderer->layout, -1);
-      pango_layout_set_wrap (text_renderer->layout, PANGO_WRAP_CHAR);
-    }
-  else
-    {
-      pango_layout_set_width (text_renderer->layout, text_renderer->wrap_width * PANGO_SCALE);
-      pango_layout_set_wrap (text_renderer->layout, text_renderer->wrap_mode);
-    }
-
-  pango_layout_set_text (text_renderer->layout, text_renderer->text, -1);
-  pango_layout_set_alignment (text_renderer->layout, text_renderer->alignment);
-
-  /* calculate the real text dimension */
-  pango_layout_get_pixel_extents (text_renderer->layout, NULL, &rect);
-
-  /* take into account the state indicator (required for calculation) */
-  if (text_renderer->follow_state)
-    {
-      rect.width += 2 * text_renderer->focus_width;
-      rect.height += 2 * text_renderer->focus_width;
-    }
-
-  /* calculate the real x-offset */
-  x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? (1.0 - renderer_xalign) : renderer_xalign)
-           * (cell_area->width - rect.width - (2 * renderer_xpad));
-  x_offset = MAX (x_offset, 0);
-
-  /* calculate the real y-offset */
-  y_offset = renderer_yalign * (cell_area->height - rect.height - (2 * renderer_ypad));
-  y_offset = MAX (y_offset, 0);
-
-  /* render the state indicator */
-  if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED && text_renderer->follow_state)
-    {
-      /* calculate the text bounding box (including the focus padding/width) */
-      x0 = cell_area->x + x_offset;
-      y0 = cell_area->y + y_offset;
-      x1 = x0 + rect.width;
-      y1 = y0 + rect.height;
-
-      /* Cairo produces nicer results than using a polygon
-       * and so we use it directly if possible.
-       */
-      cr = gdk_cairo_create (window);
-      cairo_move_to (cr, x0 + 5, y0);
-      cairo_line_to (cr, x1 - 5, y0);
-      cairo_curve_to (cr, x1 - 5, y0, x1, y0, x1, y0 + 5);
-      cairo_line_to (cr, x1, y1 - 5);
-      cairo_curve_to (cr, x1, y1 - 5, x1, y1, x1 - 5, y1);
-      cairo_line_to (cr, x0 + 5, y1);
-      cairo_curve_to (cr, x0 + 5, y1, x0, y1, x0, y1 - 5);
-      cairo_line_to (cr, x0, y0 + 5);
-      cairo_curve_to (cr, x0, y0 + 5, x0, y0, x0 + 5, y0);
-      gdk_cairo_set_source_color (cr, &gtk_widget_get_style (widget)->base[state]);
-      cairo_fill (cr);
-      cairo_destroy (cr);
-    }
-
-  /* draw the focus indicator */
-  if (text_renderer->follow_state && (flags & GTK_CELL_RENDERER_FOCUSED) != 0)
-    {
-      gtk_paint_focus (gtk_widget_get_style (widget), window, gtk_widget_get_state (widget), NULL, widget, "icon_view",
-                       cell_area->x + x_offset, cell_area->y + y_offset, rect.width, rect.height);
-    }
-
-  /* get proper sizing for the layout drawing */
-  if (text_renderer->follow_state)
-    {
-      rect.width -= 2 * text_renderer->focus_width;
-      rect.height -= 2 * text_renderer->focus_width;
-      x_offset += text_renderer->focus_width;
-      y_offset += text_renderer->focus_width;
-    }
-
-  /* draw the text */
-  gtk_paint_layout (gtk_widget_get_style (widget), window, state, TRUE,
-                    expose_area, widget, "cellrenderertext",
-                    cell_area->x + x_offset + renderer_xpad - rect.x,
-                    cell_area->y + y_offset + renderer_ypad - rect.y,
-                    text_renderer->layout);
-}
-
-
-
-static GtkCellEditable*
-thunar_text_renderer_start_editing (GtkCellRenderer     *renderer,
-                                    GdkEvent            *event,
-                                    GtkWidget           *widget,
-                                    const gchar         *path,
-                                    GdkRectangle        *background_area,
-                                    GdkRectangle        *cell_area,
-                                    GtkCellRendererState flags)
-{
-  ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (renderer);
-  GtkCellRendererMode renderer_mode;
-  gfloat              renderer_xalign;
-
-  g_object_get (G_OBJECT (renderer),
-                "mode", &renderer_mode,
-                "xalign", &renderer_xalign,
-                NULL);
-
-  /* verify that we are editable */
-  if (renderer_mode != GTK_CELL_RENDERER_MODE_EDITABLE)
-    return NULL;
-
-  /* allocate a new text entry widget to be used for editing */
-  text_renderer->entry = g_object_new (GTK_TYPE_ENTRY,
-                                       "has-frame", FALSE,
-                                       "text", text_renderer->text,
-                                       "visible", TRUE,
-                                       "xalign", renderer_xalign,
-                                       NULL);
-
-  /* select the whole text */
-  gtk_editable_select_region (GTK_EDITABLE (text_renderer->entry), 0, -1);
-
-  /* remember the tree path that we're editing */
-  g_object_set_data_full (G_OBJECT (text_renderer->entry), I_("thunar-text-renderer-path"), g_strdup (path), g_free);
-
-  /* connect required signals */
-  g_signal_connect (G_OBJECT (text_renderer->entry), "editing-done", G_CALLBACK (thunar_text_renderer_editing_done), text_renderer);
-  g_signal_connect_after (G_OBJECT (text_renderer->entry), "grab-focus", G_CALLBACK (thunar_text_renderer_grab_focus), text_renderer);
-  g_signal_connect (G_OBJECT (text_renderer->entry), "focus-out-event", G_CALLBACK (thunar_text_renderer_focus_out_event), text_renderer);
-  g_signal_connect (G_OBJECT (text_renderer->entry), "populate-popup", G_CALLBACK (thunar_text_renderer_populate_popup), text_renderer);
-
-  return GTK_CELL_EDITABLE (text_renderer->entry);
-}
-
-
-
-static void
-thunar_text_renderer_invalidate (ThunarTextRenderer *text_renderer)
-{
-  thunar_text_renderer_set_widget (text_renderer, NULL);
-}
-
-
-
-static void
-thunar_text_renderer_set_widget (ThunarTextRenderer *text_renderer,
-                                 GtkWidget          *widget)
-{
-  PangoFontMetrics *metrics;
-  PangoContext     *context;
-  gint              focus_padding;
-  gint              focus_line_width;
-
-  if (G_LIKELY (widget == text_renderer->widget))
-    return;
-
-  /* disconnect from the previously set widget */
-  if (G_UNLIKELY (text_renderer->widget != NULL))
-    {
-      g_signal_handlers_disconnect_by_func (G_OBJECT (text_renderer->widget), thunar_text_renderer_invalidate, text_renderer);
-      g_object_unref (G_OBJECT (text_renderer->layout));
-      g_object_unref (G_OBJECT (text_renderer->widget));
-    }
-
-  /* activate the new widget */
-  text_renderer->widget = widget;
-
-  /* connect to the new widget */
-  if (G_LIKELY (widget != NULL))
-    {
-      /* take a reference on the widget */
-      g_object_ref (G_OBJECT (widget));
-
-      /* we need to recalculate the metrics when a new style (and thereby a new font) is set */
-      g_signal_connect_swapped (G_OBJECT (text_renderer->widget), "destroy", G_CALLBACK (thunar_text_renderer_invalidate), text_renderer);
-      g_signal_connect_swapped (G_OBJECT (text_renderer->widget), "style-set", G_CALLBACK (thunar_text_renderer_invalidate), text_renderer);
-
-      /* allocate a new pango layout for this widget */
-      context = gtk_widget_get_pango_context (widget);
-      text_renderer->layout = pango_layout_new (context);
-
-      /* disable automatic text direction, but use the direction specified by Gtk+ */
-      pango_layout_set_auto_dir (text_renderer->layout, FALSE);
-
-      /* we don't want to interpret line separators in file names */
-      pango_layout_set_single_paragraph_mode (text_renderer->layout, TRUE);
-
-      /* calculate the average character dimensions */
-      metrics = pango_context_get_metrics (context, gtk_widget_get_style (widget)->font_desc, pango_context_get_language (context));
-      text_renderer->char_width = PANGO_PIXELS (pango_font_metrics_get_approximate_char_width (metrics));
-      text_renderer->char_height = PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) + pango_font_metrics_get_descent (metrics));
-      pango_font_metrics_unref (metrics);
-
-      /* tell the cell renderer about the fixed height if we're not wrapping text */
-      if (G_LIKELY (text_renderer->wrap_width < 0))
-        gtk_cell_renderer_set_fixed_size (GTK_CELL_RENDERER (text_renderer), -1, text_renderer->char_height);
-
-      /* determine the focus-padding and focus-line-width style properties from the widget */
-      gtk_widget_style_get (widget, "focus-padding", &focus_padding, "focus-line-width", &focus_line_width, NULL);
-      text_renderer->focus_width = focus_padding + focus_line_width;
-    }
-  else
-    {
-      text_renderer->layout = NULL;
-      text_renderer->char_width = 0;
-      text_renderer->char_height = 0;
-    }
-}
-
-
-
-static void
-thunar_text_renderer_editing_done (GtkCellEditable    *editable,
-                                   ThunarTextRenderer *text_renderer)
-{
-  const gchar *path;
-  const gchar *text;
-  gboolean     editing_canceled;
-
-  g_object_get (G_OBJECT (editable), "editing-canceled", &editing_canceled, NULL);
-
-  /* disconnect our signals from the cell editable */
-  g_signal_handlers_disconnect_by_func (G_OBJECT (editable), thunar_text_renderer_editing_done, text_renderer);
-  g_signal_handlers_disconnect_by_func (G_OBJECT (editable), thunar_text_renderer_focus_out_event, text_renderer);
-  g_signal_handlers_disconnect_by_func (G_OBJECT (editable), thunar_text_renderer_populate_popup, text_renderer);
-
-  /* let the GtkCellRenderer class do it's part of the job */
-  gtk_cell_renderer_stop_editing (GTK_CELL_RENDERER (text_renderer), editing_canceled);
-
-  /* inform whoever is interested that we have new text (if not cancelled) */
-  if (G_LIKELY (!editing_canceled))
-    {
-      text = gtk_entry_get_text (GTK_ENTRY (editable));
-      path = g_object_get_data (G_OBJECT (editable), "thunar-text-renderer-path");
-      g_signal_emit (G_OBJECT (text_renderer), text_renderer_signals[EDITED], 0, path, text);
-    }
-}
-
-
-
-static void
-thunar_text_renderer_grab_focus (GtkWidget          *entry,
-                                 ThunarTextRenderer *text_renderer)
-{
-  const gchar *text;
-  const gchar *dot;
-  glong        offset;
-
-  /* determine the text from the entry widget */
-  text = gtk_entry_get_text (GTK_ENTRY (entry));
-
-  /* lookup the last dot in the text */
-  dot = thunar_util_str_get_extension (text);
-  if (G_LIKELY (dot != NULL))
-    {
-      /* determine the UTF-8 char offset */
-      offset = g_utf8_pointer_to_offset (text, dot);
-
-      /* select the text prior to the dot */
-      if (G_LIKELY (offset > 0))
-        gtk_editable_select_region (GTK_EDITABLE (entry), 0, offset);
-    }
-
-  /* disconnect the grab-focus handler, so we change the selection only once */
-  g_signal_handlers_disconnect_by_func (G_OBJECT (entry), thunar_text_renderer_grab_focus, text_renderer);
-}
-
-
-
-static gboolean
-thunar_text_renderer_focus_out_event (GtkWidget          *entry,
-                                      GdkEventFocus      *event,
-                                      ThunarTextRenderer *text_renderer)
-{
-  /* cancel editing if we haven't popped up the menu */
-  if (G_LIKELY (!text_renderer->entry_menu_active))
-    thunar_text_renderer_editing_done (GTK_CELL_EDITABLE (entry), text_renderer);
-
-  /* we need to pass the event to the entry */
-  return FALSE;
-}
-
-
-
-static void
-thunar_text_renderer_populate_popup (GtkEntry           *entry,
-                                     GtkMenu            *menu,
-                                     ThunarTextRenderer *text_renderer)
-{
-  if (G_UNLIKELY (text_renderer->entry_menu_popdown_timer_id != 0))
-    g_source_remove (text_renderer->entry_menu_popdown_timer_id);
-
-  text_renderer->entry_menu_active = TRUE;
-
-  g_signal_connect (G_OBJECT (menu), "unmap", G_CALLBACK (thunar_text_renderer_popup_unmap), text_renderer);
-}
-
-
-
-static void
-thunar_text_renderer_popup_unmap (GtkMenu            *menu,
-                                  ThunarTextRenderer *text_renderer)
-{
-  text_renderer->entry_menu_active = FALSE;
-
-  if (G_LIKELY (text_renderer->entry_menu_popdown_timer_id == 0))
-    {
-      text_renderer->entry_menu_popdown_timer_id = g_timeout_add_full (G_PRIORITY_LOW, 500u, thunar_text_renderer_entry_menu_popdown_timer,
-                                                                       text_renderer, thunar_text_renderer_entry_menu_popdown_timer_destroy);
-    }
-}
-
-
-
-static gboolean
-thunar_text_renderer_entry_menu_popdown_timer (gpointer user_data)
-{
-  ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (user_data);
-
-  GDK_THREADS_ENTER ();
-
-  /* check if we still have the keyboard focus */
-  if (G_UNLIKELY (!gtk_widget_has_focus (text_renderer->entry)))
-    thunar_text_renderer_editing_done (GTK_CELL_EDITABLE (text_renderer->entry), text_renderer);
-
-  GDK_THREADS_LEAVE ();
-
-  return FALSE;
-}
-
-
-
-static void
-thunar_text_renderer_entry_menu_popdown_timer_destroy (gpointer user_data)
-{
-  THUNAR_TEXT_RENDERER (user_data)->entry_menu_popdown_timer_id = 0;
-}
-
-
-
-/**
- * thunar_text_renderer_new:
- **/
-GtkCellRenderer*
-thunar_text_renderer_new (void)
-{
-  return g_object_new (THUNAR_TYPE_TEXT_RENDERER, NULL);
-}
-
diff --git a/thunar/thunar-text-renderer.h b/thunar/thunar-text-renderer.h
deleted file mode 100644
index 2be4438..0000000
--- a/thunar/thunar-text-renderer.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* vi:set et ai sw=2 sts=2 ts=2: */
-/*-
- * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef __THUNAR_TEXT_RENDERER_H__
-#define __THUNAR_TEXT_RENDERER_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS;
-
-typedef struct _ThunarTextRendererClass ThunarTextRendererClass;
-typedef struct _ThunarTextRenderer      ThunarTextRenderer;
-
-#define THUNAR_TYPE_TEXT_RENDERER            (thunar_text_renderer_get_type ())
-#define THUNAR_TEXT_RENDERER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_TEXT_RENDERER, ThunarTextRenderer))
-#define THUNAR_TEXT_RENDERER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_TEXT_RENDERER, ThunarTextRendererClass))
-#define THUNAR_IS_TEXT_RENDERER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_TEXT_RENDERER))
-#define THUNAR_IS_TEXT_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_TEXT_RENDERER))
-#define THUNAR_TEXT_RENDERER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_TEXT_RENDERER, ThunarTextRendererClass))
-
-GType            thunar_text_renderer_get_type (void) G_GNUC_CONST;
-
-GtkCellRenderer *thunar_text_renderer_new      (void) G_GNUC_MALLOC;
-
-G_END_DECLS;
-
-#endif /* !__THUNAR_TEXT_RENDERER_H__ */
diff --git a/thunar/thunar-tree-view.c b/thunar/thunar-tree-view.c
index a7dda59..3b46b85 100644
--- a/thunar/thunar-tree-view.c
+++ b/thunar/thunar-tree-view.c
@@ -358,11 +358,11 @@ thunar_tree_view_class_init (ThunarTreeViewClass *klass)
 
   /* setup the key bindings for the tree view */
   binding_set = gtk_binding_set_by_class (klass);
-  gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, GDK_CONTROL_MASK, "delete-selected-files", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_Delete, 0, "delete-selected-files", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_Delete, GDK_SHIFT_MASK, "delete-selected-files", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, 0, "delete-selected-files", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, GDK_SHIFT_MASK, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_BackSpace, GDK_CONTROL_MASK, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, 0, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, GDK_SHIFT_MASK, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, 0, "delete-selected-files", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_SHIFT_MASK, "delete-selected-files", 0);
 }
 
 
@@ -855,9 +855,9 @@ thunar_tree_view_key_press_event(GtkWidget   *widget,
   switch (event->keyval)
     {
     case GDK_KEY_Up:
-    case GDK_KP_Up:
+    case GDK_KEY_KP_Up:
     case GDK_KEY_Down:
-    case GDK_KP_Down:
+    case GDK_KEY_KP_Down:
       /* the default actions works good, but we want to update the right pane */
       GTK_WIDGET_CLASS (thunar_tree_view_parent_class)->key_press_event (widget, event);
 
@@ -870,7 +870,7 @@ thunar_tree_view_key_press_event(GtkWidget   *widget,
       break;
 
     case GDK_KEY_Left:
-    case GDK_KP_Left:
+    case GDK_KEY_KP_Left:
       /* if branch is expanded then collapse it */
       if (gtk_tree_view_row_expanded (GTK_TREE_VIEW (view), path))
         gtk_tree_view_collapse_row (GTK_TREE_VIEW (view), path);
@@ -903,7 +903,7 @@ thunar_tree_view_key_press_event(GtkWidget   *widget,
       break;
 
     case GDK_KEY_Right:
-    case GDK_KP_Right:
+    case GDK_KEY_KP_Right:
       /* if branch is not expanded then expand it */
       if (!gtk_tree_view_row_expanded (GTK_TREE_VIEW (view), path))
         gtk_tree_view_expand_row (GTK_TREE_VIEW (view), path, FALSE);
@@ -917,9 +917,9 @@ thunar_tree_view_key_press_event(GtkWidget   *widget,
       stopPropagation = TRUE;
       break;
 
-    case GDK_space:
-    case GDK_Return:
-    case GDK_KP_Enter:
+    case GDK_KEY_space:
+    case GDK_KEY_Return:
+    case GDK_KEY_KP_Enter:
       thunar_tree_view_open_selection (view);
       stopPropagation = TRUE;
       break;
@@ -2653,7 +2653,7 @@ thunar_tree_view_drag_scroll_timer (gpointer user_data)
     {
       /* determine pointer location and window geometry */
       gdk_window_get_pointer (gtk_widget_get_window (GTK_WIDGET (view)), NULL, &y, NULL);
-      gdk_window_get_geometry (gtk_widget_get_window (GTK_WIDGET (view)), NULL, NULL, NULL, &h, NULL);
+      gdk_window_get_geometry (gtk_widget_get_window (GTK_WIDGET (view)), NULL, NULL, NULL, &h);
 
       /* check if we are near the edge */
       offset = y - (2 * 20);
diff --git a/thunar/thunar-window.c b/thunar/thunar-window.c
index ee55a0b..80e6a48 100644
--- a/thunar/thunar-window.c
+++ b/thunar/thunar-window.c
@@ -622,19 +622,19 @@ thunar_window_class_init (ThunarWindowClass *klass)
 
   /* setup the key bindings for the windows */
   binding_set = gtk_binding_set_by_class (klass);
-  gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, 0, "back", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_F5, 0, "reload", 1, G_TYPE_BOOLEAN, TRUE);
-  gtk_binding_entry_add_signal (binding_set, GDK_F9, 0, "toggle-sidepane", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_F10, 0, "toggle-menubar", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_KP_Add, GDK_CONTROL_MASK, "zoom-in", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_KP_Subtract, GDK_CONTROL_MASK, "zoom-out", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_KP_0, GDK_CONTROL_MASK, "zoom-reset", 0);
-  gtk_binding_entry_add_signal (binding_set, GDK_KP_Insert, GDK_CONTROL_MASK, "zoom-reset", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_BackSpace, 0, "back", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_F5, 0, "reload", 1, G_TYPE_BOOLEAN, TRUE);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_F9, 0, "toggle-sidepane", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_F10, 0, "toggle-menubar", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Add, GDK_CONTROL_MASK, "zoom-in", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Subtract, GDK_CONTROL_MASK, "zoom-out", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_0, GDK_CONTROL_MASK, "zoom-reset", 0);
+  gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_CONTROL_MASK, "zoom-reset", 0);
 
   /* setup the key bindings for Alt+N */
   for (i = 0; i < 10; i++)
     {
-      gtk_binding_entry_add_signal (binding_set, GDK_0 + i, GDK_MOD1_MASK,
+      gtk_binding_entry_add_signal (binding_set, GDK_KEY_0 + i, GDK_MOD1_MASK,
                                     "tab-change", 1, G_TYPE_UINT, i - 1);
     }
 }
@@ -3022,8 +3022,7 @@ thunar_window_action_open_templates (GtkAction    *action,
     {
       /* display the "About Templates" dialog */
       dialog = gtk_dialog_new_with_buttons (_("About Templates"), GTK_WINDOW (window),
-                                            GTK_DIALOG_DESTROY_WITH_PARENT
-                                            | GTK_DIALOG_NO_SEPARATOR,
+                                            GTK_DIALOG_DESTROY_WITH_PARENT,
                                             GTK_STOCK_OK, GTK_RESPONSE_OK,
                                             NULL);
 
diff --git a/thunarx/thunarx-property-page.c b/thunarx/thunarx-property-page.c
index 1a6a0f2..aec8e6a 100644
--- a/thunarx/thunarx-property-page.c
+++ b/thunarx/thunarx-property-page.c
@@ -51,11 +51,7 @@ static void thunarx_property_page_set_property  (GObject                  *objec
                                                  guint                     prop_id,
                                                  const GValue             *value,
                                                  GParamSpec               *pspec);
-static void thunarx_property_page_destroy       (GtkObject                *object);
-static void thunarx_property_page_size_request  (GtkWidget                *widget,
-                                                 GtkRequisition           *requisition);
-static void thunarx_property_page_size_allocate (GtkWidget                *widget,
-                                                 GtkAllocation            *allocation);
+static void thunarx_property_page_destroy       (GtkWidget                *object);
 
 
 
@@ -73,7 +69,6 @@ G_DEFINE_TYPE (ThunarxPropertyPage, thunarx_property_page, GTK_TYPE_BIN)
 static void
 thunarx_property_page_class_init (ThunarxPropertyPageClass *klass)
 {
-  GtkObjectClass *gtkobject_class;
   GtkWidgetClass *gtkwidget_class;
   GObjectClass   *gobject_class;
 
@@ -84,12 +79,8 @@ thunarx_property_page_class_init (ThunarxPropertyPageClass *klass)
   gobject_class->get_property = thunarx_property_page_get_property;
   gobject_class->set_property = thunarx_property_page_set_property;
 
-  gtkobject_class = GTK_OBJECT_CLASS (klass);
-  gtkobject_class->destroy = thunarx_property_page_destroy;
-
   gtkwidget_class = GTK_WIDGET_CLASS (klass);
-  gtkwidget_class->size_request = thunarx_property_page_size_request;
-  gtkwidget_class->size_allocate = thunarx_property_page_size_allocate;
+  gtkwidget_class->destroy = thunarx_property_page_destroy;
 
   /**
    * ThunarxPropertyPage::label:
@@ -181,69 +172,19 @@ thunarx_property_page_set_property (GObject      *object,
 
 
 static void
-thunarx_property_page_destroy (GtkObject *object)
+thunarx_property_page_destroy (GtkWidget *object)
 {
   ThunarxPropertyPage *property_page = THUNARX_PROPERTY_PAGE (object);
 
   /* destroy the label widget (if any) */
   if (G_LIKELY (property_page->priv->label_widget != NULL))
     {
-      gtk_object_destroy (GTK_OBJECT (property_page->priv->label_widget));
+      gtk_widget_destroy (GTK_WIDGET (property_page->priv->label_widget));
       g_object_unref (G_OBJECT (property_page->priv->label_widget));
       property_page->priv->label_widget = NULL;
     }
 
-  (*GTK_OBJECT_CLASS (thunarx_property_page_parent_class)->destroy) (object);
-}
-
-
-
-static void
-thunarx_property_page_size_request (GtkWidget      *widget,
-                                    GtkRequisition *requisition)
-{
-  GtkBin    *bin = GTK_BIN (widget);
-  GtkWidget *child = gtk_bin_get_child (bin);
-
-  if (G_LIKELY (child != NULL && gtk_widget_get_visible (child)))
-    {
-      gtk_widget_size_request (child, requisition);
-    }
-  else
-    {
-      requisition->width = 0;
-      requisition->height = 0;
-    }
-
-  requisition->width += 2 * (gtk_container_get_border_width (GTK_CONTAINER (bin)) + gtk_widget_get_style (widget)->xthickness);
-  requisition->height += 2 * (gtk_container_get_border_width (GTK_CONTAINER (bin)) + gtk_widget_get_style (widget)->ythickness);
-}
-
-
-
-static void
-thunarx_property_page_size_allocate (GtkWidget     *widget,
-                                     GtkAllocation *allocation)
-{
-  GtkAllocation child_allocation;
-  GtkBin       *bin = GTK_BIN (widget);
-  GtkWidget    *child = gtk_bin_get_child (bin);
-
-  /* apply the allocation to the property page */
-  gtk_widget_set_allocation (widget, allocation);
-
-  /* apply the child allocation if we have a child */
-  if (G_LIKELY (child != NULL && gtk_widget_get_visible (child)))
-    {
-      /* calculate the allocation for the child widget */
-      child_allocation.x = allocation->x + gtk_container_get_border_width (GTK_CONTAINER (bin)) + gtk_widget_get_style (widget)->xthickness;
-      child_allocation.y = allocation->y + gtk_container_get_border_width (GTK_CONTAINER (bin)) + gtk_widget_get_style (widget)->ythickness;
-      child_allocation.width = allocation->width - 2 * (gtk_container_get_border_width (GTK_CONTAINER (bin)) + gtk_widget_get_style (widget)->xthickness);
-      child_allocation.height = allocation->height - 2 * (gtk_container_get_border_width (GTK_CONTAINER (bin)) + gtk_widget_get_style (widget)->ythickness);
-
-      /* apply the child allocation */
-      gtk_widget_size_allocate (child, &child_allocation);
-    }
+  (*GTK_WIDGET_CLASS (thunarx_property_page_parent_class)->destroy) (object);
 }
 
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list