[gedit/zbrown/deteplification-src: 390/633] Window: change set_default_location() to take a GFile folder
- From: Zander Brown <zbrown src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/zbrown/deteplification-src: 390/633] Window: change set_default_location() to take a GFile folder
- Date: Sat, 10 Apr 2021 12:48:04 +0000 (UTC)
commit 25cc8ed6e7eae5acc35191b9dd32810460292cc6
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 09cfff924..16307bce1 100644
--- a/gedit/gedit-commands-file.c
+++ b/gedit/gedit-commands-file.c
@@ -366,6 +366,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);
@@ -378,6 +380,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)
@@ -389,10 +392,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);
@@ -706,7 +712,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 f0fcf255f..c08c0afcb 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -3444,20 +3444,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]