diff options
author | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2020-06-22 20:04:24 -0300 |
---|---|---|
committer | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2020-06-22 20:06:14 -0300 |
commit | 8311d5eb598d05792fd1a52b2e5b8a6db5bc4d39 (patch) | |
tree | 88774871f7889cd348a6e8d4816d1298a65bda95 | |
parent | 249dfb709e7d1d7bd71c6473bd4b612db7fd8458 (diff) | |
download | glade-8311d5eb598d05792fd1a52b2e5b8a6db5bc4d39.tar.gz |
GladeGtkWindow: Fix CSD support
GladeWidget: make sure hidden placeholder are never serialized
https://gitlab.gnome.org/GNOME/glade/-/issues/447
-rw-r--r-- | gladeui/glade-widget.c | 3 | ||||
-rw-r--r-- | plugins/gtk+/glade-gtk-window.c | 23 |
2 files changed, 19 insertions, 7 deletions
diff --git a/gladeui/glade-widget.c b/gladeui/glade-widget.c index e98b3137..de38b0ff 100644 --- a/gladeui/glade-widget.c +++ b/gladeui/glade-widget.c @@ -4437,7 +4437,8 @@ glade_widget_write (GladeWidget *widget, if (child) glade_widget_write_child (widget, child, context, widget_node); - else if (GLADE_IS_PLACEHOLDER (l->data)) + /* Only write visible placeholder, since the plugins could use invisible ones for convenience */ + else if (GLADE_IS_PLACEHOLDER (l->data) && gtk_widget_get_visible (l->data)) glade_widget_write_placeholder (widget, G_OBJECT (l->data), context, widget_node); diff --git a/plugins/gtk+/glade-gtk-window.c b/plugins/gtk+/glade-gtk-window.c index 00da7afe..7b841c61 100644 --- a/plugins/gtk+/glade-gtk-window.c +++ b/plugins/gtk+/glade-gtk-window.c @@ -43,7 +43,8 @@ glade_gtk_window_parse_finished (GladeProject *project, GObject *object) { GtkWidget *titlebar = gtk_window_get_titlebar(GTK_WINDOW (object)); glade_widget_property_set (glade_widget_get_from_gobject (object), "use-csd", - titlebar && gtk_widget_get_visible (titlebar)); + titlebar && gtk_widget_get_visible (titlebar) && + !GLADE_IS_PLACEHOLDER (titlebar)); } static void @@ -205,9 +206,8 @@ glade_gtk_window_write_widget (GladeWidgetAdaptor *adaptor, glade_xml_node_verify_silent (node, GLADE_XML_TAG_TEMPLATE))) return; - /* First chain up and read in all the normal properties.. */ - GLADE_WIDGET_ADAPTOR_GET_ADAPTOR_CLASS (GTK_TYPE_WIDGET)->write_widget (adaptor, widget, context, - node); + /* First chain up and write in all the normal properties.. */ + GLADE_WIDGET_ADAPTOR_GET_ADAPTOR_CLASS (GTK_TYPE_WIDGET)->write_widget (adaptor, widget, context, node); glade_gtk_window_write_accel_groups (widget, context, node); } @@ -282,8 +282,19 @@ glade_gtk_window_set_property (GladeWidgetAdaptor *adaptor, } else { - /* Set a hidden placeholder as the titlebar */ - glade_gtk_window_ensure_titlebar_placeholder (object); + if (GLADE_IS_PLACEHOLDER (titlebar)) + gtk_widget_hide (titlebar); + else + { + GList this_widget = { 0, }; + + /* Remove titlebar widget */ + this_widget.data = glade_widget_get_from_gobject (titlebar); + glade_command_delete (&this_widget); + + /* Set a hidden placeholder as the titlebar */ + glade_gtk_window_ensure_titlebar_placeholder (object); + } glade_widget_property_set_sensitive (gwidget, "title", TRUE, NULL); glade_widget_property_set_sensitive (gwidget, "decorated", TRUE, NULL); |