diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-11-20 22:58:06 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-11-22 22:41:48 -0500 |
commit | a661ce4d067f70245ed56049e4ef1be306f8387b (patch) | |
tree | 511435ef79036cc935315aeecfef2b85301dfa2b /gtk/gtkshortcutswindow.c | |
parent | 520da80bd01c35327d54e859671d1026eec0eeaa (diff) | |
download | gtk+-a661ce4d067f70245ed56049e4ef1be306f8387b.tar.gz |
shortcuts: Complete the container implementations
Various problems with the container implementations in
GtkShortcutsWindow, Section and Group were showing up
in glade.
Diffstat (limited to 'gtk/gtkshortcutswindow.c')
-rw-r--r-- | gtk/gtkshortcutswindow.c | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/gtk/gtkshortcutswindow.c b/gtk/gtkshortcutswindow.c index 606dbf2572..2d3e5c35b0 100644 --- a/gtk/gtkshortcutswindow.c +++ b/gtk/gtkshortcutswindow.c @@ -386,8 +386,12 @@ gtk_shortcuts_window_forall (GtkContainer *container, if (include_internal) { - callback (GTK_WIDGET (priv->header_bar), callback_data); - callback (GTK_WIDGET (priv->main_box), callback_data); + if (priv->header_bar) + callback (GTK_WIDGET (priv->header_bar), callback_data); + if (priv->main_box) + callback (GTK_WIDGET (priv->main_box), callback_data); + if (priv->popover) + callback (GTK_WIDGET (priv->popover), callback_data); } if (priv->stack) @@ -437,12 +441,13 @@ gtk_shortcuts_window_set_section_name (GtkShortcutsWindow *self, const gchar *section_name) { GtkShortcutsWindowPrivate *priv = gtk_shortcuts_window_get_instance_private (self); - GtkWidget *section; + GtkWidget *section = NULL; g_free (priv->initial_section); priv->initial_section = g_strdup (section_name); - section = gtk_stack_get_child_by_name (priv->stack, section_name); + if (!section_name) + section = gtk_stack_get_child_by_name (priv->stack, section_name); if (section) gtk_stack_set_visible_child (priv->stack, section); } @@ -595,6 +600,21 @@ gtk_shortcuts_window_finalize (GObject *object) } static void +gtk_shortcuts_window_dispose (GObject *object) +{ + GtkShortcutsWindow *self = (GtkShortcutsWindow *)object; + GtkShortcutsWindowPrivate *priv = gtk_shortcuts_window_get_instance_private (self); + + g_signal_handlers_disconnect_by_func (priv->stack, G_CALLBACK (update_title_stack), self); + + priv->header_bar = NULL; + priv->popover = NULL; + priv->main_box = NULL; + + G_OBJECT_CLASS (gtk_shortcuts_window_parent_class)->dispose (object); +} + +static void gtk_shortcuts_window_get_property (GObject *object, guint prop_id, GValue *value, @@ -682,6 +702,7 @@ gtk_shortcuts_window_class_init (GtkShortcutsWindowClass *klass) object_class->finalize = gtk_shortcuts_window_finalize; object_class->get_property = gtk_shortcuts_window_get_property; object_class->set_property = gtk_shortcuts_window_set_property; + object_class->dispose = gtk_shortcuts_window_dispose; widget_class->unmap = gtk_shortcuts_window_unmap; container_class->add = gtk_shortcuts_window_add; @@ -917,9 +938,6 @@ gtk_shortcuts_window_init (GtkShortcutsWindow *self) self, G_CONNECT_SWAPPED); - g_signal_connect_object (priv->stack, "notify::visible-child", - G_CALLBACK (update_title_stack), self, G_CONNECT_SWAPPED); - scroller = g_object_new (GTK_TYPE_SCROLLED_WINDOW, "visible", TRUE, NULL); @@ -983,4 +1001,8 @@ gtk_shortcuts_window_init (GtkShortcutsWindow *self) gtk_grid_attach (GTK_GRID (empty), label, 0, 2, 1, 1); gtk_stack_add_named (priv->stack, empty, "no-search-results"); + + g_signal_connect_object (priv->stack, "notify::visible-child", + G_CALLBACK (update_title_stack), self, G_CONNECT_SWAPPED); + } |