diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2010-04-11 15:02:37 +0200 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2010-04-26 16:34:35 +0200 |
commit | 5b80a0e60516518f359596b5d6285b241d7c6cad (patch) | |
tree | 866f903e56bad78e5687e9553950ba3d4eaf70e1 /src | |
parent | c87d0252bbd028ef80c3460be737c4e8ae07aa62 (diff) | |
download | nautilus-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.c | 35 | ||||
-rw-r--r-- | src/nautilus-bookmark-list.h | 3 |
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); |