[nautilus/wip/antoniof/bookmarking-clean] bookmark-list: Don't allow bookmarking recent://



commit 27ebca1290c45d3e0193fb4e60e1f15b1e845123
Author: António Fernandes <antoniof gnome org>
Date:   Thu Jan 4 01:58:37 2018 +0000

    bookmark-list: Don't allow bookmarking recent://
    
    Recent is always in the sidebar. Bookmarking it results in a duplicate
    sidebar entry for Recent.
    
    Disable the bookmarking action in that case. Instead of yet another
    "if" block, rearrange the code and add comments.
    
    Fixes: #189

 src/nautilus-bookmark-list.c  | 26 ++++++++++++++------------
 src/nautilus-file-utilities.c | 10 ++++++++++
 src/nautilus-file-utilities.h |  1 +
 3 files changed, 25 insertions(+), 12 deletions(-)
---
diff --git a/src/nautilus-bookmark-list.c b/src/nautilus-bookmark-list.c
index 926d949fe..7c3993a28 100644
--- a/src/nautilus-bookmark-list.c
+++ b/src/nautilus-bookmark-list.c
@@ -625,26 +625,22 @@ nautilus_bookmark_list_can_bookmark_location (NautilusBookmarkList *list,
 
     if (nautilus_bookmark_list_item_with_location (list, location, NULL))
     {
-        return FALSE;
-    }
-
-    if (nautilus_is_home_directory (location))
-    {
+        /* Already bookmarked */
         return FALSE;
     }
 
     if (nautilus_is_search_directory (location))
     {
+        /* Can't bookmark searches */
         return FALSE;
     }
 
-    if (nautilus_is_other_locations_directory (location))
-    {
-        return FALSE;
-    }
-
-    if (nautilus_is_favorite_directory (location))
+    if (nautilus_is_recent_directory (location) ||
+        nautilus_is_favorite_directory (location) ||
+        nautilus_is_home_directory (location) ||
+        nautilus_is_other_locations_directory (location))
     {
+        /* Already in the sidebar */
         return FALSE;
     }
 
@@ -652,7 +648,13 @@ nautilus_bookmark_list_can_bookmark_location (NautilusBookmarkList *list,
     is_builtin = nautilus_bookmark_get_is_builtin (bookmark);
     g_object_unref (bookmark);
 
-    return !is_builtin;
+    if (is_builtin)
+    {
+        /* Already in the sidebar */
+        return FALSE;
+    }
+
+    return TRUE;
 }
 
 /**
diff --git a/src/nautilus-file-utilities.c b/src/nautilus-file-utilities.c
index ba67b8559..9ebd9f069 100644
--- a/src/nautilus-file-utilities.c
+++ b/src/nautilus-file-utilities.c
@@ -539,6 +539,16 @@ nautilus_is_search_directory (GFile *dir)
     return eel_uri_is_search (uri);
 }
 
+gboolean
+nautilus_is_recent_directory (GFile *dir)
+{
+    g_autofree gchar *uri = NULL;
+
+    uri = g_file_get_uri (dir);
+
+    return eel_uri_is_recent (uri);
+}
+
 gboolean
 nautilus_is_favorite_directory (GFile *dir)
 {
diff --git a/src/nautilus-file-utilities.h b/src/nautilus-file-utilities.h
index 415f01b3e..a0b1b1926 100644
--- a/src/nautilus-file-utilities.h
+++ b/src/nautilus-file-utilities.h
@@ -43,6 +43,7 @@ gboolean nautilus_is_home_directory_file             (GFile *dir,
                                                      const char *filename);
 gboolean nautilus_is_in_system_dir                   (GFile *location);
 gboolean nautilus_is_search_directory                (GFile *dir);
+gboolean nautilus_is_recent_directory                (GFile *dir);
 gboolean nautilus_is_favorite_directory              (GFile *dir);
 gboolean nautilus_is_other_locations_directory       (GFile *dir);
 GMount * nautilus_get_mounted_mount_for_root         (GFile *location);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]