summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonsta <[email protected]>2015-06-18 16:09:40 +0300
committerMonsta <[email protected]>2015-06-19 11:03:47 +0300
commit679688892cb9ea63606c41998ba4ed22642f36a2 (patch)
treea656df6bb2806511468479e22cf3332fd2a15b5b
parent85433f2e6e9e10a8a723ae60f6d92e4b4f99c2da (diff)
downloadcaja-679688892cb9ea63606c41998ba4ed22642f36a2.tar.bz2
caja-679688892cb9ea63606c41998ba4ed22642f36a2.tar.xz
places-sidebar: enable both creating bookmarks and dropping files1.8
- drag a folder to the top or bottom of the bookmark list to add a new bookmark. a horizontal line will be shown and the mouse pointer will have a '+' at its right side. - if there are no bookmarks (and that section isn't shown), drag a folder over the computer section's heading. this will add a new bookmark and make the bookmarks list visible. - drag a file or a folder over some existing bookmark to move it into the bookmarked folder. the mouse pointer will have an arrow at its right side. - if you want to copy a file or a folder there instead, perform the same operation but hold ctrl during that. the mouse pointer will have a '+' at its right side. no horizontal line will be shown, so you will be able to distinguish this operation from adding a new bookmark. :) adapted from https://github.com/mate-desktop/caja/commit/3fdb9a14077b14263e8acfc93addc8fbcf568ca1 with adjustments for 1.8 (different order of sidebar sections)
-rw-r--r--src/caja-places-sidebar.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/src/caja-places-sidebar.c b/src/caja-places-sidebar.c
index f7974970..1b45bdf2 100644
--- a/src/caja-places-sidebar.c
+++ b/src/caja-places-sidebar.c
@@ -1130,11 +1130,13 @@ compute_drop_position (GtkTreeView *tree_view,
PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type,
-1);
- if (place_type == PLACES_HEADING && section_type != SECTION_BOOKMARKS) {
- /* never drop on headings, but special case the bookmarks heading,
- * so we can drop bookmarks in between it and the first item.
+ if (place_type == PLACES_HEADING &&
+ section_type != SECTION_BOOKMARKS &&
+ section_type != SECTION_COMPUTER) {
+ /* never drop on headings, but the bookmarks or computer heading
+ * is a special case, so we can create new bookmarks by dragging
+ * at the beginning or end of the bookmark list.
*/
-
gtk_tree_path_free (*path);
*path = NULL;
@@ -1145,17 +1147,19 @@ compute_drop_position (GtkTreeView *tree_view,
sidebar->drag_data_received &&
sidebar->drag_data_info == GTK_TREE_MODEL_ROW) {
/* don't allow dropping bookmarks into non-bookmark areas */
-
- gtk_tree_path_free (*path);
- *path = NULL;
+ gtk_tree_path_free (*path);
+ *path = NULL;
return FALSE;
}
- if (section_type == SECTION_BOOKMARKS) {
+ /* drag to top or bottom of bookmark list to add a bookmark */
+ if (place_type == PLACES_HEADING && section_type == SECTION_BOOKMARKS) {
*pos = GTK_TREE_VIEW_DROP_AFTER;
+ } else if (place_type == PLACES_HEADING && section_type == SECTION_COMPUTER) {
+ *pos = GTK_TREE_VIEW_DROP_BEFORE;
} else {
- /* non-bookmark shortcuts can only be dragged into */
+ /* or else you want to drag items INTO the existing bookmarks */
*pos = GTK_TREE_VIEW_DROP_INTO_OR_BEFORE;
}
@@ -1266,10 +1270,10 @@ drag_motion_callback (GtkTreeView *tree_view,
}
if (pos == GTK_TREE_VIEW_DROP_BEFORE ||
- pos == GTK_TREE_VIEW_DROP_AFTER )
+ pos == GTK_TREE_VIEW_DROP_AFTER )
{
if (sidebar->drag_data_received &&
- sidebar->drag_data_info == GTK_TREE_MODEL_ROW)
+ sidebar->drag_data_info == GTK_TREE_MODEL_ROW)
{
action = GDK_ACTION_MOVE;
}
@@ -1527,7 +1531,7 @@ drag_data_received_callback (GtkWidget *widget,
success = FALSE;
if (tree_pos == GTK_TREE_VIEW_DROP_BEFORE ||
- tree_pos == GTK_TREE_VIEW_DROP_AFTER)
+ tree_pos == GTK_TREE_VIEW_DROP_AFTER)
{
model = gtk_tree_view_get_model (tree_view);
@@ -1538,14 +1542,20 @@ drag_data_received_callback (GtkWidget *widget,
gtk_tree_model_get (model, &iter,
PLACES_SIDEBAR_COLUMN_SECTION_TYPE, &section_type,
- PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
+ PLACES_SIDEBAR_COLUMN_ROW_TYPE, &place_type,
PLACES_SIDEBAR_COLUMN_INDEX, &position,
-1);
- if (section_type != SECTION_BOOKMARKS) {
+ if (section_type != SECTION_BOOKMARKS &&
+ !(section_type == SECTION_COMPUTER && place_type == PLACES_HEADING)) {
goto out;
}
+ if (section_type == SECTION_COMPUTER && place_type == PLACES_HEADING &&
+ tree_pos == GTK_TREE_VIEW_DROP_BEFORE) {
+ position = caja_bookmark_list_length (sidebar->bookmarks);
+ }
+
if (tree_pos == GTK_TREE_VIEW_DROP_AFTER && place_type != PLACES_HEADING) {
/* heading already has position 0 */
position++;