[Xfce4-commits] <xfwm4:master> Fix broken button layouts by obtaining button IDs correctly (bug 6824).

Jannis Pohlmann noreply at xfce.org
Sun Nov 14 13:00:01 CET 2010


Updating branch refs/heads/master
         to a3225e2e116a68833994349c949cd6fb0b6fdaae (commit)
       from 54d6a560cd8a133ea8d97a4466eb9bf8c8bee4cf (commit)

commit a3225e2e116a68833994349c949cd6fb0b6fdaae
Author: Jannis Pohlmann <jannis at xfce.org>
Date:   Sun Nov 14 12:56:27 2010 +0100

    Fix broken button layouts by obtaining button IDs correctly (bug 6824).
    
    Since GTK+ 2.20, gtk_buildable_get_name() needs to be used instead of
    gtk_widget_get_name() (which always returns 'GtkButton' in this case).

 NEWS                              |    6 +++
 settings-dialogs/xfwm4-settings.c |   63 +++++++++++++++++++-----------------
 2 files changed, 39 insertions(+), 30 deletions(-)

diff --git a/NEWS b/NEWS
index ab7fd09..16e80bd 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+4.7.x
+=====
+- Fix corrupted button layouts by obtaining the button IDs correctly
+  (bug #6824).
+
+
 4.7.1
 =====
 - Fix break with latest API changes in libxfce4ui.
diff --git a/settings-dialogs/xfwm4-settings.c b/settings-dialogs/xfwm4-settings.c
index 550ce00..0d4d21b 100644
--- a/settings-dialogs/xfwm4-settings.c
+++ b/settings-dialogs/xfwm4-settings.c
@@ -517,7 +517,7 @@ xfwm_settings_constructed (GObject *object)
     for (list_iter = children; list_iter != NULL; list_iter = g_list_next (list_iter))
       {
         button = GTK_WIDGET (list_iter->data);
-        name = gtk_widget_get_name (button);
+        name = gtk_buildable_get_name (GTK_BUILDABLE (button));
 
         if (name[strlen (name) - 1] == '|')
           {
@@ -542,36 +542,36 @@ xfwm_settings_constructed (GObject *object)
                           G_CALLBACK (xfwm_settings_signal_blocker), NULL);
         g_signal_connect (button, "focus",  G_CALLBACK (xfwm_settings_signal_blocker), NULL);
       }
-  }
-  g_list_free (children);
-
-  children = gtk_container_get_children (GTK_CONTAINER (hidden_box));
-  for (list_iter = children; list_iter != NULL; list_iter = g_list_next (list_iter))
-    {
-      button = GTK_WIDGET (list_iter->data);
-      name = gtk_widget_get_name (button);
+    g_list_free (children);
 
-      g_object_set_data (G_OBJECT (button), "key_char", (gpointer) &name[strlen (name) - 1]);
-      gtk_drag_source_set (button, GDK_BUTTON1_MASK, &target_entry[0], 1, GDK_ACTION_MOVE);
+    children = gtk_container_get_children (GTK_CONTAINER (hidden_box));
+    for (list_iter = children; list_iter != NULL; list_iter = g_list_next (list_iter))
+      {
+        button = GTK_WIDGET (list_iter->data);
+        name = gtk_buildable_get_name (GTK_BUILDABLE (button));
 
-        g_signal_connect (button, "drag_data_get",
-                          G_CALLBACK (xfwm_settings_title_button_drag_data), NULL);
-        g_signal_connect (button, "drag_begin", G_CALLBACK (xfwm_settings_title_button_drag_begin),
-                          NULL);
-        g_signal_connect (button, "drag_end", G_CALLBACK (xfwm_settings_title_button_drag_end),
-                          NULL);
-        g_signal_connect (button, "button_press_event",
-                          G_CALLBACK (xfwm_settings_signal_blocker), NULL);
-        g_signal_connect (button, "enter_notify_event",
-                          G_CALLBACK (xfwm_settings_signal_blocker), NULL);
-        g_signal_connect (button, "focus",  G_CALLBACK (xfwm_settings_signal_blocker), NULL);
-    }
-  g_list_free (children);
+        g_object_set_data (G_OBJECT (button), "key_char", (gpointer) &name[strlen (name) - 1]);
+        gtk_drag_source_set (button, GDK_BUTTON1_MASK, &target_entry[0], 1, GDK_ACTION_MOVE);
+
+          g_signal_connect (button, "drag_data_get",
+                            G_CALLBACK (xfwm_settings_title_button_drag_data), NULL);
+          g_signal_connect (button, "drag_begin", G_CALLBACK (xfwm_settings_title_button_drag_begin),
+                            NULL);
+          g_signal_connect (button, "drag_end", G_CALLBACK (xfwm_settings_title_button_drag_end),
+                            NULL);
+          g_signal_connect (button, "button_press_event",
+                            G_CALLBACK (xfwm_settings_signal_blocker), NULL);
+          g_signal_connect (button, "enter_notify_event",
+                            G_CALLBACK (xfwm_settings_signal_blocker), NULL);
+          g_signal_connect (button, "focus",  G_CALLBACK (xfwm_settings_signal_blocker), NULL);
+      }
+    g_list_free (children);
 
-  xfconf_channel_get_property (settings->priv->wm_channel, "/general/button_layout", &value);
-  xfwm_settings_button_layout_property_changed (settings->priv->wm_channel,
-                                                "/general/button_layout", &value, settings);
-  g_value_unset (&value);
+    xfconf_channel_get_property (settings->priv->wm_channel, "/general/button_layout", &value);
+    xfwm_settings_button_layout_property_changed (settings->priv->wm_channel,
+                                                  "/general/button_layout", &value, settings);
+    g_value_unset (&value);
+  }
 
   /* Keyboard tab widgets */
   shortcuts_treeview = GTK_WIDGET (gtk_builder_get_object (settings->priv->builder, "shortcuts_treeview"));
@@ -1350,10 +1350,13 @@ xfwm_settings_title_button_drag_data (GtkWidget        *widget,
                                       guint             info,
                                       guint             timestamp)
 {
+  const gchar *name;
+
+  name = gtk_buildable_get_name (GTK_BUILDABLE (widget));
+
   gtk_widget_hide (widget);
   gtk_selection_data_set (data, gdk_atom_intern ("_xfwm4_button_layout", FALSE), 8,
-                          (const guchar *)gtk_widget_get_name (widget),
-                          strlen (gtk_widget_get_name (widget)));
+                          (const guchar *)name, strlen (name));
 }
 
 



More information about the Xfce4-commits mailing list