[Xfce4-commits] <thunar:nick/gtk3> Make the whole thing compile with gtk3.

Nick Schermer noreply at xfce.org
Tue May 15 19:52:01 CEST 2012


Updating branch refs/heads/nick/gtk3
         to 4270285820363ac029fa0a2568b9dd146fd3f9cb (commit)
       from 8e9737cbbe4d9df7dcd8aa1951d6b5a15e9ea75b (commit)

commit 4270285820363ac029fa0a2568b9dd146fd3f9cb
Author: Nick Schermer <nick at xfce.org>
Date:   Tue May 15 19:49:33 2012 +0200

    Make the whole thing compile with gtk3.
    
    Disabled the text-renderer for now, and the throbber has
    been replaced with the gtk spinner.

 plugins/thunar-sbr/thunar-sbr-case-renamer.c    |    6 +-
 plugins/thunar-sbr/thunar-sbr-date-renamer.c    |   14 +-
 plugins/thunar-sbr/thunar-sbr-insert-renamer.c  |   10 +-
 plugins/thunar-sbr/thunar-sbr-number-renamer.c  |   14 +-
 plugins/thunar-sbr/thunar-sbr-remove-renamer.c  |   10 +-
 plugins/thunar-sbr/thunar-sbr-replace-renamer.c |    4 +-
 plugins/thunar-sendto-email/main.c              |    8 +-
 plugins/thunar-uca/thunar-uca-chooser.c         |   13 +-
 plugins/thunar-uca/thunar-uca-editor.c          |   17 +-
 plugins/thunar-wallpaper/twp-provider.c         |    9 +-
 thunar/Makefile.am                              |   11 -
 thunar/thunar-details-view.c                    |    5 +-
 thunar/thunar-settings                          |   14 +
 thunar/thunar-shortcuts-icon-renderer.c         |   29 +-
 thunar/thunar-shortcuts-view.c                  |   22 +-
 thunar/thunar-size-label.c                      |   11 +-
 thunar/thunar-standard-view.c                   |   96 +++---
 thunar/thunar-statusbar.c                       |    5 +-
 thunar/thunar-templates-action.c                |   26 ++-
 thunar/thunar-throbber-fallback.h               |   31 --
 thunar/thunar-throbber-fallback.png             |  Bin 2713 -> 0 bytes
 thunar/thunar-throbber.c                        |  384 -----------------------
 thunar/thunar-throbber.h                        |   47 ---
 thunar/thunar-tree-view.c                       |   39 ++-
 thunar/thunar-window.c                          |   33 ++-
 25 files changed, 216 insertions(+), 642 deletions(-)

diff --git a/plugins/thunar-sbr/thunar-sbr-case-renamer.c b/plugins/thunar-sbr/thunar-sbr-case-renamer.c
index 9f8f2e8..f196c91 100644
--- a/plugins/thunar-sbr/thunar-sbr-case-renamer.c
+++ b/plugins/thunar-sbr/thunar-sbr-case-renamer.c
@@ -110,7 +110,7 @@ thunar_sbr_case_renamer_init (ThunarSbrCaseRenamer *case_renamer)
   GtkWidget      *hbox;
   guint           n;
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (case_renamer), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -118,10 +118,10 @@ thunar_sbr_case_renamer_init (ThunarSbrCaseRenamer *case_renamer)
   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
   gtk_widget_show (label);
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_CASE_RENAMER_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (case_renamer), "mode", G_OBJECT (combo), "active");
   gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
diff --git a/plugins/thunar-sbr/thunar-sbr-date-renamer.c b/plugins/thunar-sbr/thunar-sbr-date-renamer.c
index 6f3afcb..c70dbf5 100644
--- a/plugins/thunar-sbr/thunar-sbr-date-renamer.c
+++ b/plugins/thunar-sbr/thunar-sbr-date-renamer.c
@@ -184,11 +184,11 @@ thunar_sbr_date_renamer_init (ThunarSbrDateRenamer *date_renamer)
   GtkAdjustment  *adjustment;
   guint           n;
 
-  vbox = gtk_vbox_new (FALSE, 6);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   gtk_box_pack_start (GTK_BOX (date_renamer), vbox, TRUE, TRUE, 0);
   gtk_widget_show (vbox);
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -196,10 +196,10 @@ thunar_sbr_date_renamer_init (ThunarSbrDateRenamer *date_renamer)
   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
   gtk_widget_show (label);
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_DATE_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (date_renamer), "mode", G_OBJECT (combo), "active");
   gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
@@ -236,7 +236,7 @@ thunar_sbr_date_renamer_init (ThunarSbrDateRenamer *date_renamer)
   atk_relation_set_add (relations, relation);
   g_object_unref (G_OBJECT (relation));
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -258,10 +258,10 @@ thunar_sbr_date_renamer_init (ThunarSbrDateRenamer *date_renamer)
   adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (spinner));
   exo_mutual_binding_new (G_OBJECT (date_renamer), "offset", G_OBJECT (adjustment), "value");
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_OFFSET_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (date_renamer), "offset-mode", G_OBJECT (combo), "active");
   gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
   g_type_class_unref (klass);
diff --git a/plugins/thunar-sbr/thunar-sbr-insert-renamer.c b/plugins/thunar-sbr/thunar-sbr-insert-renamer.c
index 88d49a8..90c2f8c 100644
--- a/plugins/thunar-sbr/thunar-sbr-insert-renamer.c
+++ b/plugins/thunar-sbr/thunar-sbr-insert-renamer.c
@@ -167,10 +167,10 @@ thunar_sbr_insert_renamer_init (ThunarSbrInsertRenamer *insert_renamer)
   gtk_box_pack_start (GTK_BOX (insert_renamer), table, TRUE, TRUE, 0);
   gtk_widget_show (table);
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_INSERT_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (insert_renamer), "mode", G_OBJECT (combo), "active");
   gtk_table_attach (GTK_TABLE (table), combo, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
   g_type_class_unref (klass);
@@ -199,7 +199,7 @@ thunar_sbr_insert_renamer_init (ThunarSbrInsertRenamer *insert_renamer)
   gtk_table_attach (GTK_TABLE (table), label, 0, 2, 1, 2, GTK_FILL, 0, 0, 0);
   gtk_widget_show (label);
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_table_attach (GTK_TABLE (table), hbox, 2, 3, 1, 2, GTK_FILL, 0, 0, 0);
   gtk_widget_show (hbox);
 
@@ -224,10 +224,10 @@ thunar_sbr_insert_renamer_init (ThunarSbrInsertRenamer *insert_renamer)
   atk_relation_set_add (relations, relation);
   g_object_unref (G_OBJECT (relation));
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_OFFSET_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (insert_renamer), "offset-mode", G_OBJECT (combo), "active");
   gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
   g_type_class_unref (klass);
diff --git a/plugins/thunar-sbr/thunar-sbr-number-renamer.c b/plugins/thunar-sbr/thunar-sbr-number-renamer.c
index 18e1783..a3720e5 100644
--- a/plugins/thunar-sbr/thunar-sbr-number-renamer.c
+++ b/plugins/thunar-sbr/thunar-sbr-number-renamer.c
@@ -177,7 +177,7 @@ thunar_sbr_number_renamer_init (ThunarSbrNumberRenamer *number_renamer)
   GtkWidget      *hbox;
   guint           n;
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (number_renamer), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -185,10 +185,10 @@ thunar_sbr_number_renamer_init (ThunarSbrNumberRenamer *number_renamer)
   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
   gtk_widget_show (label);
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_NUMBER_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (number_renamer), "mode", G_OBJECT (combo), "active");
   gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
@@ -223,7 +223,7 @@ thunar_sbr_number_renamer_init (ThunarSbrNumberRenamer *number_renamer)
   atk_relation_set_add (relations, relation);
   g_object_unref (G_OBJECT (relation));
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_end (GTK_BOX (number_renamer), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -231,10 +231,10 @@ thunar_sbr_number_renamer_init (ThunarSbrNumberRenamer *number_renamer)
   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
   gtk_widget_show (label);
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_TEXT_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (number_renamer), "text-mode", G_OBJECT (combo), "active");
   gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
@@ -488,7 +488,7 @@ thunar_sbr_number_renamer_update (ThunarSbrNumberRenamer *number_renamer)
     }
 
   /* check if the start entry is realized */
