summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2014-10-22 21:03:21 -0400
committerMatthias Clasen <mclasen@redhat.com>2014-10-22 21:03:21 -0400
commit2d6b1bd61ce05988df2d7cd67444625227912bb7 (patch)
tree9be7db110ecd267ee759459b9ad1b758c25fe237
parent6d4364cc2353f3366031156e4a1ab3a778feeb7b (diff)
downloadglade-2d6b1bd61ce05988df2d7cd67444625227912bb7.tar.gz
Use proper mechanisms to deal with dependent properties
Make desensitizing of title, decorated and hide-titlebar-when-maximized part of the undo history, and also reset them to their default values.
-rw-r--r--plugins/gtk+/glade-gtk-window.c19
-rw-r--r--plugins/gtk+/glade-window-editor.c14
2 files changed, 26 insertions, 7 deletions
diff --git a/plugins/gtk+/glade-gtk-window.c b/plugins/gtk+/glade-gtk-window.c
index 3e1d2b7e..30e4cfd4 100644
--- a/plugins/gtk+/glade-gtk-window.c
+++ b/plugins/gtk+/glade-gtk-window.c
@@ -236,10 +236,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);
@@ -259,9 +259,22 @@ glade_gtk_window_set_property (GladeWidgetAdaptor * adaptor,
titlebar = glade_placeholder_new ();
g_object_set_data (G_OBJECT (titlebar), "special-child-type", "titlebar");
gtk_window_set_titlebar (GTK_WINDOW (object), titlebar);
+
+ glade_widget_property_set_sensitive (gwidget, "title", FALSE,
+ _("This property does not apply to client-side decorated windows"));
+ glade_widget_property_set_sensitive (gwidget, "decorated", FALSE,
+ _("This property does not apply to client-side decorated windows"));
+ glade_widget_property_set_sensitive (gwidget, "hide-titlebar-when-maximized", FALSE,
+ _("This property does not apply to client-side decorated windows"));
}
else
- gtk_window_set_titlebar (GTK_WINDOW (object), NULL);
+ {
+ gtk_window_set_titlebar (GTK_WINDOW (object), NULL);
+
+ glade_widget_property_set_sensitive (gwidget, "title", TRUE, NULL);
+ glade_widget_property_set_sensitive (gwidget, "decorated", TRUE, NULL);
+ glade_widget_property_set_sensitive (gwidget, "hide-titlebar-when-maximized", TRUE, NULL);
+ }
}
else
GWA_GET_CLASS (GTK_TYPE_CONTAINER)->set_property (adaptor, object, id, value);
diff --git a/plugins/gtk+/glade-window-editor.c b/plugins/gtk+/glade-window-editor.c
index 4c24f7e8..fe4d8159 100644
--- a/plugins/gtk+/glade-window-editor.c
+++ b/plugins/gtk+/glade-window-editor.c
@@ -230,10 +230,6 @@ use_csd_toggled (GtkWidget *widget,
/* Get new desired property state */
use_csd = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->use_csd_check));
- gtk_widget_set_sensitive (priv->title_editor, !use_csd);
- gtk_widget_set_sensitive (priv->decorated_editor, !use_csd);
- gtk_widget_set_sensitive (priv->hide_titlebar_editor, !use_csd);
-
/* Get any existing titlebar widget */
window = (GtkWidget *)glade_widget_get_object (gwidget);
titlebar = gtk_window_get_titlebar (GTK_WINDOW (window));
@@ -264,6 +260,16 @@ use_csd_toggled (GtkWidget *widget,
property = glade_widget_get_property (gwidget, "use-csd");
glade_command_set_property (property, use_csd);
+ if (use_csd)
+ {
+ property = glade_widget_get_property (gwidget, "title");
+ glade_command_set_property (property, NULL);
+ property = glade_widget_get_property (gwidget, "decorated");
+ glade_command_set_property (property, TRUE);
+ property = glade_widget_get_property (gwidget, "hide-titlebar-when-maximized");
+ glade_command_set_property (property, FALSE);
+ }
+
glade_command_pop_group ();
glade_editable_unblock (GLADE_EDITABLE (window_editor));