summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2010-04-11 15:02:37 +0200
committerCosimo Cecchi <cosimoc@gnome.org>2010-04-26 16:34:35 +0200
commit5b80a0e60516518f359596b5d6285b241d7c6cad (patch)
tree866f903e56bad78e5687e9553950ba3d4eaf70e1 /src
parentc87d0252bbd028ef80c3460be737c4e8ae07aa62 (diff)
downloadnautilus-5b80a0e60516518f359596b5d6285b241d7c6cad.tar.gz
Add a method to move bookmarks in the list.
So that moving a bookmark in the list doesn't trigger two 'contents-changed' signals in a row.
Diffstat (limited to 'src')
-rw-r--r--src/nautilus-bookmark-list.c35
-rw-r--r--src/nautilus-bookmark-list.h3
2 files changed, 38 insertions, 0 deletions
diff --git a/src/nautilus-bookmark-list.c b/src/nautilus-bookmark-list.c
index 17c0545d6..67be6107b 100644
--- a/src/nautilus-bookmark-list.c
+++ b/src/nautilus-bookmark-list.c
@@ -317,6 +317,41 @@ nautilus_bookmark_list_delete_item_at (NautilusBookmarkList *bookmarks,
}
/**
+ * nautilus_bookmark_list_move_item:
+ *
+ * Move the item from the given position to the destination.
+ * @index: the index of the first bookmark.
+ * @destination: the index of the second bookmark.
+ **/
+void
+nautilus_bookmark_list_move_item (NautilusBookmarkList *bookmarks,
+ guint index,
+ guint destination)
+{
+ GList *bookmark_item;
+
+ if (index == destination) {
+ return;
+ }
+
+ bookmark_item = g_list_nth (bookmarks->list, index);
+ bookmarks->list = g_list_remove_link (bookmarks->list,
+ bookmark_item);
+
+ if (index < destination) {
+ bookmarks->list = g_list_insert (bookmarks->list,
+ bookmark_item->data,
+ destination - 1);
+ } else {
+ bookmarks->list = g_list_insert (bookmarks->list,
+ bookmark_item->data,
+ destination);
+ }
+
+ nautilus_bookmark_list_contents_changed (bookmarks);
+}
+
+/**
* nautilus_bookmark_list_delete_items_with_uri:
*
* Delete all bookmarks with the given uri.
diff --git a/src/nautilus-bookmark-list.h b/src/nautilus-bookmark-list.h
index 5bcb114ae..f611681f0 100644
--- a/src/nautilus-bookmark-list.h
+++ b/src/nautilus-bookmark-list.h
@@ -74,6 +74,9 @@ void nautilus_bookmark_list_insert_item (NautilusBook
guint nautilus_bookmark_list_length (NautilusBookmarkList *bookmarks);
NautilusBookmark * nautilus_bookmark_list_item_at (NautilusBookmarkList *bookmarks,
guint index);
+void nautilus_bookmark_list_move_item (NautilusBookmarkList *bookmarks,
+ guint index,
+ guint destination);
void nautilus_bookmark_list_set_window_geometry (NautilusBookmarkList *bookmarks,
const char *geometry);
const char * nautilus_bookmark_list_get_window_geometry (NautilusBookmarkList *bookmarks);