summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2011-09-28 15:03:57 -0400
committerCosimo Cecchi <cosimoc@gnome.org>2011-10-17 09:48:31 -0400
commit7428762ea6601abba086fcc5e57f443b2e2b40b5 (patch)
treedafc8b8909728a09180569263338d86f3b715b9c
parent3532c05fb5a2bafadc6de7a8072bcdd4d674ca23 (diff)
downloadnautilus-7428762ea6601abba086fcc5e57f443b2e2b40b5.tar.gz
window: make sure to disconnect GSettings signals when finalizing
The GSettings object survive the window, so handlers connected to its signals should be disconnected when the window is finalized. https://bugzilla.gnome.org/show_bug.cgi?id=655070
-rw-r--r--src/nautilus-window-menus.c26
-rw-r--r--src/nautilus-window-private.h2
-rw-r--r--src/nautilus-window.c2
3 files changed, 16 insertions, 14 deletions
diff --git a/src/nautilus-window-menus.c b/src/nautilus-window-menus.c
index 6ad70f348..792e46a31 100644
--- a/src/nautilus-window-menus.c
+++ b/src/nautilus-window-menus.c
@@ -1303,6 +1303,20 @@ nautilus_window_initialize_menus (NautilusWindow *window)
nautilus_window_initialize_go_menu (window);
}
+void
+nautilus_window_finalize_menus (NautilusWindow *window)
+{
+ NautilusTrashMonitor *monitor;
+
+ monitor = nautilus_trash_monitor_get ();
+
+ g_signal_handlers_disconnect_by_func (monitor,
+ trash_state_changed_cb, window);
+
+ g_signal_handlers_disconnect_by_func (nautilus_preferences,
+ show_hidden_files_preference_callback, window);
+}
+
static GList *
get_extension_menus (NautilusWindow *window)
{
@@ -1433,15 +1447,3 @@ nautilus_window_load_extension_menus (NautilusWindow *window)
g_list_free (items);
}
}
-
-void
-nautilus_window_remove_trash_monitor_callback (NautilusWindow *window)
-{
- NautilusTrashMonitor *monitor;
-
- monitor = nautilus_trash_monitor_get ();
-
- g_signal_handlers_disconnect_by_func (monitor,
- trash_state_changed_cb, window);
-}
-
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
index 2c4487138..539aa0486 100644
--- a/src/nautilus-window-private.h
+++ b/src/nautilus-window-private.h
@@ -127,7 +127,6 @@ typedef void (*NautilusBookmarkFailedCallback) (NautilusWindow *window,
void nautilus_window_load_view_as_menus (NautilusWindow *window);
void nautilus_window_load_extension_menus (NautilusWindow *window);
-void nautilus_window_initialize_menus (NautilusWindow *window);
void nautilus_window_remove_trash_monitor_callback (NautilusWindow *window);
NautilusWindowPane *nautilus_window_get_next_pane (NautilusWindow *window);
void nautilus_menus_append_bookmark_to_menu (NautilusWindow *window,
@@ -170,6 +169,7 @@ void nautilus_window_sync_zoom_widgets (NautilusWindow *window);
GtkActionGroup *nautilus_window_create_toolbar_action_group (NautilusWindow *window);
void nautilus_window_initialize_actions (NautilusWindow *window);
void nautilus_window_initialize_menus (NautilusWindow *window);
+void nautilus_window_finalize_menus (NautilusWindow *window);
void nautilus_window_remove_bookmarks_menu_callback (NautilusWindow *window);
void nautilus_window_remove_bookmarks_menu_items (NautilusWindow *window);
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 1d86e26b2..b2aef3459 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -738,7 +738,7 @@ nautilus_window_finalize (GObject *object)
g_free (window->details->sidebar_id);
g_clear_object (&window->details->nav_state);
- nautilus_window_remove_trash_monitor_callback (window);
+ nautilus_window_finalize_menus (window);
free_stored_viewers (window);
if (window->details->bookmark_list != NULL) {