-  if (GTK_WIDGET_REALIZED (number_renamer->start_entry))
+  if (gtk_widget_get_realized (GTK_WIDGET (number_renamer->start_entry)))
     {
       /* check if the "start" value is valid */
       if (G_UNLIKELY (invalid))
diff --git a/plugins/thunar-sbr/thunar-sbr-remove-renamer.c b/plugins/thunar-sbr/thunar-sbr-remove-renamer.c
index 0761814..c3dd749 100644
--- a/plugins/thunar-sbr/thunar-sbr-remove-renamer.c
+++ b/plugins/thunar-sbr/thunar-sbr-remove-renamer.c
@@ -198,10 +198,10 @@ thunar_sbr_remove_renamer_init (ThunarSbrRemoveRenamer *remove_renamer)
   atk_relation_set_add (relations, relation);
   g_object_unref (G_OBJECT (relation));
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_OFFSET_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (remove_renamer), "start-offset-mode", G_OBJECT (combo), "active");
   gtk_table_attach (GTK_TABLE (table), combo, 2, 3, 0, 1, GTK_FILL, 0, 0, 0);
   g_type_class_unref (klass);
@@ -233,10 +233,10 @@ thunar_sbr_remove_renamer_init (ThunarSbrRemoveRenamer *remove_renamer)
   atk_relation_set_add (relations, relation);
   g_object_unref (G_OBJECT (relation));
 
-  combo = gtk_combo_box_new_text ();
+  combo = gtk_combo_box_text_new ();
   klass = g_type_class_ref (THUNAR_SBR_TYPE_OFFSET_MODE);
   for (n = 0; n < klass->n_values; ++n)
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _(klass->values[n].value_nick));
+    gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), NULL, _(klass->values[n].value_nick));
   exo_mutual_binding_new (G_OBJECT (remove_renamer), "end-offset-mode", G_OBJECT (combo), "active");
   gtk_table_attach (GTK_TABLE (table), combo, 2, 3, 1, 2, GTK_FILL, 0, 0, 0);
   g_type_class_unref (klass);
@@ -374,7 +374,7 @@ thunar_sbr_remove_renamer_update (ThunarSbrRemoveRenamer *remove_renamer)
   guint    end_offset;
 
   /* check if the renamer is realized */
-  if (GTK_WIDGET_REALIZED (remove_renamer))
+  if (gtk_widget_get_realized (GTK_WIDGET (remove_renamer)))
     {
       /* check if start and end offset make sense */
       end_offset = (remove_renamer->end_offset_mode == THUNAR_SBR_OFFSET_MODE_LEFT)
diff --git a/plugins/thunar-sbr/thunar-sbr-replace-renamer.c b/plugins/thunar-sbr/thunar-sbr-replace-renamer.c
index ef51512..4ae70c2 100644
--- a/plugins/thunar-sbr/thunar-sbr-replace-renamer.c
+++ b/plugins/thunar-sbr/thunar-sbr-replace-renamer.c
@@ -614,7 +614,7 @@ thunar_sbr_replace_renamer_pcre_update (ThunarSbrReplaceRenamer *replace_renamer
       g_free (message);
 
       /* check if the entry is realized */
-      if (GTK_WIDGET_REALIZED (replace_renamer->pattern_entry))
+      if (gtk_widget_get_realized (GTK_WIDGET (replace_renamer->pattern_entry)))
         {
           /* if GTK+ wouldn't be that stupid with style properties and 
            * type plugins, this would be themable, but unfortunately
@@ -631,7 +631,7 @@ thunar_sbr_replace_renamer_pcre_update (ThunarSbrReplaceRenamer *replace_renamer
   else
     {
       /* check if the entry is realized */
-      if (GTK_WIDGET_REALIZED (replace_renamer->pattern_entry))
+      if (gtk_widget_get_realized (GTK_WIDGET (replace_renamer->pattern_entry)))
         {
           /* reset background/text color */
           gtk_widget_modify_base (replace_renamer->pattern_entry, GTK_STATE_NORMAL, NULL);
diff --git a/plugins/thunar-sendto-email/main.c b/plugins/thunar-sendto-email/main.c
index c6e8f11..09685ff 100644
--- a/plugins/thunar-sendto-email/main.c
+++ b/plugins/thunar-sendto-email/main.c
@@ -268,16 +268,16 @@ 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);
   gtk_window_set_default_size (GTK_WINDOW (dialog), 300, -1);
 
   /* setup the hbox */
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox, TRUE, TRUE, 0);
   gtk_widget_show (hbox);
   
   /* setup the image */
@@ -287,7 +287,7 @@ tse_progress (const gchar *working_directory,
   gtk_widget_show (image);
 
   /* setup the vbox */
-  vbox = gtk_vbox_new (FALSE, 12);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
   gtk_widget_show (vbox);
 
diff --git a/plugins/thunar-uca/thunar-uca-chooser.c b/plugins/thunar-uca/thunar-uca-chooser.c
index f58799d..1b151f0 100644
--- a/plugins/thunar-uca/thunar-uca-chooser.c
+++ b/plugins/thunar-uca/thunar-uca-chooser.c
@@ -110,14 +110,13 @@ thunar_uca_chooser_init (ThunarUcaChooser *uca_chooser)
   gtk_dialog_add_button (GTK_DIALOG (uca_chooser), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
   gtk_dialog_add_button (GTK_DIALOG (uca_chooser), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
   gtk_dialog_set_default_response (GTK_DIALOG (uca_chooser), GTK_RESPONSE_CLOSE);
-  gtk_dialog_set_has_separator (GTK_DIALOG (uca_chooser), FALSE);
   gtk_window_set_default_size (GTK_WINDOW (uca_chooser), 500, 350);
   gtk_window_set_destroy_with_parent (GTK_WINDOW (uca_chooser), TRUE);
   gtk_window_set_title (GTK_WINDOW (uca_chooser), _("Custom Actions"));
 
-  hbox = gtk_hbox_new (FALSE, 3);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
   gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (uca_chooser)->vbox), hbox, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (uca_chooser))), hbox, FALSE, TRUE, 0);
   gtk_widget_show (hbox);
 
   image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DND);
@@ -130,9 +129,9 @@ thunar_uca_chooser_init (ThunarUcaChooser *uca_chooser)
   gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
   gtk_widget_show (label);
 
-  hbox = gtk_hbox_new (FALSE, 3);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
   gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (uca_chooser)->vbox), hbox, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (uca_chooser))), hbox, TRUE, TRUE, 0);
   gtk_widget_show (hbox);
 
   swin = gtk_scrolled_window_new (NULL, NULL);
@@ -165,7 +164,7 @@ thunar_uca_chooser_init (ThunarUcaChooser *uca_chooser)
   gtk_tree_view_column_pack_start (column, renderer, TRUE);
   gtk_tree_view_column_set_attributes (column, renderer, "markup", THUNAR_UCA_MODEL_COLUMN_STOCK_LABEL, NULL);
 
-  vbox = gtk_vbox_new (FALSE, 3);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
   gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
   gtk_widget_show (vbox);
 
@@ -233,7 +232,7 @@ thunar_uca_chooser_key_press_event (GtkWidget   *widget,
                                     GdkEventKey *event)
 {
   /* close chooser window on Esc key press */
-  if (G_UNLIKELY (event->keyval == GDK_Escape))
+  if (G_UNLIKELY (event->keyval == GDK_KEY_Escape))
     {
       gtk_dialog_response (GTK_DIALOG (widget), GTK_RESPONSE_CLOSE);
       return TRUE;
diff --git a/plugins/thunar-uca/thunar-uca-editor.c b/plugins/thunar-uca/thunar-uca-editor.c
index 00add99..fc2f2a8 100644
--- a/plugins/thunar-uca/thunar-uca-editor.c
+++ b/plugins/thunar-uca/thunar-uca-editor.c
@@ -107,13 +107,12 @@ thunar_uca_editor_init (ThunarUcaEditor *uca_editor)
   gtk_dialog_add_button (GTK_DIALOG (uca_editor), GTK_STOCK_OK, GTK_RESPONSE_OK);
   gtk_dialog_set_alternative_button_order (GTK_DIALOG (uca_editor), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
   gtk_dialog_set_default_response (GTK_DIALOG (uca_editor), GTK_RESPONSE_OK);
-  gtk_dialog_set_has_separator (GTK_DIALOG (uca_editor), FALSE);
   gtk_window_set_destroy_with_parent (GTK_WINDOW (uca_editor), TRUE);
   gtk_window_set_resizable (GTK_WINDOW (uca_editor), FALSE);
 
   notebook = gtk_notebook_new ();
   gtk_container_set_border_width (GTK_CONTAINER (notebook), 6);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (uca_editor)->vbox), notebook, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (uca_editor))), notebook, TRUE, TRUE, 0);
   gtk_widget_show (notebook);
 
   /*
@@ -168,7 +167,7 @@ thunar_uca_editor_init (ThunarUcaEditor *uca_editor)
   gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, 0);
   gtk_widget_show (label);
 
-  hbox = gtk_hbox_new (FALSE, 2);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
   gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
   gtk_widget_show (hbox);
 
@@ -234,7 +233,7 @@ thunar_uca_editor_init (ThunarUcaEditor *uca_editor)
   gtk_table_attach (GTK_TABLE (table), align, 0, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
   gtk_widget_show (align);
 
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   gtk_table_attach (GTK_TABLE (table), hbox, 0, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
   gtk_widget_show (hbox);
 
@@ -243,7 +242,7 @@ thunar_uca_editor_init (ThunarUcaEditor *uca_editor)
   gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
   gtk_widget_show (image);
 
-  vbox = gtk_vbox_new (FALSE, 6);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
   gtk_widget_show (vbox);
 
@@ -433,7 +432,7 @@ thunar_uca_editor_init (ThunarUcaEditor *uca_editor)
   gtk_table_attach (GTK_TABLE (table), align, 0, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
   gtk_widget_show (align);
 
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   gtk_table_attach (GTK_TABLE (table), hbox, 0, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
   gtk_widget_show (hbox);
 
@@ -652,12 +651,14 @@ thunar_uca_editor_set_icon_name (ThunarUcaEditor *uca_editor,
   GdkPixbuf    *icon = NULL;
   GtkWidget    *image;
   GtkWidget    *label;
+  GtkWidget    *child;
 
   g_return_if_fail (THUNAR_UCA_IS_EDITOR (uca_editor));
 
   /* drop the previous button child */
