[nautilus] Remove a pile of hacks used to initialize bookmarks.
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] Remove a pile of hacks used to initialize bookmarks.
- Date: Thu, 6 May 2010 16:42:09 +0000 (UTC)
commit 1756fb0b77aebae201ffb1ee1641a9118ca941d9
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Thu May 6 18:07:56 2010 +0200
Remove a pile of hacks used to initialize bookmarks.
- Make nautilus_window_constructed a real GObject implementation and
move bookmark initialization code there.
- Don't replicate a singleton logic in nautilus-window-bookmarks now
that NautilusBookmarkList is a real singleton
- Remove get_bookmark_list() method from NautilusWindowInfo, as it's
not any useful anymore.
libnautilus-private/nautilus-window-info.c | 9 ---
libnautilus-private/nautilus-window-info.h | 3 -
src/nautilus-application.c | 2 -
src/nautilus-window-bookmarks.c | 107 ++++++++--------------------
src/nautilus-window-bookmarks.h | 2 -
src/nautilus-window-menus.c | 1 -
src/nautilus-window-private.h | 3 +-
src/nautilus-window.c | 23 +++---
8 files changed, 42 insertions(+), 108 deletions(-)
---
diff --git a/libnautilus-private/nautilus-window-info.c b/libnautilus-private/nautilus-window-info.c
index 7639775..0b5ba2e 100644
--- a/libnautilus-private/nautilus-window-info.c
+++ b/libnautilus-private/nautilus-window-info.c
@@ -202,15 +202,6 @@ nautilus_window_info_get_history (NautilusWindowInfo *window)
return (* NAUTILUS_WINDOW_INFO_GET_IFACE (window)->get_history) (window);
}
-NautilusBookmarkList *
-nautilus_window_info_get_bookmark_list (NautilusWindowInfo *window)
-{
- g_return_val_if_fail (NAUTILUS_IS_WINDOW_INFO (window), NULL);
-
- return (* NAUTILUS_WINDOW_INFO_GET_IFACE (window)->get_bookmark_list) (window);
-}
-
-
char *
nautilus_window_info_get_current_location (NautilusWindowInfo *window)
{
diff --git a/libnautilus-private/nautilus-window-info.h b/libnautilus-private/nautilus-window-info.h
index 1c71d58..737094a 100644
--- a/libnautilus-private/nautilus-window-info.h
+++ b/libnautilus-private/nautilus-window-info.h
@@ -127,8 +127,6 @@ struct _NautilusWindowInfoIface
const char *status);
char * (* get_title) (NautilusWindowInfo *window);
GList *(* get_history) (NautilusWindowInfo *window);
- NautilusBookmarkList *
- (* get_bookmark_list) (NautilusWindowInfo *window);
NautilusWindowType
(* get_window_type) (NautilusWindowInfo *window);
NautilusWindowShowHiddenFilesMode
@@ -167,7 +165,6 @@ void nautilus_window_info_push_status
NautilusWindowType nautilus_window_info_get_window_type (NautilusWindowInfo *window);
char * nautilus_window_info_get_title (NautilusWindowInfo *window);
GList * nautilus_window_info_get_history (NautilusWindowInfo *window);
-NautilusBookmarkList * nautilus_window_info_get_bookmark_list (NautilusWindowInfo *window);
char * nautilus_window_info_get_current_location (NautilusWindowInfo *window);
int nautilus_window_info_get_selection_count (NautilusWindowInfo *window);
GList * nautilus_window_info_get_selection (NautilusWindowInfo *window);
diff --git a/src/nautilus-application.c b/src/nautilus-application.c
index 90ba959..d9556e8 100644
--- a/src/nautilus-application.c
+++ b/src/nautilus-application.c
@@ -1267,8 +1267,6 @@ create_window (NautilusApplication *application,
"app", application,
"screen", screen,
NULL));
- /* Must be called after construction finished */
- nautilus_window_constructed (window);
if (startup_id) {
gtk_window_set_startup_id (GTK_WINDOW (window), startup_id);
diff --git a/src/nautilus-window-bookmarks.c b/src/nautilus-window-bookmarks.c
index e1b6574..0d25e35 100644
--- a/src/nautilus-window-bookmarks.c
+++ b/src/nautilus-window-bookmarks.c
@@ -43,39 +43,23 @@
#define MENU_ITEM_MAX_WIDTH_CHARS 32
static GtkWindow *bookmarks_window = NULL;
-static NautilusBookmarkList *bookmarks = NULL;
-
-static void schedule_refresh_bookmarks_menu (NautilusWindow *window);
-
-static void
-free_bookmark_list (void)
-{
- g_object_unref (bookmarks);
-}
-
-NautilusBookmarkList *
-nautilus_get_bookmark_list (void)
-{
- if (bookmarks == NULL) {
- bookmarks = nautilus_bookmark_list_new ();
- eel_debug_call_at_shutdown (free_bookmark_list);
- }
-
- return bookmarks;
-}
+static void refresh_bookmarks_menu (NautilusWindow *window);
static void
remove_bookmarks_for_uri_if_yes (GtkDialog *dialog, int response, gpointer callback_data)
{
const char *uri;
+ NautilusWindow *window;
g_assert (GTK_IS_DIALOG (dialog));
g_assert (callback_data != NULL);
+ window = callback_data;
+
if (response == GTK_RESPONSE_YES) {
- uri = callback_data;
- nautilus_bookmark_list_delete_items_with_uri (nautilus_get_bookmark_list (), uri);
+ uri = g_object_get_data (G_OBJECT (dialog), "uri");
+ nautilus_bookmark_list_delete_items_with_uri (window->details->bookmark_list, uri);
}
gtk_object_destroy (GTK_OBJECT (dialog));
@@ -103,12 +87,9 @@ show_bogus_bookmark_window (NautilusWindow *window,
GTK_STOCK_CANCEL,
GTK_WINDOW (window));
- g_signal_connect_data (dialog,
- "response",
- G_CALLBACK (remove_bookmarks_for_uri_if_yes),
- g_file_get_uri (location),
- (GClosureNotify)g_free,
- 0);
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (remove_bookmarks_for_uri_if_yes), window);
+ g_object_set_data_full (G_OBJECT (dialog), "uri", g_file_get_uri (location), g_free);
gtk_dialog_set_default_response (dialog, GTK_RESPONSE_NO);
@@ -118,10 +99,15 @@ show_bogus_bookmark_window (NautilusWindow *window,
}
static GtkWindow *
-get_or_create_bookmarks_window (GObject *undo_manager_source)
+get_or_create_bookmarks_window (NautilusWindow *window)
{
+ GObject *undo_manager_source;
+
+ undo_manager_source = G_OBJECT (window);
+
if (bookmarks_window == NULL) {
- bookmarks_window = create_bookmarks_window (nautilus_get_bookmark_list(), undo_manager_source);
+ bookmarks_window = create_bookmarks_window (window->details->bookmark_list,
+ undo_manager_source);
} else {
edit_bookmarks_dialog_set_signals (undo_manager_source);
}
@@ -155,14 +141,16 @@ nautilus_window_add_bookmark_for_current_location (NautilusWindow *window)
{
NautilusBookmark *bookmark;
NautilusWindowSlot *slot;
+ NautilusBookmarkList *list;
g_assert (NAUTILUS_IS_WINDOW (window));
slot = window->details->active_pane->active_slot;
bookmark = slot->current_location_bookmark;
+ list = window->details->bookmark_list;
- if (!nautilus_bookmark_list_contains (nautilus_get_bookmark_list (), bookmark)) {
- nautilus_bookmark_list_append (nautilus_get_bookmark_list (), bookmark);
+ if (!nautilus_bookmark_list_contains (list, bookmark)) {
+ nautilus_bookmark_list_append (list, bookmark);
}
}
@@ -171,22 +159,13 @@ nautilus_window_edit_bookmarks (NautilusWindow *window)
{
GtkWindow *dialog;
- dialog = get_or_create_bookmarks_window (G_OBJECT (window));
+ dialog = get_or_create_bookmarks_window (window);
gtk_window_set_screen (
dialog, gtk_window_get_screen (GTK_WINDOW (window)));
gtk_window_present (dialog);
}
-void
-nautilus_window_remove_bookmarks_menu_callback (NautilusWindow *window)
-{
- if (window->details->refresh_bookmarks_menu_idle_id != 0) {
- g_source_remove (window->details->refresh_bookmarks_menu_idle_id);
- window->details->refresh_bookmarks_menu_idle_id = 0;
- }
-}
-
static void
remove_bookmarks_menu_items (NautilusWindow *window)
{
@@ -236,7 +215,11 @@ update_bookmarks (NautilusWindow *window)
g_assert (window->details->bookmarks_merge_id == 0);
g_assert (window->details->bookmarks_action_group == NULL);
- bookmarks = nautilus_get_bookmark_list ();
+ if (window->details->bookmark_list == NULL) {
+ window->details->bookmark_list = nautilus_bookmark_list_new ();
+ }
+
+ bookmarks = window->details->bookmark_list;
ui_manager = nautilus_window_get_ui_manager (NAUTILUS_WINDOW (window));
@@ -267,7 +250,7 @@ update_bookmarks (NautilusWindow *window)
index,
window->details->bookmarks_action_group,
window->details->bookmarks_merge_id,
- G_CALLBACK (schedule_refresh_bookmarks_menu),
+ G_CALLBACK (refresh_bookmarks_menu),
show_bogus_bookmark_window);
}
}
@@ -277,37 +260,10 @@ refresh_bookmarks_menu (NautilusWindow *window)
{
g_assert (NAUTILUS_IS_WINDOW (window));
- /* Unregister any pending call to this function. */
- nautilus_window_remove_bookmarks_menu_callback (window);
-
remove_bookmarks_menu_items (window);
update_bookmarks (window);
}
-
-static gboolean
-refresh_bookmarks_menu_idle_callback (gpointer data)
-{
- g_assert (NAUTILUS_IS_WINDOW (data));
-
- refresh_bookmarks_menu (NAUTILUS_WINDOW (data));
-
- /* Don't call this again (unless rescheduled) */
- return FALSE;
-}
-
-static void
-schedule_refresh_bookmarks_menu (NautilusWindow *window)
-{
- g_assert (NAUTILUS_IS_WINDOW (window));
-
- if (window->details->refresh_bookmarks_menu_idle_id == 0) {
- window->details->refresh_bookmarks_menu_idle_id
- = g_idle_add (refresh_bookmarks_menu_idle_callback,
- window);
- }
-}
-
/**
* nautilus_window_initialize_bookmarks_menu
*
@@ -319,13 +275,10 @@ nautilus_window_initialize_bookmarks_menu (NautilusWindow *window)
{
g_assert (NAUTILUS_IS_WINDOW (window));
- /* Construct the initial set of bookmarks. */
- /* We do this in an idle, since this is called in the constructor
- * where we don't know the real type of the window */
- schedule_refresh_bookmarks_menu (window);
+ refresh_bookmarks_menu (window);
/* Recreate dynamic part of menu if bookmark list changes */
- g_signal_connect_object (nautilus_get_bookmark_list (), "contents_changed",
- G_CALLBACK (schedule_refresh_bookmarks_menu),
+ g_signal_connect_object (window->details->bookmark_list, "contents_changed",
+ G_CALLBACK (refresh_bookmarks_menu),
window, G_CONNECT_SWAPPED);
}
diff --git a/src/nautilus-window-bookmarks.h b/src/nautilus-window-bookmarks.h
index 0fbb604..ba051c1 100644
--- a/src/nautilus-window-bookmarks.h
+++ b/src/nautilus-window-bookmarks.h
@@ -29,11 +29,9 @@
#include <nautilus-window.h>
#include "nautilus-bookmark-list.h"
-NautilusBookmarkList *nautilus_get_bookmark_list (void);
void nautilus_bookmarks_exiting (void);
void nautilus_window_add_bookmark_for_current_location (NautilusWindow *window);
void nautilus_window_edit_bookmarks (NautilusWindow *window);
void nautilus_window_initialize_bookmarks_menu (NautilusWindow *window);
-void nautilus_window_remove_bookmarks_menu_callback (NautilusWindow *window);
#endif
diff --git a/src/nautilus-window-menus.c b/src/nautilus-window-menus.c
index 372c396..1cdab99 100644
--- a/src/nautilus-window-menus.c
+++ b/src/nautilus-window-menus.c
@@ -938,7 +938,6 @@ nautilus_window_initialize_menus (NautilusWindow *window)
gtk_ui_manager_add_ui_from_string (ui_manager, ui, -1, NULL);
nautilus_window_initialize_trash_icon_monitor (window);
- nautilus_window_initialize_bookmarks_menu (window);
}
static GList *
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
index d9ed0e4..b796b07 100644
--- a/src/nautilus-window-private.h
+++ b/src/nautilus-window-private.h
@@ -54,8 +54,8 @@ struct NautilusWindowDetails
GtkActionGroup *extensions_menu_action_group;
GtkActionGroup *bookmarks_action_group;
- guint refresh_bookmarks_menu_idle_id;
guint bookmarks_merge_id;
+ NautilusBookmarkList *bookmark_list;
NautilusWindowShowHiddenFilesMode show_hidden_files_mode;
@@ -212,7 +212,6 @@ gboolean nautilus_add_to_history_list_no_notify (GFile
GIcon *icon);
GList * nautilus_get_history_list (void);
void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data);
-void nautilus_window_constructed (NautilusWindow *window);
/* sync window GUI with current slot. Used when changing slots,
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 854fcf2..2bc2c73 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -515,11 +515,14 @@ nautilus_window_set_initial_window_geometry (NautilusWindow *window)
max_height_for_screen));
}
-void
-nautilus_window_constructed (NautilusWindow *window)
+static void
+nautilus_window_constructed (GObject *self)
{
- g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+ NautilusWindow *window;
+
+ window = NAUTILUS_WINDOW (self);
+ nautilus_window_initialize_bookmarks_menu (window);
nautilus_window_set_initial_window_geometry (window);
nautilus_undo_manager_attach (window->application->undo_manager, G_OBJECT (window));
}
@@ -592,11 +595,13 @@ nautilus_window_finalize (GObject *object)
window = NAUTILUS_WINDOW (object);
- nautilus_window_remove_bookmarks_menu_callback (window);
nautilus_window_remove_trash_monitor_callback (window);
-
free_stored_viewers (window);
+ if (window->details->bookmark_list != NULL) {
+ g_object_unref (window->details->bookmark_list);
+ }
+
/* nautilus_window_close() should have run */
g_assert (window->details->panes == NULL);
@@ -1853,12 +1858,6 @@ nautilus_window_set_initiated_unmount (NautilusWindowInfo *window,
window->details->initiated_unmount = initiated_unmount;
}
-static NautilusBookmarkList *
-nautilus_window_get_bookmark_list (NautilusWindowInfo *window)
-{
- return nautilus_get_bookmark_list ();
-}
-
static char *
nautilus_window_get_cached_title (NautilusWindow *window)
{
@@ -1937,7 +1936,6 @@ nautilus_window_info_iface_init (NautilusWindowInfoIface *iface)
iface->get_window_type = nautilus_window_get_window_type;
iface->get_title = nautilus_window_get_cached_title;
iface->get_history = nautilus_window_get_history;
- iface->get_bookmark_list = nautilus_window_get_bookmark_list;
iface->get_current_location = nautilus_window_get_location_uri;
iface->get_ui_manager = nautilus_window_get_ui_manager;
iface->get_selection_count = nautilus_window_get_selection_count;
@@ -1957,6 +1955,7 @@ nautilus_window_class_init (NautilusWindowClass *class)
G_OBJECT_CLASS (class)->finalize = nautilus_window_finalize;
G_OBJECT_CLASS (class)->constructor = nautilus_window_constructor;
+ G_OBJECT_CLASS (class)->constructed = nautilus_window_constructed;
G_OBJECT_CLASS (class)->get_property = nautilus_window_get_property;
G_OBJECT_CLASS (class)->set_property = nautilus_window_set_property;
GTK_OBJECT_CLASS (class)->destroy = nautilus_window_destroy;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]