[gnome-builder] Do not bookmark random directories
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] Do not bookmark random directories
- Date: Sun, 21 Feb 2016 22:47:45 +0000 (UTC)
commit f13bcab1e3ebb30c53a9f469021febbdafc4164e
Author: Akshaya Kakkilaya <akshaya kakkilaya gmail com>
Date: Fri Feb 19 22:27:54 2016 +0530
Do not bookmark random directories
To avoid this, only bookmark files within folders created in the
current user home directory. These folders must not be dot preceded
folders.
https://bugzilla.gnome.org/show_bug.cgi?id=750818
libide/ide-context.c | 36 ++++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-context.c b/libide/ide-context.c
index 35d1399..ecaf786 100644
--- a/libide/ide-context.c
+++ b/libide/ide-context.c
@@ -1267,6 +1267,36 @@ ide_context_init_services (gpointer source_object,
g_task_return_boolean (task, TRUE);
}
+static gboolean
+directory_is_ignored (GFile *file)
+{
+ const gchar *home_dir = g_get_home_dir ();
+ const gchar *downloads_dir = g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD);
+ g_autoptr(GFile) home_prefix = g_file_new_for_path (home_dir);
+ g_autoptr(GFile) downloads_prefix = g_file_new_for_path (downloads_dir);
+ g_autofree gchar *relative_path = g_file_get_relative_path (home_prefix, file);
+ GFileType type = g_file_query_file_type (file, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL);
+
+ if (!g_file_has_prefix (file, home_prefix))
+ return TRUE;
+
+ if (g_file_equal (file, downloads_prefix) || g_file_has_prefix (file, downloads_prefix))
+ return TRUE;
+
+ if (g_str_has_prefix (relative_path, "."))
+ return TRUE;
+
+ if (type != G_FILE_TYPE_DIRECTORY)
+ {
+ g_autoptr(GFile) parent = g_file_get_parent (file);
+
+ if (g_file_equal (home_prefix, parent))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static void
ide_context_init_add_recent (gpointer source_object,
GCancellable *cancellable,
@@ -1289,6 +1319,12 @@ ide_context_init_add_recent (gpointer source_object,
task = g_task_new (self, cancellable, callback, user_data);
+ if (directory_is_ignored (self->project_file))
+ {
+ g_task_return_boolean (task, TRUE);
+ return;
+ }
+
projects_file = g_bookmark_file_new ();
g_bookmark_file_load_from_file (projects_file, self->recent_projects_path, &error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]