[glade] GladeGtkWindow: Fix CSD support
- From: Juan Pablo Ugarte <jpu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade] GladeGtkWindow: Fix CSD support
- Date: Mon, 22 Jun 2020 23:10:04 +0000 (UTC)
commit 8311d5eb598d05792fd1a52b2e5b8a6db5bc4d39
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date: Mon Jun 22 20:04:24 2020 -0300
GladeGtkWindow: Fix CSD support
GladeWidget: make sure hidden placeholder are never serialized
https://gitlab.gnome.org/GNOME/glade/-/issues/447
gladeui/glade-widget.c | 3 ++-
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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]