From 6a63d7bd8ff0d937cb30f112c3fd080a5a107053 Mon Sep 17 00:00:00 2001 From: Alistair Buxton <a.j.buxton@gmail.com> Date: Wed, 12 Mar 2014 20:20:05 +0000 Subject: [PATCH] Add support for the GTK 3 bookmarks file (bug #10627) The changes ensure that the config directory exists before attempting to write bookmarks. It falls back to the old location to support both GTK 2 and 3. --- thunar/thunar-gio-extensions.c | 2 +- thunar/thunar-shortcuts-model.c | 17 +++++++++++++++++ thunar/thunar-util.c | 10 +++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/thunar/thunar-gio-extensions.c b/thunar/thunar-gio-extensions.c index 1b9026a24..369c1f469 100644 --- a/thunar/thunar-gio-extensions.c +++ b/thunar/thunar-gio-extensions.c @@ -77,7 +77,7 @@ thunar_g_file_new_for_bookmarks (void) gchar *filename; GFile *bookmarks; - filename = g_build_filename (xfce_get_homedir (), ".gtk-bookmarks", NULL); + filename = g_build_filename (g_get_user_config_dir (), "gtk-3.0", "bookmarks", NULL); bookmarks = g_file_new_for_path (filename); g_free (filename); diff --git a/thunar/thunar-shortcuts-model.c b/thunar/thunar-shortcuts-model.c index ab4c74d3f..c215c544e 100644 --- a/thunar/thunar-shortcuts-model.c +++ b/thunar/thunar-shortcuts-model.c @@ -1364,6 +1364,7 @@ thunar_shortcuts_model_save (ThunarShortcutsModel *model) gchar *uri; GList *lp; GError *err = NULL; + GFile *parent = NULL; _thunar_return_if_fail (THUNAR_IS_SHORTCUTS_MODEL (model)); @@ -1389,6 +1390,22 @@ thunar_shortcuts_model_save (ThunarShortcutsModel *model) } } + /* create folder if it does not exist */ + parent = g_file_get_parent (model->bookmarks_file); + if (!g_file_make_directory_with_parents (parent, NULL, &err)) + { + if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_EXISTS)) + { + g_clear_error (&err); + } + else + { + g_warning ("Failed to create bookmarks folder: %s", err->message); + g_error_free (err); + } + } + g_clear_object (&parent); + /* write data to the disk */ bookmarks_path = g_file_get_path (model->bookmarks_file); if (!g_file_set_contents (bookmarks_path, contents->str, contents->len, &err)) diff --git a/thunar/thunar-util.c b/thunar/thunar-util.c index 22ffcce6d..3cb764e94 100644 --- a/thunar/thunar-util.c +++ b/thunar/thunar-util.c @@ -196,6 +196,15 @@ thunar_util_load_bookmarks (GFile *bookmarks_file, /* append the GTK+ bookmarks (if any) */ fp = fopen (bookmarks_path, "r"); + g_free (bookmarks_path); + + if (G_UNLIKELY (fp == NULL)) + { + bookmarks_path = g_build_filename (g_get_home_dir (), ".gtk-bookmarks", NULL); + fp = fopen(bookmarks_path, "r"); + g_free(bookmarks_path); + } + if (G_LIKELY (fp != NULL)) { while (fgets (line, sizeof (line), fp) != NULL) @@ -231,7 +240,6 @@ thunar_util_load_bookmarks (GFile *bookmarks_file, fclose (fp); } - g_free (bookmarks_path); } -- GitLab