diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2011-09-28 15:03:57 -0400 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2011-10-17 09:48:31 -0400 |
commit | 7428762ea6601abba086fcc5e57f443b2e2b40b5 (patch) | |
tree | dafc8b8909728a09180569263338d86f3b715b9c | |
parent | 3532c05fb5a2bafadc6de7a8072bcdd4d674ca23 (diff) | |
download | nautilus-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.c | 26 | ||||
-rw-r--r-- | src/nautilus-window-private.h | 2 | ||||
-rw-r--r-- | src/nautilus-window.c | 2 |
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) { |