[gedit] Window: change set_default_location() to take a GFile folder
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] Window: change set_default_location() to take a GFile folder
- Date: Sun, 7 Jun 2020 00:54:19 +0000 (UTC)
commit f2b29ae8a83926e6f8b1c996a5e11c77eedfd1fd
Author: Sébastien Wilmet <swilmet gnome org>
Date: Sun Jun 7 01:53:27 2020 +0200
Window: change set_default_location() to take a GFile folder
Use _gedit_file_chooser_open_get_current_folder_uri() instead of the
first GFile to open. With the new GeditFileChooserOpen implementation,
it calls gtk_file_chooser_get_current_folder_uri() (which is more
logical in order to remember the folder).
gtk_file_chooser_get_current_folder_uri() returns NULL when opening
file(s) from the Recent list.
So this commit changes the behavior, it will now remember that files
were opened from the Recent list, to show again the Recent list the next
time (but this requires still a few commits to get things right in that
area).
gedit/gedit-commands-file.c | 21 ++++++++++++++++++---
gedit/gedit-window.c | 13 +++++--------
gedit/gedit-window.h | 2 +-
3 files changed, 24 insertions(+), 12 deletions(-)
---
diff --git a/gedit/gedit-commands-file.c b/gedit/gedit-commands-file.c
index ed9852e0a..beb5dc8e6 100644
--- a/gedit/gedit-commands-file.c
+++ b/gedit/gedit-commands-file.c
@@ -369,6 +369,8 @@ file_chooser_open_done_cb (GeditFileChooserOpen *file_chooser,
{
GSList *files;
const GtkSourceEncoding *encoding;
+ gchar *folder_uri;
+ GFile *folder = NULL;
GSList *loaded_documents;
gedit_debug (DEBUG_COMMANDS);
@@ -381,6 +383,7 @@ file_chooser_open_done_cb (GeditFileChooserOpen *file_chooser,
files = _gedit_file_chooser_open_get_files (file_chooser);
encoding = _gedit_file_chooser_open_get_encoding (file_chooser);
+ folder_uri = _gedit_file_chooser_open_get_current_folder_uri (file_chooser);
g_object_unref (file_chooser);
if (window == NULL)
@@ -392,10 +395,13 @@ file_chooser_open_done_cb (GeditFileChooserOpen *file_chooser,
}
/* Remember the folder we navigated to. */
- if (files != NULL)
+ if (folder_uri != NULL)
{
- _gedit_window_set_default_location (window, files->data);
+ folder = g_file_new_for_uri (folder_uri);
+ g_free (folder_uri);
}
+ _gedit_window_set_default_location (window, folder);
+ g_clear_object (&folder);
loaded_documents = gedit_commands_load_locations (window, files, encoding, 0, 0);
@@ -709,7 +715,16 @@ save_dialog_response_cb (GeditFileChooserDialog *dialog,
g_free (parse_name);
/* Let's remember the dir we navigated to, even if the saving fails... */
- _gedit_window_set_default_location (window, location);
+ {
+ GFile *folder;
+
+ folder = g_file_get_parent (location);
+ if (folder != NULL)
+ {
+ _gedit_window_set_default_location (window, folder);
+ g_object_unref (folder);
+ }
+ }
_gedit_tab_save_as_async (tab,
location,
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index ac502fd0c..5b30107fe 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -3395,20 +3395,17 @@ _gedit_window_get_default_location (GeditWindow *window)
void
_gedit_window_set_default_location (GeditWindow *window,
- GFile *location)
+ GFile *folder)
{
- GFile *folder;
-
g_return_if_fail (GEDIT_IS_WINDOW (window));
- g_return_if_fail (G_IS_FILE (location));
+ g_return_if_fail (folder == NULL || G_IS_FILE (folder));
+
+ g_free (window->priv->file_chooser_folder_uri);
+ window->priv->file_chooser_folder_uri = NULL;
- folder = g_file_get_parent (location);
if (folder != NULL)
{
- g_free (window->priv->file_chooser_folder_uri);
window->priv->file_chooser_folder_uri = g_file_get_uri (folder);
-
- g_object_unref (folder);
}
}
diff --git a/gedit/gedit-window.h b/gedit/gedit-window.h
index f02a044ae..b2eb53535 100644
--- a/gedit/gedit-window.h
+++ b/gedit/gedit-window.h
@@ -155,7 +155,7 @@ gboolean _gedit_window_is_removing_tabs (GeditWindow *window);
GFile *_gedit_window_get_default_location (GeditWindow *window);
void _gedit_window_set_default_location (GeditWindow *window,
- GFile *location);
+ GFile *folder);
void _gedit_window_fullscreen (GeditWindow *window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]