[glade/headerbar] Try to make titlebar removal work



commit 50c8e87f8b001bd15b1d8d5908d0b4a46d8ef4bf
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Oct 17 17:12:11 2014 -0400

    Try to make titlebar removal work
    
    Use glade_command_delete, which seems to succeed in getting the
    child removed from the widget tree.

 plugins/gtk+/glade-gtk-window.c |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)
---
diff --git a/plugins/gtk+/glade-gtk-window.c b/plugins/gtk+/glade-gtk-window.c
index b4ae523..aef4980 100644
--- a/plugins/gtk+/glade-gtk-window.c
+++ b/plugins/gtk+/glade-gtk-window.c
@@ -235,10 +235,10 @@ glade_gtk_window_set_property (GladeWidgetAdaptor * adaptor,
                               GObject * object,
                               const gchar * id, const GValue * value)
 {
+  GladeWidget *gwidget = glade_widget_get_from_gobject (object);
+
   if (!strcmp (id, "glade-window-icon-name"))
     {
-      GladeWidget *gwidget = glade_widget_get_from_gobject (object);
-
       glade_widget_property_set_sensitive (gwidget, "icon", FALSE, NOT_SELECTED_MSG);
       glade_widget_property_set_sensitive (gwidget, "icon-name", FALSE, NOT_SELECTED_MSG);
 
@@ -249,18 +249,26 @@ glade_gtk_window_set_property (GladeWidgetAdaptor * adaptor,
     }
   else if (!strcmp (id, "use-csd"))
     {
+      GtkWidget *titlebar = gtk_window_get_titlebar (GTK_WINDOW (object));
+
       if (g_value_get_boolean (value))
         {
-          GtkWidget *titlebar;
-
-          titlebar = gtk_window_get_titlebar (GTK_WINDOW (object));
           if (!titlebar)
             titlebar = glade_placeholder_new ();
           g_object_set_data (G_OBJECT (titlebar), "special-child-type", "titlebar");
           gtk_window_set_titlebar (GTK_WINDOW (object), titlebar);
         }
       else
-        gtk_window_set_titlebar (GTK_WINDOW (object), NULL);
+        {
+          if (titlebar)
+            {
+              GList list;
+              list.prev = list.next = NULL;
+              list.data = glade_widget_get_from_gobject (titlebar);
+              glade_command_delete (&list);
+            }
+          gtk_window_set_titlebar (GTK_WINDOW (object), NULL);
+        }
     }
   else
     GWA_GET_CLASS (GTK_TYPE_CONTAINER)->set_property (adaptor, object, id, value);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]