[nautilus/gnome-3-2] window: make sure to disconnect GSettings signals when finalizing



commit 7428762ea6601abba086fcc5e57f443b2e2b40b5
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Wed Sep 28 15:03:57 2011 -0400

    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

 src/nautilus-window-menus.c   |   26 ++++++++++++++------------
 src/nautilus-window-private.h |    2 +-
 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 6ad70f3..792e46a 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 2c44871..539aa04 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 1d86e26..b2aef34 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) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]