From c0b3d59c7ff9d953cba644ad5732824cc848b97c Mon Sep 17 00:00:00 2001 From: Olivier Duchateau Date: Wed, 13 Mar 2019 21:52:38 +0100 Subject: [PATCH] Fix save action with panel plugin --- lib/screenshooter-actions.c | 37 +++++++++++++++++++------------------ lib/screenshooter-utils.c | 8 +++++--- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/lib/screenshooter-actions.c b/lib/screenshooter-actions.c index a96dc37..b52935c 100644 --- a/lib/screenshooter-actions.c +++ b/lib/screenshooter-actions.c @@ -70,29 +70,30 @@ action_idle (ScreenshotData *sd) if (sd->action & SAVE) { - if (!sd->path_is_dir) - screenshooter_save_screenshot_to (sd->screenshot, sd->screenshot_dir); - else - { - const gchar *save_location; + const gchar *save_location; - if (sd->screenshot_dir == NULL) - sd->screenshot_dir = screenshooter_get_xdg_image_dir_uri (); + if (sd->screenshot_dir == NULL) + sd->screenshot_dir = screenshooter_get_xdg_image_dir_uri (); - save_location = screenshooter_save_screenshot (sd->screenshot, - sd->screenshot_dir, - sd->title, - sd->timestamp, - TRUE, - TRUE); + save_location = screenshooter_save_screenshot (sd->screenshot, + sd->screenshot_dir, + sd->title, + sd->timestamp, + TRUE, + TRUE); - if (save_location) - { - const gchar *temp; + if (save_location) + { + gchar *temp; + temp = g_filename_to_uri (g_path_get_dirname (save_location), + NULL, NULL); + if (g_strcmp0 (sd->screenshot_dir, temp) < 0 || + g_strcmp0 (sd->screenshot_dir, temp) > 0) + { g_free (sd->screenshot_dir); - temp = g_path_get_dirname (save_location); - sd->screenshot_dir = g_build_filename ("file://", temp, NULL); + sd->screenshot_dir = g_strdup_printf ("%s", temp); + g_free (temp); TRACE ("New save directory: %s", sd->screenshot_dir); } } diff --git a/lib/screenshooter-utils.c b/lib/screenshooter-utils.c index d1a39ed..5881dc9 100644 --- a/lib/screenshooter-utils.c +++ b/lib/screenshooter-utils.c @@ -18,6 +18,7 @@ */ #include "screenshooter-utils.h" +#include #include @@ -221,7 +222,8 @@ gchar *screenshooter_get_home_uri (void) if (G_UNLIKELY (!home_path)) home_path = g_get_home_dir (); - result = g_strconcat ("file://", home_path, NULL); + result = g_strdup_printf ("%s", g_filename_to_uri (home_path, NULL, + NULL)); return result; } @@ -230,14 +232,14 @@ gchar *screenshooter_get_home_uri (void) gchar *screenshooter_get_xdg_image_dir_uri (void) { - gchar *result, *tmp; + gchar *result = NULL, *tmp; tmp = g_strdup (g_get_user_special_dir (G_USER_DIRECTORY_PICTURES)); if (tmp == NULL) return screenshooter_get_home_uri (); - result = g_strconcat ("file://", tmp, NULL); + result = g_strdup_printf ("%s", g_filename_to_uri (tmp, NULL, NULL)); g_free (tmp); return result; -- 2.20.1