summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2020-07-22 19:15:49 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2020-07-22 19:23:09 -0300
commit2a3cc9e4cd794bd488ba46cba72ab503a4019ccf (patch)
treee30a44f6302d5c4b99680d662780b40e7733706e /plugins
parente742d393b514508f6372441106d3ba556d2af65a (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.c12
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 */