summaryrefslogtreecommitdiff
path: root/examples/application8
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2013-07-24 01:10:08 -0400
committerMatthias Clasen <mclasen@redhat.com>2013-07-24 07:31:05 -0400
commit7fe3455c9a45b438b947eb0c15c6b8dceb26bc63 (patch)
tree10fb87c18235d403cbe7889349d799f851dd45bb /examples/application8
parentb73027aa041235392da03f77832dade3a7c26dc4 (diff)
downloadgtk+-7fe3455c9a45b438b947eb0c15c6b8dceb26bc63.tar.gz
Getting started: Drop ugly signal handler cleanup
I disconnected signals in dispose() to avoid a visible-tab change notification during destruction, but this is clunky. Instead, make the notify::visible-tab signal handler bail out early when called during destruction.
Diffstat (limited to 'examples/application8')
-rw-r--r--examples/application8/exampleappwin.c36
1 files changed, 9 insertions, 27 deletions
diff --git a/examples/application8/exampleappwin.c b/examples/application8/exampleappwin.c
index 7f9e79d3e0..d3f1cc5f8c 100644
--- a/examples/application8/exampleappwin.c
+++ b/examples/application8/exampleappwin.c
@@ -24,9 +24,6 @@ struct _ExampleAppWindowPrivate
GtkWidget *gears;
GtkWidget *sidebar;
GtkWidget *words;
- gulong text_changed_handler;
- gulong tab_changed_handler;
- gulong words_changed_handler;
};
G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW);
@@ -140,6 +137,9 @@ visible_child_changed (GObject *stack,
{
ExampleAppWindowPrivate *priv;
+ if (gtk_widget_in_destruction (GTK_WIDGET (win)))
+ return;
+
priv = example_app_window_get_instance_private (win);
gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->searchbar), FALSE);
update_words (win);
@@ -177,12 +177,12 @@ example_app_window_init (ExampleAppWindow *win)
priv->searchbar, "search-mode-enabled",
G_BINDING_BIDIRECTIONAL);
- priv->text_changed_handler = g_signal_connect (priv->searchentry, "changed",
- G_CALLBACK (search_text_changed), win);
- priv->tab_changed_handler = g_signal_connect (priv->stack, "notify::visible-child",
- G_CALLBACK (visible_child_changed), win);
- priv->words_changed_handler = g_signal_connect (priv->sidebar, "notify::reveal-child",
- G_CALLBACK (words_changed), win);
+ g_signal_connect (priv->searchentry, "changed",
+ G_CALLBACK (search_text_changed), win);
+ g_signal_connect (priv->stack, "notify::visible-child",
+ G_CALLBACK (visible_child_changed), win);
+ g_signal_connect (priv->sidebar, "notify::reveal-child",
+ G_CALLBACK (words_changed), win);
builder = gtk_builder_new_from_resource ("/org/gtk/exampleapp/gears-menu.ui");
menu = G_MENU_MODEL (gtk_builder_get_object (builder, "menu"));
@@ -203,24 +203,6 @@ example_app_window_dispose (GObject *object)
win = EXAMPLE_APP_WINDOW (object);
priv = example_app_window_get_instance_private (win);
- if (priv->text_changed_handler != 0)
- {
- g_signal_handler_disconnect (priv->searchentry, priv->text_changed_handler);
- priv->text_changed_handler = 0;
- }
-
- if (priv->tab_changed_handler != 0)
- {
- g_signal_handler_disconnect (priv->stack, priv->tab_changed_handler);
- priv->tab_changed_handler = 0;
- }
-
- if (priv->words_changed_handler != 0)
- {
- g_signal_handler_disconnect (priv->sidebar, priv->words_changed_handler);
- priv->words_changed_handler = 0;
- }
-
g_clear_object (&priv->settings);
G_OBJECT_CLASS (example_app_window_parent_class)->dispose (object);