diff options
author | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2020-07-22 19:15:49 -0300 |
---|---|---|
committer | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2020-07-22 19:23:09 -0300 |
commit | 2a3cc9e4cd794bd488ba46cba72ab503a4019ccf (patch) | |
tree | e30a44f6302d5c4b99680d662780b40e7733706e /plugins | |
parent | e742d393b514508f6372441106d3ba556d2af65a (diff) |
GladeGtkWindow: add extra safeguards in use-csd support code.
Some GtkWindow derived classes do not support titlebar widget
because they use it internally.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/gtk+/glade-gtk-window.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/plugins/gtk+/glade-gtk-window.c b/plugins/gtk+/glade-gtk-window.c index 7b841c61..56049f10 100644 --- a/plugins/gtk+/glade-gtk-window.c +++ b/plugins/gtk+/glade-gtk-window.c @@ -88,7 +88,8 @@ glade_gtk_window_post_create (GladeWidgetAdaptor *adaptor, G_CALLBACK (glade_gtk_window_parse_finished), object); } - else if (reason == GLADE_CREATE_USER) + else if (reason == GLADE_CREATE_USER && + gtk_bin_get_child (GTK_BIN (object)) == NULL) { gtk_container_add (GTK_CONTAINER (object), glade_placeholder_new ()); } @@ -268,6 +269,13 @@ glade_gtk_window_set_property (GladeWidgetAdaptor *adaptor, else if (!strcmp (id, "use-csd")) { GtkWidget *titlebar = gtk_window_get_titlebar (GTK_WINDOW (object)); + GladeWidget *gtitlebar = glade_widget_get_from_gobject (titlebar); + + /* Safeguard for subclasses that do not properly implement this property */ + if (!titlebar || + (!GLADE_IS_PLACEHOLDER (titlebar) && + !(gtitlebar = glade_widget_get_from_gobject (titlebar)))) + return; if (g_value_get_boolean (value)) { @@ -289,7 +297,7 @@ glade_gtk_window_set_property (GladeWidgetAdaptor *adaptor, GList this_widget = { 0, }; /* Remove titlebar widget */ - this_widget.data = glade_widget_get_from_gobject (titlebar); + this_widget.data = gtitlebar; glade_command_delete (&this_widget); /* Set a hidden placeholder as the titlebar */ |