[nautilus] all: use new NautilusBookmark API
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] all: use new NautilusBookmark API
- Date: Wed, 12 Jan 2011 18:36:05 +0000 (UTC)
commit d4df96c1e5c6bde62fd55dab1cbaae8a57f2b92e
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Wed Jan 12 19:31:57 2011 +0100
all: use new NautilusBookmark API
src/nautilus-bookmark-list.c | 49 +++++++++++++++++++-----------------
src/nautilus-bookmark-list.h | 2 +-
src/nautilus-bookmarks-window.c | 11 ++++---
src/nautilus-places-sidebar.c | 18 +++++--------
src/nautilus-window-bookmarks.c | 2 +-
src/nautilus-window-manage-views.c | 5 +---
src/nautilus-window-menus.c | 20 ++++++++------
src/nautilus-window-slot.c | 1 -
8 files changed, 53 insertions(+), 55 deletions(-)
---
diff --git a/src/nautilus-bookmark-list.c b/src/nautilus-bookmark-list.c
index 37f0f32..732a697 100644
--- a/src/nautilus-bookmark-list.c
+++ b/src/nautilus-bookmark-list.c
@@ -40,7 +40,7 @@
#define SAVE_JOB 2
enum {
- CONTENTS_CHANGED,
+ CHANGED,
LAST_SIGNAL
};
@@ -60,9 +60,7 @@ new_bookmark_from_uri (const char *uri, const char *label)
{
NautilusBookmark *new_bookmark;
NautilusFile *file;
- char *name;
GIcon *icon;
- gboolean has_label;
GFile *location;
gboolean native;
@@ -71,14 +69,6 @@ new_bookmark_from_uri (const char *uri, const char *label)
location = g_file_new_for_uri (uri);
}
- has_label = FALSE;
- if (!label) {
- name = nautilus_compute_title_for_location (location);
- } else {
- name = g_strdup (label);
- has_label = TRUE;
- }
-
new_bookmark = NULL;
if (uri) {
@@ -91,18 +81,18 @@ new_bookmark_from_uri (const char *uri, const char *label)
icon = nautilus_file_get_gicon (file, 0);
}
nautilus_file_unref (file);
-
+
if (icon == NULL) {
icon = native ? g_themed_icon_new (NAUTILUS_ICON_FOLDER) :
g_themed_icon_new (NAUTILUS_ICON_FOLDER_REMOTE);
}
- new_bookmark = nautilus_bookmark_new (location, name, has_label, icon);
+ new_bookmark = nautilus_bookmark_new (location, label, icon);
g_object_unref (icon);
}
- g_free (name);
+
g_object_unref (location);
return new_bookmark;
}
@@ -132,11 +122,20 @@ bookmark_in_list_changed_callback (NautilusBookmark *bookmark,
g_assert (NAUTILUS_IS_BOOKMARK (bookmark));
g_assert (NAUTILUS_IS_BOOKMARK_LIST (bookmarks));
- /* Save changes so we'll have the good icon next time. */
+ /* save changes to the list */
nautilus_bookmark_list_save_file (bookmarks);
}
static void
+bookmark_in_list_notify (GObject *object,
+ GParamSpec *pspec,
+ NautilusBookmarkList *bookmarks)
+{
+ /* emit the changed signal without saving, as only appearance properties changed */
+ g_signal_emit (bookmarks, signals[CHANGED], 0);
+}
+
+static void
stop_monitoring_bookmark (NautilusBookmarkList *bookmarks,
NautilusBookmark *bookmark)
{
@@ -207,12 +206,12 @@ nautilus_bookmark_list_class_init (NautilusBookmarkListClass *class)
object_class->finalize = do_finalize;
object_class->constructor = do_constructor;
- signals[CONTENTS_CHANGED] =
- g_signal_new ("contents_changed",
+ signals[CHANGED] =
+ g_signal_new ("changed",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (NautilusBookmarkListClass,
- contents_changed),
+ changed),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
@@ -258,8 +257,12 @@ insert_bookmark_internal (NautilusBookmarkList *bookmarks,
{
bookmarks->list = g_list_insert (bookmarks->list, bookmark, index);
- g_signal_connect_object (bookmark, "contents_changed",
+ g_signal_connect_object (bookmark, "contents-changed",
G_CALLBACK (bookmark_in_list_changed_callback), bookmarks, 0);
+ g_signal_connect_object (bookmark, "notify::icon",
+ G_CALLBACK (bookmark_in_list_notify), bookmarks, 0);
+ g_signal_connect_object (bookmark, "notify::name",
+ G_CALLBACK (bookmark_in_list_notify), bookmarks, 0);
}
/**
@@ -518,7 +521,7 @@ load_file_finish (NautilusBookmarkList *bookmarks,
g_free (contents);
g_strfreev (lines);
- g_signal_emit (bookmarks, signals[CONTENTS_CHANGED], 0);
+ g_signal_emit (bookmarks, signals[CHANGED], 0);
} else if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) {
g_warning ("Could not load bookmark file: %s\n", error->message);
g_error_free (error);
@@ -595,13 +598,13 @@ save_file_async (NautilusBookmarkList *bookmarks,
/* make sure we save label if it has one for compatibility with GTK 2.7 and 2.8 */
if (nautilus_bookmark_get_has_custom_name (bookmark)) {
- char *label, *uri;
+ const char *label;
+ char *uri;
label = nautilus_bookmark_get_name (bookmark);
uri = nautilus_bookmark_get_uri (bookmark);
g_string_append_printf (bookmark_string,
"%s %s\n", uri, label);
g_free (uri);
- g_free (label);
} else {
char *uri;
uri = nautilus_bookmark_get_uri (bookmark);
@@ -686,7 +689,7 @@ nautilus_bookmark_list_load_file (NautilusBookmarkList *bookmarks)
static void
nautilus_bookmark_list_save_file (NautilusBookmarkList *bookmarks)
{
- g_signal_emit (bookmarks, signals[CONTENTS_CHANGED], 0);
+ g_signal_emit (bookmarks, signals[CHANGED], 0);
g_queue_push_head (bookmarks->pending_ops, GINT_TO_POINTER (SAVE_JOB));
diff --git a/src/nautilus-bookmark-list.h b/src/nautilus-bookmark-list.h
index dfb4e5e..4684b28 100644
--- a/src/nautilus-bookmark-list.h
+++ b/src/nautilus-bookmark-list.h
@@ -56,7 +56,7 @@ struct NautilusBookmarkList {
struct NautilusBookmarkListClass {
GObjectClass parent_class;
- void (* contents_changed) (NautilusBookmarkList *bookmarks);
+ void (* changed) (NautilusBookmarkList *bookmarks);
};
GType nautilus_bookmark_list_get_type (void);
diff --git a/src/nautilus-bookmarks-window.c b/src/nautilus-bookmarks-window.c
index b249f98..88e1649 100644
--- a/src/nautilus-bookmarks-window.c
+++ b/src/nautilus-bookmarks-window.c
@@ -339,7 +339,7 @@ create_bookmarks_window (NautilusBookmarkList *list, GObject *undo_manager_sourc
uri_field);
bookmark_list_changed_signal_id =
- g_signal_connect (bookmarks, "contents_changed",
+ g_signal_connect (bookmarks, "changed",
G_CALLBACK (on_bookmark_list_changed), NULL);
row_changed_signal_id =
g_signal_connect (bookmark_list_store, "row_changed",
@@ -766,7 +766,8 @@ on_selection_changed (GtkTreeSelection *treeselection,
gpointer user_data)
{
NautilusBookmark *selected;
- char *name = NULL, *entry_text = NULL;
+ const char *name = NULL;
+ char *entry_text = NULL;
GFile *location;
g_assert (GTK_IS_ENTRY (name_field));
@@ -801,7 +802,6 @@ on_selection_changed (GtkTreeSelection *treeselection,
text_changed = FALSE;
name_text_changed = FALSE;
- g_free (name);
g_free (entry_text);
}
@@ -827,8 +827,9 @@ update_bookmark_from_text (void)
location = g_file_parse_name
(gtk_entry_get_text (GTK_ENTRY (uri_field)));
- bookmark = nautilus_bookmark_new (location, gtk_entry_get_text (GTK_ENTRY (name_field)),
- name_text_changed, NULL);
+ bookmark = nautilus_bookmark_new (location,
+ name_text_changed ? gtk_entry_get_text (GTK_ENTRY (name_field)) : NULL,
+ NULL);
g_object_unref (location);
diff --git a/src/nautilus-places-sidebar.c b/src/nautilus-places-sidebar.c
index 0e4030b..48ba769 100644
--- a/src/nautilus-places-sidebar.c
+++ b/src/nautilus-places-sidebar.c
@@ -431,7 +431,7 @@ update_places (NautilusPlacesSidebar *sidebar)
GVolume *volume;
int bookmark_count, index;
char *location, *mount_uri, *name, *desktop_path, *last_uri;
- const gchar *path;
+ const gchar *path, *bookmark_name;
GIcon *icon;
GFile *root;
NautilusWindowSlot *slot;
@@ -606,20 +606,20 @@ update_places (NautilusPlacesSidebar *sidebar)
continue;
}
- name = nautilus_bookmark_get_name (bookmark);
+ bookmark_name = nautilus_bookmark_get_name (bookmark);
icon = nautilus_bookmark_get_icon (bookmark);
mount_uri = nautilus_bookmark_get_uri (bookmark);
tooltip = g_file_get_parse_name (root);
last_iter = add_place (sidebar, PLACES_BOOKMARK,
SECTION_BOOKMARKS,
- name, icon, mount_uri,
+ bookmark_name, icon, mount_uri,
NULL, NULL, NULL, index,
tooltip);
compare_for_selection (sidebar,
location, mount_uri, last_uri,
&last_iter, &select_path);
- g_free (name);
+
g_object_unref (root);
g_object_unref (icon);
g_free (mount_uri);
@@ -1264,7 +1264,6 @@ bookmarks_drop_uris (NautilusPlacesSidebar *sidebar,
char **uris;
int i;
GFile *location;
- GIcon *icon;
uris = gtk_selection_data_get_uris (selection_data);
if (!uris)
@@ -1283,9 +1282,7 @@ bookmarks_drop_uris (NautilusPlacesSidebar *sidebar,
location = g_file_new_for_uri (uri);
nautilus_file_unref (file);
- name = nautilus_compute_title_for_location (location);
- icon = g_themed_icon_new (NAUTILUS_ICON_FOLDER);
- bookmark = nautilus_bookmark_new (location, name, TRUE, icon);
+ bookmark = nautilus_bookmark_new (location, NULL, NULL);
if (!nautilus_bookmark_list_contains (sidebar->bookmarks, bookmark)) {
nautilus_bookmark_list_insert_item (sidebar->bookmarks, bookmark, position++);
@@ -1293,7 +1290,6 @@ bookmarks_drop_uris (NautilusPlacesSidebar *sidebar,
g_object_unref (location);
g_object_unref (bookmark);
- g_object_unref (icon);
g_free (name);
g_free (uri);
}
@@ -2781,7 +2777,7 @@ bookmarks_edited (GtkCellRenderer *cell,
bookmark = nautilus_bookmark_list_item_at (sidebar->bookmarks, index);
if (bookmark != NULL) {
- nautilus_bookmark_set_name (bookmark, new_text);
+ nautilus_bookmark_set_custom_name (bookmark, new_text);
}
}
@@ -3177,7 +3173,7 @@ nautilus_places_sidebar_set_parent_window (NautilusPlacesSidebar *sidebar,
sidebar->bookmarks = nautilus_bookmark_list_new ();
sidebar->uri = nautilus_window_slot_get_current_uri (slot);
- g_signal_connect_object (sidebar->bookmarks, "contents_changed",
+ g_signal_connect_object (sidebar->bookmarks, "changed",
G_CALLBACK (update_places),
sidebar, G_CONNECT_SWAPPED);
diff --git a/src/nautilus-window-bookmarks.c b/src/nautilus-window-bookmarks.c
index f6cae77..4bae1b3 100644
--- a/src/nautilus-window-bookmarks.c
+++ b/src/nautilus-window-bookmarks.c
@@ -278,7 +278,7 @@ nautilus_window_initialize_bookmarks_menu (NautilusWindow *window)
refresh_bookmarks_menu (window);
/* Recreate dynamic part of menu if bookmark list changes */
- g_signal_connect_object (window->details->bookmark_list, "contents_changed",
+ g_signal_connect_object (window->details->bookmark_list, "changed",
G_CALLBACK (refresh_bookmarks_menu),
window, G_CONNECT_SWAPPED);
}
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index 2b27e29..8fc9c14 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -113,7 +113,6 @@ set_displayed_location (NautilusWindowSlot *slot, GFile *location)
NautilusWindow *window;
GFile *bookmark_location;
gboolean recreate;
- char *name;
window = slot->pane->window;
@@ -131,10 +130,8 @@ set_displayed_location (NautilusWindowSlot *slot, GFile *location)
g_object_unref (slot->last_location_bookmark);
}
slot->last_location_bookmark = slot->current_location_bookmark;
- name = g_file_get_basename (location);
slot->current_location_bookmark = (location == NULL) ? NULL
- : nautilus_bookmark_new (location, name, FALSE, NULL);
- g_free (name);
+ : nautilus_bookmark_new (location, NULL, NULL);
}
}
diff --git a/src/nautilus-window-menus.c b/src/nautilus-window-menus.c
index d437e08..501a647 100644
--- a/src/nautilus-window-menus.c
+++ b/src/nautilus-window-menus.c
@@ -67,7 +67,7 @@
typedef struct {
NautilusBookmark *bookmark;
NautilusWindow *window;
- guint changed_handler_id;
+ GCallback refresh_callback;
NautilusBookmarkFailedCallback failed_callback;
} BookmarkHolder;
@@ -83,14 +83,17 @@ bookmark_holder_new (NautilusBookmark *bookmark,
new_bookmark_holder->window = window;
new_bookmark_holder->bookmark = bookmark;
new_bookmark_holder->failed_callback = failed_callback;
+ new_bookmark_holder->refresh_callback = refresh_callback;
/* Ref the bookmark because it might be unreffed away while
* we're holding onto it (not an issue for window).
*/
g_object_ref (bookmark);
- new_bookmark_holder->changed_handler_id =
- g_signal_connect_object (bookmark, "appearance_changed",
- refresh_callback,
- window, G_CONNECT_SWAPPED);
+ g_signal_connect_object (bookmark, "notify::icon",
+ refresh_callback,
+ window, G_CONNECT_SWAPPED);
+ g_signal_connect_object (bookmark, "notify::name",
+ refresh_callback,
+ window, G_CONNECT_SWAPPED);
return new_bookmark_holder;
}
@@ -98,8 +101,8 @@ bookmark_holder_new (NautilusBookmark *bookmark,
static void
bookmark_holder_free (BookmarkHolder *bookmark_holder)
{
- g_signal_handler_disconnect (bookmark_holder->bookmark,
- bookmark_holder->changed_handler_id);
+ g_signal_handlers_disconnect_by_func (bookmark_holder->bookmark,
+ bookmark_holder->refresh_callback, bookmark_holder->window);
g_object_unref (bookmark_holder->bookmark);
g_free (bookmark_holder);
}
@@ -165,7 +168,7 @@ nautilus_menus_append_bookmark_to_menu (NautilusWindow *window,
{
BookmarkHolder *bookmark_holder;
char action_name[128];
- char *name;
+ const char *name;
char *path;
GIcon *icon;
GtkAction *action;
@@ -216,7 +219,6 @@ nautilus_menus_append_bookmark_to_menu (NautilusWindow *window,
TRUE);
g_free (path);
- g_free (name);
}
static void
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 19cb6d1..5d5f9b8 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -535,7 +535,6 @@ char *
nautilus_window_slot_get_current_uri (NautilusWindowSlot *slot)
{
if (slot->pending_location != NULL) {
- g_print ("returning pending\n");
return g_file_get_uri (slot->pending_location);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]