-  if (GTK_BIN (uca_editor->icon_button)->child != NULL)
-    gtk_widget_destroy (GTK_BIN (uca_editor->icon_button)->child);
+  child = gtk_bin_get_child (GTK_BIN (uca_editor->icon_button));
+  if (child != NULL)
+    gtk_widget_destroy (child);
 
   /* try to load the icon */
   if (G_LIKELY (icon_name != NULL && g_path_is_absolute (icon_name)))
diff --git a/plugins/thunar-wallpaper/twp-provider.c b/plugins/thunar-wallpaper/twp-provider.c
index 9c46465..bc66b6b 100644
--- a/plugins/thunar-wallpaper/twp-provider.c
+++ b/plugins/thunar-wallpaper/twp-provider.c
@@ -141,6 +141,7 @@ twp_provider_get_file_actions (ThunarxMenuProvider *menu_provider,
   Atom       nautilus_selection_atom;
   GdkScreen *gdk_screen = gdk_screen_get_default();
   gint       xscreen = gdk_screen_get_number(gdk_screen);
+  Display   *xdisplay = gdk_x11_display_get_xdisplay (gdk_display_get_default ());
 
   desktop_type = DESKTOP_TYPE_NONE;
 
@@ -180,9 +181,9 @@ twp_provider_get_file_actions (ThunarxMenuProvider *menu_provider,
     }
 
   g_snprintf(selection_name, 100, XFDESKTOP_SELECTION_FMT, xscreen);
-  xfce_selection_atom = XInternAtom (gdk_display, selection_name, False);
+  xfce_selection_atom = XInternAtom (xdisplay, selection_name, False);
 
-  if ((XGetSelectionOwner(GDK_DISPLAY(), xfce_selection_atom)))
+  if ((XGetSelectionOwner(xdisplay, xfce_selection_atom)))
     {
       if (_has_xfconf_query)
           desktop_type = DESKTOP_TYPE_XFCE;
@@ -191,8 +192,8 @@ twp_provider_get_file_actions (ThunarxMenuProvider *menu_provider,
     {
       /* FIXME: This is wrong, nautilus WINDOW_ID is not a selection */
       g_snprintf(selection_name, 100, NAUTILUS_SELECTION_FMT);
-      nautilus_selection_atom = XInternAtom (gdk_display, selection_name, False);
-      if((XGetSelectionOwner(GDK_DISPLAY(), nautilus_selection_atom)))
+      nautilus_selection_atom = XInternAtom (xdisplay, selection_name, False);
+      if((XGetSelectionOwner(xdisplay, nautilus_selection_atom)))
       {
           if (_has_gconftool)
               desktop_type = DESKTOP_TYPE_NAUTILUS;
diff --git a/thunar/Makefile.am b/thunar/Makefile.am
index 45175ca..28c446b 100644
--- a/thunar/Makefile.am
+++ b/thunar/Makefile.am
@@ -195,12 +195,6 @@ thunar_SOURCES =							\
 	thunar-stock.h							\
 	thunar-templates-action.c					\
 	thunar-templates-action.h					\
-	thunar-text-renderer.c						\
-	thunar-text-renderer.h						\
-	thunar-throbber.c						\
-	thunar-throbber.h						\
-	thunar-throbber-fallback.c					\
-	thunar-throbber-fallback.h					\
 	thunar-thumbnail-cache.c					\
 	thunar-thumbnail-cache.h					\
 	thunar-thumbnailer.c						\
@@ -320,7 +314,6 @@ DISTCLEANFILES +=							\
 	thunar-shortcuts-pane-ui.h					\
 	thunar-renamer-dialog-ui.h					\
 	thunar-standard-view-ui.h					\
-	thunar-throbber-fallback.c					\
 	thunar-thumbnail-frame.c					\
 	thunar-window-ui.h
 
@@ -333,7 +326,6 @@ BUILT_SOURCES =								\
 	thunar-shortcuts-pane-ui.h					\
 	thunar-renamer-dialog-ui.h					\
 	thunar-standard-view-ui.h					\
-	thunar-throbber-fallback.c					\
 	thunar-thumbnail-frame.c					\
 	thunar-window-ui.h
 
@@ -358,9 +350,6 @@ thunar-thumbnail-cache-proxy.h: $(srcdir)/thunar-thumbnail-cache-dbus.xml Makefi
 	)
 endif
 
-thunar-throbber-fallback.c: $(srcdir)/thunar-throbber-fallback.png Makefile
-	$(AM_V_GEN) (echo "#include <thunar/thunar-throbber-fallback.h>" && gdk-pixbuf-csource --extern --raw --stream --name=thunar_throbber_fallback $(srcdir)/thunar-throbber-fallback.png) > thunar-throbber-fallback.c
-
 thunar-thumbnail-frame.c: $(srcdir)/thunar-thumbnail-frame.png Makefile
 	$(AM_V_GEN) (echo "#include <thunar/thunar-thumbnail-frame.h>" && gdk-pixbuf-csource --extern --raw --stream --name=thunar_thumbnail_frame $(srcdir)/thunar-thumbnail-frame.png) > thunar-thumbnail-frame.c
 
diff --git a/thunar/thunar-details-view.c b/thunar/thunar-details-view.c
index 615181f..7831090 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>
 
 
 
@@ -225,11 +224,11 @@ thunar_details_view_init (ThunarDetailsView *details_view)
   g_signal_connect (G_OBJECT (details_view->column_model), "columns-changed", G_CALLBACK (thunar_details_view_columns_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 */
diff --git a/thunar/thunar-settings b/thunar/thunar-settings
new file mode 100644
index 0000000..b101b6b
--- /dev/null
+++ b/thunar/thunar-settings
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# vi:set et ai sw=2 sts=2 ts=2: */
+
+test "x$DISPLAY" != "x" || DISPLAY=:0
+
+output=`dbus-send --session --print-reply --dest=org.xfce.FileManager \
+ /org/xfce/FileManager org.xfce.FileManager.DisplayPreferencesDialog \
+ "string:$DISPLAY" "string:$DESKTOP_STARTUP_ID"`
+
+if ! [ $? -eq 0 ]; then
+ echo $output
+ exit 1
+fi
diff --git a/thunar/thunar-shortcuts-icon-renderer.c b/thunar/thunar-shortcuts-icon-renderer.c
index 28fa0ed..192d224 100644
--- a/thunar/thunar-shortcuts-icon-renderer.c
+++ b/thunar/thunar-shortcuts-icon-renderer.c
@@ -50,11 +50,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);
 
 
@@ -176,13 +175,12 @@ thunar_shortcuts_icon_renderer_set_property (GObject      *object,
 
 
 static void
-thunar_shortcuts_icon_renderer_render (GtkCellRenderer     *renderer,
-                                       GdkWindow           *window,
-                                       GtkWidget           *widget,
-                                       GdkRectangle        *background_area,
-                                       GdkRectangle        *cell_area,
-                                       GdkRectangle        *expose_area,
-                                       GtkCellRendererState flags)
+thunar_shortcuts_icon_renderer_render (GtkCellRenderer      *renderer,
+                                       cairo_t              *cr,
+                                       GtkWidget            *widget,
+                                       const GdkRectangle   *background_area,
+                                       const GdkRectangle   *cell_area,
+                                       GtkCellRendererState  flags)
 {
   ThunarShortcutsIconRenderer *shortcuts_icon_renderer = THUNAR_SHORTCUTS_ICON_RENDERER (renderer);
   GtkIconTheme                *icon_theme;
@@ -198,7 +196,7 @@ thunar_shortcuts_icon_renderer_render (GtkCellRenderer     *renderer,
   if (G_UNLIKELY (shortcuts_icon_renderer->volume != NULL))
     {
       /* load the volume icon */
-      icon_theme = gtk_icon_theme_get_for_screen (gdk_drawable_get_screen (window));
+      icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
 
       /* look up the volume icon info */
       gicon = g_volume_get_icon (shortcuts_icon_renderer->volume);
@@ -247,7 +245,7 @@ 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 (cell_area, &icon_area, &draw_area))
             {
               /* render the invalid parts of the icon */
               gtk_render_icon (style_context, cr, icon, icon_area.x, icon_area.y);
@@ -260,8 +258,9 @@ 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 1a89c7b..25f1ca8 100644
--- a/thunar/thunar-shortcuts-view.c
+++ b/thunar/thunar-shortcuts-view.c
@@ -641,7 +641,8 @@ thunar_shortcuts_view_drag_motion (GtkWidget      *widget,
 {
   GtkTreeViewDropPosition position = GTK_TREE_VIEW_DROP_BEFORE;
   ThunarShortcutsView    *view = THUNAR_SHORTCUTS_VIEW (widget);
-  GdkDragAction           action = 0;
+  GdkDragAction           action = 0, actions;
+  GdkDragAction           suggested_action;
   GtkTreeModel           *model;
   GtkTreePath            *path = NULL;
   GdkAtom                 target;
@@ -671,11 +672,14 @@ thunar_shortcuts_view_drag_motion (GtkWidget      *widget,
   else if (target == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW"))
     {
       /* check the action that should be performed */
-      if (context->suggested_action == GDK_ACTION_LINK || (context->actions & GDK_ACTION_LINK) != 0)
+      actions = gdk_drag_context_get_actions (context);
+      suggested_action = gdk_drag_context_get_suggested_action (context);
+
+      if (suggested_action == GDK_ACTION_LINK || (actions & GDK_ACTION_LINK) != 0)
         action = GDK_ACTION_LINK;
-      else if (context->suggested_action == GDK_ACTION_COPY || (context->actions & GDK_ACTION_COPY) != 0)
+      else if (suggested_action == GDK_ACTION_COPY || (actions & GDK_ACTION_COPY) != 0)
         action = GDK_ACTION_COPY;
-      else if (context->suggested_action == GDK_ACTION_MOVE || (context->actions & GDK_ACTION_MOVE) != 0)
+      else if (suggested_action == GDK_ACTION_MOVE || (actions & GDK_ACTION_MOVE) != 0)
         action = GDK_ACTION_MOVE;
       else
         return FALSE;
@@ -1059,6 +1063,7 @@ thunar_shortcuts_view_compute_drop_actions (ThunarShortcutsView     *view,
   GtkTreeIter        iter;
   ThunarFile        *file;
   gint               cell_y;
+  GdkDragAction      suggested_action, allowed_actions;
 
   /* determine the shortcuts model */
   model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
@@ -1102,11 +1107,14 @@ thunar_shortcuts_view_compute_drop_actions (ThunarShortcutsView     *view,
   if (G_UNLIKELY (actions == 0))
     {
       /* check the action that should be performed */
-      if (context->suggested_action == GDK_ACTION_LINK || (context->actions & GDK_ACTION_LINK) != 0)
+      allowed_actions = gdk_drag_context_get_actions (context);
+      suggested_action = gdk_drag_context_get_suggested_action (context);
+
+      if (suggested_action == GDK_ACTION_LINK || (allowed_actions & GDK_ACTION_LINK) != 0)
         actions = GDK_ACTION_LINK;
-      else if (context->suggested_action == GDK_ACTION_COPY || (context->actions & GDK_ACTION_COPY) != 0)
+      else if (suggested_action == GDK_ACTION_COPY || (allowed_actions & GDK_ACTION_COPY) != 0)
         actions = GDK_ACTION_COPY;
-      else if (context->suggested_action == GDK_ACTION_MOVE || (context->actions & GDK_ACTION_MOVE) != 0)
+      else if (suggested_action == GDK_ACTION_MOVE || (allowed_actions & GDK_ACTION_MOVE) != 0)
         actions = GDK_ACTION_MOVE;
       else
         return 0;
diff --git a/thunar/thunar-size-label.c b/thunar/thunar-size-label.c
index c83758e..5816a30 100644
--- a/thunar/thunar-size-label.c
+++ b/thunar/thunar-size-label.c
@@ -32,7 +32,6 @@
 #include <thunar/thunar-gtk-extensions.h>
 #include <thunar/thunar-private.h>
 #include <thunar/thunar-size-label.h>
-#include <thunar/thunar-throbber.h>
 #include <thunar/thunar-deep-count-job.h>
 
 
@@ -148,7 +147,7 @@ thunar_size_label_init (ThunarSizeLabel *size_label)
   gtk_widget_show (ebox);
 
   /* add the throbber widget */
-  size_label->throbber = thunar_throbber_new ();
+  size_label->throbber = gtk_spinner_new ();
   exo_binding_new (G_OBJECT (size_label->throbber), "visible", G_OBJECT (ebox), "visible");
   gtk_container_add (GTK_CONTAINER (ebox), size_label->throbber);
   gtk_widget_show (size_label->throbber);
@@ -260,7 +259,7 @@ thunar_size_label_button_press_event (GtkWidget       *ebox,
         }
 
       /* be sure to stop and hide the throbber */
-      thunar_throbber_set_animated (THUNAR_THROBBER (size_label->throbber), FALSE);
+      gtk_spinner_stop (GTK_SPINNER (size_label->throbber));
       gtk_widget_hide (size_label->throbber);
 
       /* tell the user that the operation was canceled */
@@ -348,7 +347,7 @@ thunar_size_label_file_changed (ThunarFile      *file,
     }
 
   /* be sure to stop and hide the throbber */
-  thunar_throbber_set_animated (THUNAR_THROBBER (size_label->throbber), FALSE);
+  gtk_spinner_stop (GTK_SPINNER (size_label->throbber));
   gtk_widget_hide (size_label->throbber);
 
   /* check if the file is a directory */
@@ -429,7 +428,7 @@ thunar_size_label_finished (ExoJob          *job,
     g_source_remove (size_label->animate_timer_id);
 
   /* stop and hide the throbber */
-  thunar_throbber_set_animated (THUNAR_THROBBER (size_label->throbber), FALSE);
+  gtk_spinner_stop (GTK_SPINNER (size_label->throbber));
   gtk_widget_hide (size_label->throbber);
 
   /* disconnect from the job */
@@ -489,7 +488,7 @@ thunar_size_label_animate_timer (gpointer user_data)
   GDK_THREADS_ENTER ();
 
   /* animate and display the throbber */
-  thunar_throbber_set_animated (THUNAR_THROBBER (size_label->throbber), TRUE);
+  gtk_spinner_start (GTK_SPINNER (size_label->throbber));
   gtk_widget_show (size_label->throbber);
 
   GDK_THREADS_LEAVE ();
diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c
index 0696f22..bfd324e 100644
--- a/thunar/thunar-standard-view.c
+++ b/thunar/thunar-standard-view.c
@@ -49,7 +49,6 @@
 #include <thunar/thunar-standard-view.h>
 #include <thunar/thunar-standard-view-ui.h>
 #include <thunar/thunar-templates-action.h>
-#include <thunar/thunar-text-renderer.h>
 #include <thunar/thunar-thumbnailer.h>
 
 #if defined(GDK_WINDOWING_X11)
@@ -112,8 +111,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);
@@ -418,7 +417,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;
@@ -608,9 +607,9 @@ 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 = gtk_cell_renderer_text_new ();
   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 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);
@@ -954,36 +953,30 @@ 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;
-  gint     x, y, width, height;
+  gboolean         result;
+  GtkAllocation    alloc;
+  GtkStyleContext *style_context;
 
   /* let the scrolled window do it's work */
-  result = (*GTK_WIDGET_CLASS (thunar_standard_view_parent_class)->expose_event) (widget, event);
+  result = (*GTK_WIDGET_CLASS (thunar_standard_view_parent_class)->draw) (widget, cr);
 
   /* render the folder drop shadow */
   if (G_UNLIKELY (THUNAR_STANDARD_VIEW (widget)->priv->drop_highlight))
     {
-      x = widget->allocation.x;
-      y = widget->allocation.y;
-      width = widget->allocation.width;
-      height = widget->allocation.height;
+      gtk_widget_get_allocation (widget, &alloc);
 
-      gtk_paint_shadow (widget->style, widget->window,
-                        GTK_STATE_NORMAL, GTK_SHADOW_OUT,
-                        NULL, widget, "dnd",
-                        x, y, width, height);
-
-      /* the cairo version looks better here, so we use it if possible */
-      cr = gdk_cairo_create (widget->window);
-      cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
-      cairo_set_line_width (cr, 1.0);
-      cairo_rectangle (cr, x + 0.5, y + 0.5, width - 1, height - 1);
-      cairo_stroke (cr);
-      cairo_destroy (cr);
+      style_context = gtk_widget_get_style_context (widget);
+      gtk_style_context_save (style_context);
+      gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_DND);
+      
+      gtk_render_frame (style_context, cr,
+                        alloc.x + 0.5, alloc.y + 0.5,
+                        alloc.width - 1, alloc.height - 1);
+      
+      gtk_style_context_restore (style_context);
     }
 
   return result;
@@ -2446,7 +2439,7 @@ thunar_standard_view_motion_notify_event (GtkWidget          *view,
                                           GdkEventMotion     *event,
                                           ThunarStandardView *standard_view)
 {
-  GdkDragContext *context;
+  //GdkDragContext *context;
   GtkTargetList  *target_list;
 
   _thunar_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), FALSE);
@@ -2460,8 +2453,8 @@ thunar_standard_view_motion_notify_event (GtkWidget          *view,
 
       /* allocate the drag context (preferred action is to ask the user) */
       target_list = gtk_target_list_new (drag_targets, G_N_ELEMENTS (drag_targets));
-      context = gtk_drag_begin (view, target_list, GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK, 3, (GdkEvent *) event);
-      context->suggested_action = GDK_ACTION_ASK;
+      /*context = */gtk_drag_begin (view, target_list, GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK, 3, (GdkEvent *) event);
+      /*TODO no way to set suggested action context->suggested_action = GDK_ACTION_ASK; */
       gtk_target_list_unref (target_list);
 
       return TRUE;
@@ -2550,7 +2543,8 @@ 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_KEY_dead_tilde)
@@ -2594,7 +2588,8 @@ thunar_standard_view_drag_drop (GtkWidget          *view,
       if (G_LIKELY (file != NULL))
         {
           /* determine the file name from the DnD source window */
-          if (gdk_property_get (context->source_window, gdk_atom_intern_static_string ("XdndDirectSave0"),
+          if (gdk_property_get (gdk_drag_context_get_source_window (context),
+                                gdk_atom_intern_static_string ("XdndDirectSave0"),
                                 gdk_atom_intern_static_string ("text/plain"), 0, 1024, FALSE, NULL, NULL,
                                 &prop_len, &prop_text) && prop_text != NULL)
             {
@@ -2607,13 +2602,13 @@ thunar_standard_view_drag_drop (GtkWidget          *view,
                 {
                   /* allocate the relative path for the target */
                   path = g_file_resolve_relative_path (thunar_file_get_file (file), 
-                                                       (const gchar *)prop_text);
+                                                       (const gchar *) prop_text);
 
                   /* determine the new URI */
                   uri = g_file_get_uri (path);
 
                   /* setup the property */
-                  gdk_property_change (GDK_DRAWABLE (context->source_window),
+                  gdk_property_change (gdk_drag_context_get_source_window (context),
                                        gdk_atom_intern_static_string ("XdndDirectSave0"),
                                        gdk_atom_intern_static_string ("text/plain"), 8,
                                        GDK_PROP_MODE_REPLACE, (const guchar *) uri,
@@ -2733,7 +2728,7 @@ thunar_standard_view_drag_data_received (GtkWidget          *view,
               && gtk_selection_data_get_data (selection_data)[0] == 'F'))
             {
               /* indicate that we don't provide "F" fallback */
-              gdk_property_change (GDK_DRAWABLE (context->source_window),
+              gdk_property_change (gdk_drag_context_get_source_window (context),
                                    gdk_atom_intern_static_string ("XdndDirectSave0"),
                                    gdk_atom_intern_static_string ("text/plain"), 8,
                                    GDK_PROP_MODE_REPLACE, (const guchar *) "", 0);
@@ -2790,13 +2785,14 @@ thunar_standard_view_drag_data_received (GtkWidget          *view,
 
                       /* determine the toplevel window */
                       toplevel = gtk_widget_get_toplevel (view);
-                      if (toplevel != NULL && gtk_widget_get_toplevel (toplevel))
+                      if (toplevel != NULL)
                         {
 #if defined(GDK_WINDOWING_X11)
                           /* on X11, we can supply the parent window id here */
                           argv[n++] = "--xid";
                           argv[n++] = g_newa (gchar, 32);
-                          g_snprintf (argv[n - 1], 32, "%ld", (glong) GDK_WINDOW_XID (toplevel->window));
+                          g_snprintf (argv[n - 1], 32, "%ld",
+                                      (glong) GDK_WINDOW_XID (gtk_widget_get_window (toplevel)));
 #endif
                         }
 
@@ -2839,9 +2835,9 @@ thunar_standard_view_drag_data_received (GtkWidget          *view,
           if (G_LIKELY ((actions & (GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK)) != 0))
             {
               /* ask the user what to do with the drop data */
-              action = (context->action == GDK_ACTION_ASK)
+              action = (gdk_drag_context_get_actions (context) == GDK_ACTION_ASK)
                      ? thunar_dnd_ask (GTK_WIDGET (standard_view), file, standard_view->priv->drop_file_list, timestamp, actions)
-                     : context->action;
+                     : gdk_drag_context_get_actions (context);
 
               /* perform the requested action */
               if (G_LIKELY (action != 0))
@@ -2930,7 +2926,7 @@ thunar_standard_view_drag_motion (GtkWidget          *view,
                         && thunar_file_is_directory (file) 
                         && thunar_file_is_writable (file)))
             {
-              action = context->suggested_action;
+              action = gdk_drag_context_get_suggested_action (context);
             }
 
           /* reset path if we cannot drop */
@@ -3221,16 +3217,20 @@ thunar_standard_view_drag_scroll_timer (gpointer user_data)
   gint                y, x;
   gint                w, h;
   GtkWidget          *child;
+  GdkDevice          *device;
+  GdkDeviceManager   *device_manager;
 
   GDK_THREADS_ENTER ();
 
   /* verify that we are realized */
-  if (G_LIKELY (gtk_widget_get_realized (standard_view)))
+  if (G_LIKELY (gtk_widget_get_realized (GTK_WIDGET (standard_view))))
     {
       /* determine pointer location and window geometry */
       child = gtk_bin_get_child (GTK_BIN (standard_view));
-      gdk_window_get_pointer (gtk_widget_get_window (child), &x, &y, NULL);
-      gdk_window_get_geometry (gtk_widget_get_window (child), NULL, NULL, &w, &h, NULL);
+      device_manager = gdk_display_get_device_manager (gtk_widget_get_display (child));
+      device = gdk_device_manager_get_client_pointer (device_manager);
+      gdk_window_get_device_position (gtk_widget_get_window (child), device, &x, &y, NULL);
+      gdk_window_get_geometry (gtk_widget_get_window (child), NULL, NULL, &w, &h);
 
       /* check if we are near the edge (vertical) */
       offset = y - (2 * 20);
@@ -3244,7 +3244,9 @@ thunar_standard_view_drag_scroll_timer (gpointer user_data)
           adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (standard_view));
 
           /* determine the new value */
-          value = CLAMP (adjustment->value + 2 * offset, adjustment->lower, adjustment->upper - adjustment->page_size);
+          value = CLAMP (gtk_adjustment_get_value (adjustment) + 2 * offset,
+                         gtk_adjustment_get_lower (adjustment),
+                         gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_page_size (adjustment));
 
           /* apply the new value */
           gtk_adjustment_set_value (adjustment, value);
@@ -3262,7 +3264,9 @@ thunar_standard_view_drag_scroll_timer (gpointer user_data)
           adjustment = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (standard_view));
 
           /* determine the new value */
-          value = CLAMP (adjustment->value + 2 * offset, adjustment->lower, adjustment->upper - adjustment->page_size);
+          value = CLAMP (gtk_adjustment_get_value (adjustment) + 2 * offset,
+                         gtk_adjustment_get_lower (adjustment),
+                         gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_page_size (adjustment));
 
           /* apply the new value */
           gtk_adjustment_set_value (adjustment, value);
diff --git a/thunar/thunar-statusbar.c b/thunar/thunar-statusbar.c
index 3b8533b..db4d680 100644
--- a/thunar/thunar-statusbar.c
+++ b/thunar/thunar-statusbar.c
@@ -89,11 +89,11 @@ thunar_statusbar_class_init (ThunarStatusbarClass *klass)
 
   if (!style_initialized)
     {
-      gtk_rc_parse_string ("style \"thunar-statusbar-internal\" {\n"
+      /* TODO gtk_rc_parse_string ("style \"thunar-statusbar-internal\" {\n"
                            "  GtkStatusbar::shadow-type = GTK_SHADOW_NONE\n"
                            "}\n"
                            "class \"ThunarStatusbar\" "
-                           "style \"thunar-statusbar-internal\"\n");
+                           "style \"thunar-statusbar-internal\"\n"); */
     }
 }
 
@@ -103,7 +103,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-templates-action.c b/thunar/thunar-templates-action.c
index 2202dc5..5f9ec74 100644
--- a/thunar/thunar-templates-action.c
+++ b/thunar/thunar-templates-action.c
@@ -323,6 +323,7 @@ thunar_templates_action_files_ready (ThunarJob             *job,
   GList             *pp;
   gchar             *label;
   gchar             *dot;
+  GList             *children;
 
   /* determine the menu to add the items and submenus to */
   menu = g_object_get_data (G_OBJECT (job), "menu");
@@ -402,8 +403,9 @@ thunar_templates_action_files_ready (ThunarJob             *job,
     {
       /* determine the submenu for this directory item */
       submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (lp->data));
+      children = gtk_container_get_children (GTK_CONTAINER (submenu));
 
-      if (GTK_MENU_SHELL (submenu)->children == NULL)
+      if (children == NULL)
         {
           /* the directory submenu is empty, destroy it */
           gtk_widget_destroy (lp->data);
@@ -413,6 +415,7 @@ thunar_templates_action_files_ready (ThunarJob             *job,
           /* the directory has template files, so add it to its parent menu */
           gtk_menu_shell_prepend (GTK_MENU_SHELL (pp->data), lp->data);
           gtk_widget_show (lp->data);
+          g_list_free (children);
         }
     }
 
@@ -437,6 +440,7 @@ thunar_templates_action_load_error (ThunarJob             *job,
 {
   GtkWidget *item;
   GtkWidget *menu;
+  GList     *children;
 
   _thunar_return_if_fail (THUNAR_IS_JOB (job));
   _thunar_return_if_fail (error != NULL);
@@ -446,13 +450,21 @@ thunar_templates_action_load_error (ThunarJob             *job,
   menu = g_object_get_data (G_OBJECT (job), "menu");
 
   /* check if any items were added to the menu */
-  if (G_LIKELY (menu != NULL && GTK_MENU_SHELL (menu)->children == NULL))
+  if (G_LIKELY (menu != NULL))
     {
-      /* tell the user that no templates were found */
-      item = gtk_menu_item_new_with_label (error->message);
-      gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-      gtk_widget_set_sensitive (item, FALSE);
-      gtk_widget_show (item);
+      children = gtk_container_get_children (GTK_CONTAINER (menu));
+      if (children == NULL)
+        {
+          /* tell the user that no templates were found */
+          item = gtk_menu_item_new_with_label (error->message);
+          gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+          gtk_widget_set_sensitive (item, FALSE);
+          gtk_widget_show (item);
+        }
+      else
+        {
+          g_list_free (children);
+        }
     }
 }
 
diff --git a/thunar/thunar-throbber-fallback.h b/thunar/thunar-throbber-fallback.h
deleted file mode 100644
index 6481258..0000000
--- a/thunar/thunar-throbber-fallback.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 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
- */
-
-#ifndef __THUNAR_THROBBER_FALLBACK_H__
-#define __THUNAR_THROBBER_FALLBACK_H__
-
-#include <glib.h>
-
-G_BEGIN_DECLS;
-
-extern const guint8 thunar_throbber_fallback[];
-
-G_END_DECLS;
-
-#endif /* !__THUNAR_THROBBER_FALLBACK_H__ */
diff --git a/thunar/thunar-throbber-fallback.png b/thunar/thunar-throbber-fallback.png
deleted file mode 100644
index 5f0a19d..0000000
Binary files a/thunar/thunar-throbber-fallback.png and /dev/null differ
diff --git a/thunar/thunar-throbber.c b/thunar/thunar-throbber.c
deleted file mode 100644
index 83a6157..0000000
--- a/thunar/thunar-throbber.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/* $Id$ */
-/*-
- * 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
-
-#include <exo/exo.h>
-
-#include <thunar/thunar-gobject-extensions.h>
-#include <thunar/thunar-private.h>
-#include <thunar/thunar-throbber.h>
-#include <thunar/thunar-throbber-fallback.h>
-
-
-
-/* Property identifiers */
-enum
-{
-  PROP_0,
-  PROP_ANIMATED,
-};
-
-
-
-static void     thunar_throbber_dispose             (GObject              *object);
-static void     thunar_throbber_get_property        (GObject              *object,
-                                                     guint                 prop_id,
-                                                     GValue               *value,
-                                                     GParamSpec           *pspec);
-static void     thunar_throbber_set_property        (GObject              *object,
-                                                     guint                 prop_id,
-                                                     const GValue         *value,
-                                                     GParamSpec           *pspec);
-static void     thunar_throbber_realize             (GtkWidget            *widget);
-static void     thunar_throbber_unrealize           (GtkWidget            *widget);
-static void     thunar_throbber_get_preferred_width (GtkWidget            *widget,
-                                                     gint                 *normal_width,
-                                                     gint                 *minimal_width);
-static void     thunar_throbber_get_preferred_heigh (GtkWidget            *widget,
-                                                     gint                 *normal_height,
-                                                     gint                 *minimal_height);
-static gboolean thunar_throbber_draw                (GtkWidget            *widget,
-                                                     cairo_t              *cr);
-static gboolean thunar_throbber_timer               (gpointer              user_data);
-static void     thunar_throbber_timer_destroy       (gpointer              user_data);
-
-
-
-struct _ThunarThrobberClass
-{
-  GtkWidgetClass __parent__;
-};
-
-struct _ThunarThrobber
-{
-  GtkWidget __parent__;
-
-  GdkPixbuf *icon;
-
-  gboolean   animated;
-  gint       index;
-  gint       timer_id;
-};
-
-
-
-G_DEFINE_TYPE (ThunarThrobber, thunar_throbber, GTK_TYPE_WIDGET)
-
-
-
-static void
-thunar_throbber_class_init (ThunarThrobberClass *klass)
-{
-  GtkWidgetClass *gtkwidget_class;
-  GObjectClass   *gobject_class;
-  GdkPixbuf      *icon;
-
-  gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->dispose = thunar_throbber_dispose;
-  gobject_class->get_property = thunar_throbber_get_property;
-  gobject_class->set_property = thunar_throbber_set_property;
-
-  gtkwidget_class = GTK_WIDGET_CLASS (klass);
-  gtkwidget_class->realize = thunar_throbber_realize;
-  gtkwidget_class->unrealize = thunar_throbber_unrealize;
-  gtkwidget_class->size_request = thunar_throbber_size_request;
-  gtkwidget_class->draw = thunar_throbber_draw;
-
-  /**
-   * ThunarThrobber:animated:
-   *
-   * Whether the throbber should display an animation.
-   **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_ANIMATED,
-                                   g_param_spec_boolean ("animated",
-                                                         "animated",
-                                                         "animated",
-                                                         FALSE,
-                                                         EXO_PARAM_READWRITE));
-
-  /* register the "process-working" fallback icon */
-  icon = gdk_pixbuf_new_from_inline (-1, thunar_throbber_fallback, FALSE, NULL);
-  gtk_icon_theme_add_builtin_icon ("process-working", 16, icon);
-  g_object_unref (G_OBJECT (icon));
-}
-
-
-
-static void
-thunar_throbber_init (ThunarThrobber *throbber)
-{
-  gtk_widget_set_has_window (GTK_WIDGET (throbber), FALSE);
-  throbber->timer_id = -1;
-}
-
-
-
-static void
-thunar_throbber_dispose (GObject *object)
-{
-  ThunarThrobber *throbber = THUNAR_THROBBER (object);
-
-  /* stop any running animation */
-  if (G_UNLIKELY (throbber->timer_id >= 0))
-    g_source_remove (throbber->timer_id);
-
-  (*G_OBJECT_CLASS (thunar_throbber_parent_class)->dispose) (object);
-}
-
-
-
-static void
-thunar_throbber_get_property (GObject    *object,
-                              guint       prop_id,
-                              GValue     *value,
-                              GParamSpec *pspec)
-{
-  ThunarThrobber *throbber = THUNAR_THROBBER (object);
-
-  switch (prop_id)
-    {
-    case PROP_ANIMATED:
-      g_value_set_boolean (value, thunar_throbber_get_animated (throbber));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_throbber_set_property (GObject      *object,
-                              guint         prop_id,
-                              const GValue *value,
-                              GParamSpec   *pspec)
-{
-  ThunarThrobber *throbber = THUNAR_THROBBER (object);
-
-  switch (prop_id)
-    {
-    case PROP_ANIMATED:
-      thunar_throbber_set_animated (throbber, g_value_get_boolean (value));
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-
-
-static void
-thunar_throbber_realize (GtkWidget *widget)
-{
-  ThunarThrobber *throbber = THUNAR_THROBBER (widget);
-  GtkIconTheme   *icon_theme;
-
-  /* let Gtk+ realize the widget */
-  (*GTK_WIDGET_CLASS (thunar_throbber_parent_class)->realize) (widget);
-
-  /* determine the icon theme for our screen */
-  icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
-
-  /* try to lookup the "process-working" icon */
-  throbber->icon = gtk_icon_theme_load_icon (icon_theme, "process-working", 16, GTK_ICON_LOOKUP_USE_BUILTIN | GTK_ICON_LOOKUP_NO_SVG, NULL);
-}
-
-
-
-static void
-thunar_throbber_unrealize (GtkWidget *widget)
-{
-  ThunarThrobber *throbber = THUNAR_THROBBER (widget);
-
-  /* release the icon if any */
-  if (G_LIKELY (throbber->icon != NULL))
-    {
-      g_object_unref (G_OBJECT (throbber->icon));
-      throbber->icon = NULL;
-    }
-
-  /* let Gtk+ unrealize the widget */
-  (*GTK_WIDGET_CLASS (thunar_throbber_parent_class)->unrealize) (widget);
-}
-
-
-
-static void     
-thunar_throbber_get_preferred_width (GtkWidget *widget,
-                                     gint      *normal_width,
-                                     gint      *minimal_width)
-{
- *normal_width = *minimal_width = 16;
-}
-
-
-
-static void                                    
-thunar_throbber_get_preferred_height (GtkWidget *widget,
-                                      gint      *normal_height,
-                                      gint      *minimal_height)
-{
-  *normal_height = *minimal_height = 16;
-}
-
-
-
-static gboolean
-thunar_throbber_draw (GtkWidget *widget,
-                      cairo_t   *cr)
-{
-  ThunarThrobber *throbber = THUNAR_THROBBER (widget);
-  gint            icon_index;
-  gint            icon_cols;
-  gint            icon_rows;
-  gint            icon_x;
-  gint            icon_y;
-
-  /* verify that we have a valid icon */
-  if (G_LIKELY (throbber->icon != NULL))
-    {
-      /* determine the icon columns and icon rows */
-      icon_cols = gdk_pixbuf_get_width (throbber->icon) / 16;
-      icon_rows = gdk_pixbuf_get_height (throbber->icon) / 16;
-
-      /* verify that the icon is usable */
-      if (G_LIKELY (icon_cols > 0 && icon_rows > 0))
-        {
-          /* determine the icon index */
-          icon_index = throbber->index % (icon_cols * icon_rows);
-
-          /* make sure, we don't display the "empty state" while animated */
-          if (G_LIKELY (throbber->timer_id >= 0))
-            icon_index = MAX (icon_index, 1);
-
-          /* determine the icon x/y offset for the icon index */
-          icon_x = (icon_index % icon_cols) * 16;
-          icon_y = (icon_index / icon_cols) * 16;
-
-          /* render the given part of the icon */
-          gtk_render_icon_pixbuf (gtk_widget_get_style_context (widget),
-                                  cr, throbber->icon, icon_x, icon_y);
-        }
-    }
-
-  return TRUE;
-}
-
-
-
-static gboolean
-thunar_throbber_timer (gpointer user_data)
-{
-  ThunarThrobber *throbber = THUNAR_THROBBER (user_data);
-
-  GDK_THREADS_ENTER ();
-  throbber->index += 1;
-  gtk_widget_queue_draw (GTK_WIDGET (throbber));
-  GDK_THREADS_LEAVE ();
-
-  return throbber->animated;
-}
-
-
-
-static void
-thunar_throbber_timer_destroy (gpointer user_data)
-{
-  THUNAR_THROBBER (user_data)->index = 0;
-  THUNAR_THROBBER (user_data)->timer_id = -1;
-}
-
-
-
-/**
- * thunar_throbber_new:
- *
- * Allocates a new #ThunarThrobber instance.
- *
- * Return value: the newly allocated #ThunarThrobber.
- **/
-GtkWidget*
-thunar_throbber_new (void)
-{
-  return g_object_new (THUNAR_TYPE_THROBBER, NULL);
-}
-
-
-
-/**
- * thunar_throbber_get_animated:
- * @throbber : a #ThunarThrobber.
- *
- * Returns whether @throbber is currently animated.
- *
- * Return value: %TRUE if @throbber is animated.
- **/
-gboolean
-thunar_throbber_get_animated (const ThunarThrobber *throbber)
-{
-  _thunar_return_val_if_fail (THUNAR_IS_THROBBER (throbber), FALSE);
-  return throbber->animated;
-}
-
-
-
-/**
- * thunar_throbber_set_animated:
- * @throbber : a #ThunarThrobber.
- * @animated : whether to animate @throbber.
- *
- * If @animated is %TRUE, @throbber will display an animation.
- **/
-void
-thunar_throbber_set_animated (ThunarThrobber *throbber,
-                              gboolean        animated)
-{
-  _thunar_return_if_fail (THUNAR_IS_THROBBER (throbber));
-
-  /* check if we're already in the requested state */
-  if (G_UNLIKELY (throbber->animated == animated))
-    return;
-
-  /* pick up the new state */
-  throbber->animated = animated;
-
-  /* start the timer if animated and not already running */
-  if (animated && (throbber->timer_id < 0))
-    {
-      /* start the animation */
-      throbber->timer_id = g_timeout_add_full (G_PRIORITY_LOW, 25, thunar_throbber_timer,
-                                               throbber, thunar_throbber_timer_destroy);
-    }
-
-  /* schedule a redraw with the new animation state */
-  gtk_widget_queue_draw (GTK_WIDGET (throbber));
-
-  /* notify listeners */
-  g_object_notify (G_OBJECT (throbber), "animated");
-}
-
-
diff --git a/thunar/thunar-throbber.h b/thunar/thunar-throbber.h
deleted file mode 100644
index 9484f42..0000000
--- a/thunar/thunar-throbber.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $Id$ */
-/*-
- * 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
- */
-
-#ifndef __THUNAR_THROBBER_H__
-#define __THUNAR_THROBBER_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS;
-
-typedef struct _ThunarThrobberClass ThunarThrobberClass;
-typedef struct _ThunarThrobber      ThunarThrobber;
-
-#define THUNAR_TYPE_THROBBER            (thunar_throbber_get_type ())
-#define THUNAR_THROBBER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_THROBBER, ThunarThrobber))
-#define THUNAR_THROBBER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_THROBBER, ThunarThrobberClass))
-#define THUNAR_IS_THROBBER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_THROBBER))
-#define THUNAR_IS_THROBBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_THROBBER))
-#define THUNAR_THROBBER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_THROBBER, ThunarThrobberClass))
-
-GType      thunar_throbber_get_type     (void) G_GNUC_CONST;
-
-GtkWidget *thunar_throbber_new          (void) G_GNUC_MALLOC;
-
-gboolean   thunar_throbber_get_animated (const ThunarThrobber *throbber);
-void       thunar_throbber_set_animated (ThunarThrobber       *throbber,
-                                         gboolean              animated);
-
-G_END_DECLS;
-
-#endif /* !__THUNAR_THROBBER_H__ */
diff --git a/thunar/thunar-tree-view.c b/thunar/thunar-tree-view.c
index e8eb09e..a1dca9e 100644
--- a/thunar/thunar-tree-view.c
+++ b/thunar/thunar-tree-view.c
@@ -786,9 +786,10 @@ thunar_tree_view_drag_data_received (GtkWidget        *widget,
       if (G_LIKELY ((actions & (GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK)) != 0))
         {
           /* ask the user what to do with the drop data */
-          action = (context->action == GDK_ACTION_ASK)
+          actions = gdk_drag_context_get_actions (context);
+          action = (actions == GDK_ACTION_ASK)
                  ? thunar_dnd_ask (GTK_WIDGET (view), file, view->drop_file_list, timestamp, actions)
-                 : context->action;
+                 : actions;
 
           /* perform the requested action */
           if (G_LIKELY (action != 0))
@@ -2336,23 +2337,27 @@ thunar_tree_view_cursor_idle_destroy (gpointer user_data)
 static gboolean
 thunar_tree_view_drag_scroll_timer (gpointer user_data)
 {
-  ThunarTreeView *view = THUNAR_TREE_VIEW (user_data);
-  GtkAdjustment  *vadjustment;
-  GtkTreePath    *start_path;
-  GtkTreePath    *end_path;
-  GtkTreePath    *path;
-  gfloat          value;
-  gint            offset;
-  gint            y, h;
+  ThunarTreeView   *view = THUNAR_TREE_VIEW (user_data);
+  GtkAdjustment    *vadjustment;
+  GtkTreePath      *start_path;
+  GtkTreePath      *end_path;
+  GtkTreePath      *path;
+  gfloat            value;
+  gint              offset;
+  gint              y, h;
+  GdkDevice        *device;
+  GdkDeviceManager *device_manager;
 
   GDK_THREADS_ENTER ();
 
   /* verify that we are realized */
-  if (gtk_widget_get_realized (view))
+  if (gtk_widget_get_realized (GTK_WIDGET (view)))
     {
       /* 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);
+      device_manager = gdk_display_get_device_manager (gtk_widget_get_display (GTK_WIDGET (view)));
+      device = gdk_device_manager_get_client_pointer (device_manager);
+      gdk_window_get_device_position (gtk_widget_get_window (GTK_WIDGET (view)), device, NULL, &y, 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);
@@ -2363,13 +2368,15 @@ thunar_tree_view_drag_scroll_timer (gpointer user_data)
       if (G_UNLIKELY (offset != 0))
         {
           /* determine the vertical adjustment */
-          vadjustment = gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (view));
+          vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (view));
 
           /* determine the new value */
-          value = CLAMP (vadjustment->value + 2 * offset, vadjustment->lower, vadjustment->upper - vadjustment->page_size);
+          value = CLAMP (gtk_adjustment_get_value (vadjustment) + 2 * offset,
+                         gtk_adjustment_get_lower (vadjustment),
+                         gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment));
 
           /* check if we have a new value */
-          if (G_UNLIKELY (vadjustment->value != value))
+          if (G_UNLIKELY (gtk_adjustment_get_value (vadjustment) != value))
             {
               /* apply the new value */
               gtk_adjustment_set_value (vadjustment, value);
diff --git a/thunar/thunar-window.c b/thunar/thunar-window.c
index 348b6a1..e8a8477 100644
--- a/thunar/thunar-window.c
+++ b/thunar/thunar-window.c
@@ -56,7 +56,6 @@
 #include <thunar/thunar-private.h>
 #include <thunar/thunar-statusbar.h>
 #include <thunar/thunar-stock.h>
-#include <thunar/thunar-throbber.h>
 #include <thunar/thunar-trash-action.h>
 #include <thunar/thunar-tree-pane.h>
 #include <thunar/thunar-window.h>
@@ -788,12 +787,13 @@ thunar_window_init (ThunarWindow *window)
   /* append the menu item for the throbber */
   item = gtk_menu_item_new ();
   gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE);
-  gtk_menu_item_set_right_justified (GTK_MENU_ITEM (item), TRUE);
+  gtk_widget_set_hexpand (GTK_WIDGET (item), TRUE);
+  gtk_widget_set_halign (GTK_WIDGET (item), GTK_ALIGN_END);
   gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
   gtk_widget_show (item);
 
   /* place the throbber into the menu item */
-  window->throbber = thunar_throbber_new ();
+  window->throbber = gtk_spinner_new ();
   gtk_container_add (GTK_CONTAINER (item), window->throbber);
   gtk_widget_show (window->throbber);
 
@@ -801,9 +801,9 @@ thunar_window_init (ThunarWindow *window)
   if (G_UNLIKELY (geteuid () == 0))
     {
       /* install default settings for the root warning text box */
-      gtk_rc_parse_string ("style\"thunar-window-root-style\"{bg[NORMAL]=\"#b4254b\"\nfg[NORMAL]=\"#fefefe\"}\n"
+      /* TODO gtk_rc_parse_string ("style\"thunar-window-root-style\"{bg[NORMAL]=\"#b4254b\"\nfg[NORMAL]=\"#fefefe\"}\n"
                            "widget\"ThunarWindow.*.root-warning\"style\"thunar-window-root-style\"\n"
-                           "widget\"ThunarWindow.*.root-warning.GtkLabel\"style\"thunar-window-root-style\"\n");
+                           "widget\"ThunarWindow.*.root-warning.GtkLabel\"style\"thunar-window-root-style\"\n"); */
 
       /* add the box for the root warning */
       ebox = gtk_event_box_new ();
@@ -822,7 +822,7 @@ thunar_window_init (ThunarWindow *window)
       gtk_widget_show (separator);
     }
 
-  window->paned = gtk_hpaned_new ();
+  window->paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
   gtk_container_set_border_width (GTK_CONTAINER (window->paned), 0);
   gtk_table_attach (GTK_TABLE (window->table), window->paned, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   gtk_widget_show (window->paned);
@@ -1204,10 +1204,12 @@ static gboolean
 thunar_window_configure_event (GtkWidget         *widget,
                                GdkEventConfigure *event)
 {
-  ThunarWindow *window = THUNAR_WINDOW (widget);
+  ThunarWindow  *window = THUNAR_WINDOW (widget);
+  GtkAllocation  alloc;
 
   /* check if we have a new dimension here */
-  if (widget->allocation.width != event->width || widget->allocation.height != event->height)
+  gtk_widget_get_allocation (widget, &alloc);
+  if (alloc.width != event->width || alloc.height != event->height)
     {
       /* drop any previous timer source */
       if (window->save_geometry_timer_id > 0)
@@ -1902,7 +1904,7 @@ thunar_window_action_view_changed (GtkRadioAction *action,
       g_signal_connect_swapped (G_OBJECT (window->view), "change-directory", G_CALLBACK (thunar_window_set_current_directory), window);
       exo_binding_new (G_OBJECT (window), "current-directory", G_OBJECT (window->view), "current-directory");
       exo_binding_new (G_OBJECT (window), "show-hidden", G_OBJECT (window->view), "show-hidden");
-      exo_binding_new (G_OBJECT (window->view), "loading", G_OBJECT (window->throbber), "animated");
+      exo_binding_new (G_OBJECT (window->view), "loading", G_OBJECT (window->throbber), "active");
       exo_binding_new (G_OBJECT (window->view), "selected-files", G_OBJECT (window->launcher), "selected-files");
       exo_mutual_binding_new (G_OBJECT (window->view), "zoom-level", G_OBJECT (window), "zoom-level");
       gtk_table_attach (GTK_TABLE (window->view_box), window->view, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
@@ -2580,23 +2582,26 @@ thunar_window_notify_loading (ThunarView   *view,
                               ThunarWindow *window)
 {
   GdkCursor *cursor;
+  GdkWindow *gdkwindow;
 
   _thunar_return_if_fail (THUNAR_IS_VIEW (view));
   _thunar_return_if_fail (THUNAR_IS_WINDOW (window));
   _thunar_return_if_fail (THUNAR_VIEW (window->view) == view);
 
-  if (gtk_widget_get_realized (window))
+  if (gtk_widget_get_realized (GTK_WIDGET (window)))
     {
+      gdkwindow = gtk_widget_get_window (GTK_WIDGET (window));
+
       /* setup the proper cursor */
       if (thunar_view_get_loading (view))
         {
           cursor = gdk_cursor_new (GDK_WATCH);
-          gdk_window_set_cursor (GTK_WIDGET (window)->window, cursor);
-          gdk_cursor_unref (cursor);
+          gdk_window_set_cursor (gdkwindow, cursor);
+          g_object_unref (G_OBJECT (cursor));
         }
       else
         {
-          gdk_window_set_cursor (GTK_WIDGET (window)->window, NULL);
+          gdk_window_set_cursor (gdkwindow, NULL);
         }
     }
 }
@@ -2681,7 +2686,7 @@ thunar_window_save_geometry_timer (gpointer user_data)
   if (G_LIKELY (remember_geometry))
     {
       /* check if the window is still visible */
-      if (gtk_widget_get_visible (window))
+      if (gtk_widget_get_visible (GTK_WIDGET (window)))
         {
           /* determine the current state of the window */
           state = gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window)));


More information about the Xfce4-commits mailing list