1
From d3c158d6c9a6ee40fae660ab56b7d8a40074108c Mon Sep 17 00:00:00 2001
2
From: Cosimo Cecchi <cosimoc@gnome.org>
3
Date: Wed, 28 Sep 2011 19:03:57 +0000
4
Subject: window: make sure to disconnect GSettings signals when finalizing
6
The GSettings object survive the window, so handlers connected to its
7
signals should be disconnected when the window is finalized.
9
https://bugzilla.gnome.org/show_bug.cgi?id=655070
11
diff --git a/src/nautilus-window-menus.c b/src/nautilus-window-menus.c
12
index 6ad70f3..792e46a 100644
13
--- a/src/nautilus-window-menus.c
14
+++ b/src/nautilus-window-menus.c
15
@@ -1303,6 +1303,20 @@ nautilus_window_initialize_menus (NautilusWindow *window)
16
nautilus_window_initialize_go_menu (window);
20
+nautilus_window_finalize_menus (NautilusWindow *window)
22
+ NautilusTrashMonitor *monitor;
24
+ monitor = nautilus_trash_monitor_get ();
26
+ g_signal_handlers_disconnect_by_func (monitor,
27
+ trash_state_changed_cb, window);
29
+ g_signal_handlers_disconnect_by_func (nautilus_preferences,
30
+ show_hidden_files_preference_callback, window);
34
get_extension_menus (NautilusWindow *window)
36
@@ -1433,15 +1447,3 @@ nautilus_window_load_extension_menus (NautilusWindow *window)
42
-nautilus_window_remove_trash_monitor_callback (NautilusWindow *window)
44
- NautilusTrashMonitor *monitor;
46
- monitor = nautilus_trash_monitor_get ();
48
- g_signal_handlers_disconnect_by_func (monitor,
49
- trash_state_changed_cb, window);
52
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
53
index 2c44871..539aa04 100644
54
--- a/src/nautilus-window-private.h
55
+++ b/src/nautilus-window-private.h
56
@@ -127,7 +127,6 @@ typedef void (*NautilusBookmarkFailedCallback) (NautilusWindow *window,
58
void nautilus_window_load_view_as_menus (NautilusWindow *window);
59
void nautilus_window_load_extension_menus (NautilusWindow *window);
60
-void nautilus_window_initialize_menus (NautilusWindow *window);
61
void nautilus_window_remove_trash_monitor_callback (NautilusWindow *window);
62
NautilusWindowPane *nautilus_window_get_next_pane (NautilusWindow *window);
63
void nautilus_menus_append_bookmark_to_menu (NautilusWindow *window,
64
@@ -170,6 +169,7 @@ void nautilus_window_sync_zoom_widgets (NautilusWindow *window);
65
GtkActionGroup *nautilus_window_create_toolbar_action_group (NautilusWindow *window);
66
void nautilus_window_initialize_actions (NautilusWindow *window);
67
void nautilus_window_initialize_menus (NautilusWindow *window);
68
+void nautilus_window_finalize_menus (NautilusWindow *window);
69
void nautilus_window_remove_bookmarks_menu_callback (NautilusWindow *window);
71
void nautilus_window_remove_bookmarks_menu_items (NautilusWindow *window);
72
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
73
index 1d86e26..b2aef34 100644
74
--- a/src/nautilus-window.c
75
+++ b/src/nautilus-window.c
76
@@ -738,7 +738,7 @@ nautilus_window_finalize (GObject *object)
77
g_free (window->details->sidebar_id);
78
g_clear_object (&window->details->nav_state);
80
- nautilus_window_remove_trash_monitor_callback (window);
81
+ nautilus_window_finalize_menus (window);
82
free_stored_viewers (window);
84
if (window->details->bookmark_list != NULL) {