void 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")) { glade_widget_property_set_sensitive (gwidget, "icon", FALSE, NOT_SELECTED_MSG); glade_widget_property_set_sensitive (gwidget, "icon-name", FALSE, NOT_SELECTED_MSG); if (g_value_get_boolean (value)) glade_widget_property_set_sensitive (gwidget, "icon-name", TRUE, NULL); else glade_widget_property_set_sensitive (gwidget, "icon", TRUE, NULL); } else if (!strcmp (id, "use-csd")) { if (g_value_get_boolean (value)) { GtkWidget *titlebar; titlebar = gtk_window_get_titlebar (GTK_WINDOW (object)); if (!titlebar) 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, CSD_DISABLED_MESSAGE); glade_widget_property_set_sensitive (gwidget, "decorated", FALSE, CSD_DISABLED_MESSAGE); glade_widget_property_set_sensitive (gwidget, "hide-titlebar-when-maximized", FALSE, CSD_DISABLED_MESSAGE); } else { 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); }
static void glade_gtk_window_parse_finished (GladeProject * project, GObject * object) { glade_widget_property_set (glade_widget_get_from_gobject (object), "use-csd", gtk_window_get_titlebar(GTK_WINDOW (object)) != NULL); }
static void use_csd_toggled (GtkWidget *widget, GladeWindowEditor *window_editor) { GladeWindowEditorPrivate *priv = window_editor->priv; GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (window_editor)); GladeWidget *gtitlebar = NULL; GtkWidget *window; GtkWidget *titlebar; GladeProperty *property; gboolean use_csd; if (glade_editable_loading (GLADE_EDITABLE (window_editor)) || !gwidget) return; /* Get new desired property state */ use_csd = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->use_csd_check)); /* Get any existing titlebar widget */ window = (GtkWidget *)glade_widget_get_object (gwidget); titlebar = gtk_window_get_titlebar (GTK_WINDOW (window)); if (titlebar && !GLADE_IS_PLACEHOLDER (titlebar)) gtitlebar = glade_widget_get_from_gobject (titlebar); glade_editable_block (GLADE_EDITABLE (window_editor)); if (use_csd) glade_command_push_group (_("Setting %s to use a custom titlebar"), glade_widget_get_name (gwidget)); else glade_command_push_group (_("Setting %s to use a system provided titlebar"), glade_widget_get_name (gwidget)); /* If a project widget exists when were disabling CSD, it needs * to be removed first as a part of the issuing GladeCommand group */ if (gtitlebar) { GList list; list.prev = list.next = NULL; list.data = gtitlebar; glade_command_delete (&list); } 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)); /* reload buttons and sensitivity and stuff... */ glade_editable_load (GLADE_EDITABLE (window_editor), gwidget); }