[evolution/gnome-3-0] Bug 652634 - Runtime warning on second search dialog
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/gnome-3-0] Bug 652634 - Runtime warning on second search dialog
- Date: Sun, 10 Jul 2011 23:09:41 +0000 (UTC)
commit acdb00e88a2c7410d925ba4ade2cf5dca60c38ef
Author: Matthew Barnes <mbarnes redhat com>
Date: Sun Jul 10 19:05:41 2011 -0400
Bug 652634 - Runtime warning on second search dialog
A signal handler connected to an EFilterRule was passing a GtkDialog
instance as the closure. Eventually, the GtkDialog is destroyed but
we never disconnected the signal handler.
(cherry picked from commit d24bf99f46989bba098e3f4a19c3d0c7f706bb8a)
shell/e-shell-content.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/shell/e-shell-content.c b/shell/e-shell-content.c
index 91a6d1f..5c7e8b5 100644
--- a/shell/e-shell-content.c
+++ b/shell/e-shell-content.c
@@ -610,6 +610,7 @@ e_shell_content_run_advanced_search_dialog (EShellContent *shell_content)
EFilterRule *rule;
ERuleContext *context;
const gchar *user_filename;
+ gulong handler_id;
gint response;
EAlert *alert = NULL;
@@ -644,7 +645,7 @@ e_shell_content_run_advanced_search_dialog (EShellContent *shell_content)
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
gtk_box_pack_start (GTK_BOX (content_area), widget, TRUE, TRUE, 0);
- g_signal_connect_swapped (
+ handler_id = g_signal_connect_swapped (
rule, "changed", G_CALLBACK (
shell_content_dialog_rule_changed), dialog);
@@ -673,6 +674,8 @@ run:
}
exit:
+ g_signal_handler_disconnect (rule, handler_id);
+
g_object_unref (rule);
gtk_widget_destroy (dialog);
}
@@ -713,6 +716,7 @@ e_shell_content_run_save_search_dialog (EShellContent *shell_content)
ERuleContext *context;
const gchar *user_filename;
gchar *search_name;
+ gulong handler_id;
gint response;
EAlert *alert = NULL;
@@ -747,7 +751,7 @@ e_shell_content_run_save_search_dialog (EShellContent *shell_content)
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
gtk_box_pack_start (GTK_BOX (content_area), widget, TRUE, TRUE, 0);
- g_signal_connect_swapped (
+ handler_id = g_signal_connect_swapped (
rule, "changed", G_CALLBACK (
shell_content_dialog_rule_changed), dialog);
@@ -773,6 +777,8 @@ run:
e_rule_context_save (context, user_filename);
exit:
+ g_signal_handler_disconnect (rule, handler_id);
+
g_object_unref (rule);
gtk_widget_destroy (dialog);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]