[gthumb] disconnect from the previous test before setting the new test
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] disconnect from the previous test before setting the new test
- Date: Thu, 2 Aug 2012 12:34:19 +0000 (UTC)
commit 9943065def5183f3979c494235faaa8638f9978c
Author: Paolo Bacchilega <paobac src gnome org>
Date: Wed May 9 18:27:49 2012 +0200
disconnect from the previous test before setting the new test
gthumb/gth-filterbar.c | 36 ++++++++++++++++++------------------
1 files changed, 18 insertions(+), 18 deletions(-)
---
diff --git a/gthumb/gth-filterbar.c b/gthumb/gth-filterbar.c
index e7297d9..a0eabab 100644
--- a/gthumb/gth-filterbar.c
+++ b/gthumb/gth-filterbar.c
@@ -62,6 +62,7 @@ struct _GthFilterbarPrivate
GtkWidget *control;
GtkTreeIter current_iter;
gulong filters_changed_id;
+ gulong test_changed_id;
};
@@ -80,8 +81,10 @@ gth_filterbar_finalize (GObject *object)
if (filterbar->priv != NULL) {
g_signal_handler_disconnect (gth_main_get_default_monitor (), filterbar->priv->filters_changed_id);
- if (filterbar->priv->test != NULL)
+ if (filterbar->priv->test != NULL) {
+ g_signal_handler_disconnect (filterbar->priv->test, filterbar->priv->test_changed_id);
g_object_unref (filterbar->priv->test);
+ }
g_free (filterbar->priv);
filterbar->priv = NULL;
}
@@ -174,27 +177,35 @@ _gth_filterbar_set_test_control (GthFilterbar *filterbar,
static void
+test_changed_cb (GthTest *test,
+ GthFilterbar *filterbar)
+{
+ gth_filterbar_changed (filterbar);
+}
+
+
+static void
_gth_filterbar_set_test (GthFilterbar *filterbar,
GthTest *test)
{
if (filterbar->priv->test != NULL) {
+ if (filterbar->priv->test_changed_id != 0)
+ g_signal_handler_disconnect (filterbar->priv->test, filterbar->priv->test_changed_id);
g_object_unref (filterbar->priv->test);
filterbar->priv->test = NULL;
}
if (test != NULL) {
filterbar->priv->test = g_object_ref (test);
+ filterbar->priv->test_changed_id = g_signal_connect (test,
+ "changed",
+ G_CALLBACK (test_changed_cb),
+ filterbar);
_gth_filterbar_set_test_control (filterbar, gth_test_create_control (filterbar->priv->test));
}
else
_gth_filterbar_set_test_control (filterbar, NULL);
-}
-
-static void
-test_changed_cb (GthTest *test,
- GthFilterbar *filterbar)
-{
gth_filterbar_changed (filterbar);
}
@@ -216,12 +227,6 @@ test_combo_box_changed_cb (GtkComboBox *scope_combo_box,
FILTER_COLUMN, &test,
-1);
- if (test != NULL)
- g_signal_connect (test,
- "changed",
- G_CALLBACK (test_changed_cb),
- filterbar);
-
switch (item_type) {
case ITEM_TYPE_FILTER:
_gth_filterbar_set_test (filterbar, test);
@@ -549,11 +554,6 @@ gth_filterbar_load_filter (GthFilterbar *filterbar,
filterbar->priv->current_iter = iter;
_gth_filterbar_set_test (GTH_FILTERBAR (filterbar), test);
-
- g_signal_connect (test,
- "changed",
- G_CALLBACK (test_changed_cb),
- filterbar);
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]