From c7d40c2807bd7f446177e41303a7711fb7874b68 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <fourdan.olivier@wanadoo.fr>
Date: Sun, 26 Sep 2004 09:02:56 +0000
Subject: [PATCH] Fix [Bug 336]  New: Moving hidden buttons in settings changes
 button layout of all windows

(Old svn revision: 11984)
---
 mcs-plugin/xfwm4_plugin.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/mcs-plugin/xfwm4_plugin.c b/mcs-plugin/xfwm4_plugin.c
index 420c24abf..88ad6468e 100644
--- a/mcs-plugin/xfwm4_plugin.c
+++ b/mcs-plugin/xfwm4_plugin.c
@@ -482,15 +482,21 @@ hidden_data_receive (GtkWidget * widget, GdkDragContext * drag_context,
 {
     GtkWidget *source = gtk_drag_get_source_widget (drag_context);
     GtkWidget *parent = gtk_widget_get_parent (source);
-    McsPlugin *mcs_plugin = (McsPlugin *) g_object_get_data (G_OBJECT(user_data), "mcs");
+    McsPlugin *mcs_plugin = NULL;
     
     g_return_if_fail (GTK_IS_WIDGET (user_data));
 
+    mcs_plugin = (McsPlugin *) g_object_get_data (G_OBJECT(user_data), "mcs");
     gtk_widget_ref (source);
     gtk_container_remove (GTK_CONTAINER (parent), source);
     gtk_box_pack_start (GTK_BOX (user_data), source, FALSE, FALSE, 0);
     gtk_widget_unref (source);
 
+    if (parent == GTK_WIDGET (user_data))
+    {
+        return;
+    }
+
     if (current_layout)
     {
         g_free (current_layout);
@@ -509,10 +515,11 @@ layout_data_receive (GtkWidget * widget, GdkDragContext * drag_context,
 {
     GtkWidget *source = gtk_drag_get_source_widget (drag_context);
     GtkWidget *parent = gtk_widget_get_parent (source);
-    McsPlugin *mcs_plugin = (McsPlugin *) g_object_get_data (G_OBJECT(user_data), "mcs");
+    McsPlugin *mcs_plugin = NULL;
 
     g_return_if_fail (GTK_IS_WIDGET (user_data));
 
+    mcs_plugin = (McsPlugin *) g_object_get_data (G_OBJECT(user_data), "mcs");
 
     gtk_widget_set_app_paintable (GTK_WIDGET(user_data), FALSE);
     gtk_widget_ref (source);
@@ -1837,8 +1844,9 @@ setup_dialog (Itf * itf)
         loadtheme_in_treeview (ti, itf);
     }
     else
+    {
         g_warning ("Cannot find the keytheme !");
-
+    }
     g_signal_connect (G_OBJECT (itf->xfwm4_dialog), "response", G_CALLBACK (cb_dialog_response), itf->mcs_plugin);
     g_signal_connect (G_OBJECT (itf->font_button), "clicked", G_CALLBACK (show_font_selection), itf);
     g_signal_connect (G_OBJECT (itf->click_focus_radio), "toggled", G_CALLBACK (cb_click_to_focus_changed), itf);
-- 
GitLab