[glade/csd: 3/3] Use proper mechanisms to deal with dependent properties



commit 2d6b1bd61ce05988df2d7cd67444625227912bb7
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Oct 22 21:03:21 2014 -0400

    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.

 plugins/gtk+/glade-gtk-window.c    |   19 ++++++++++++++++---
 plugins/gtk+/glade-window-editor.c |   14 ++++++++++----
 2 files changed, 26 insertions(+), 7 deletions(-)
---
diff --git a/plugins/gtk+/glade-gtk-window.c b/plugins/gtk+/glade-gtk-window.c
index 3e1d2b7..30e4cfd 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 4c24f7e..fe4d815 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));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]