[gnome-text-editor] page: add save-as helper to provide filename
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-text-editor] page: add save-as helper to provide filename
- Date: Fri, 12 Nov 2021 07:28:55 +0000 (UTC)
commit 7c1872482d3954b88dfc9a41408d6f21d6262eea
Author: Christian Hergert <chergert redhat com>
Date: Thu Nov 11 23:18:35 2021 -0800
page: add save-as helper to provide filename
src/editor-page-private.h | 3 ++-
src/editor-page.c | 23 +++++++++++++++++++++--
src/editor-window-actions.c | 2 +-
3 files changed, 24 insertions(+), 4 deletions(-)
---
diff --git a/src/editor-page-private.h b/src/editor-page-private.h
index 43f6b61..b36d843 100644
--- a/src/editor-page-private.h
+++ b/src/editor-page-private.h
@@ -66,7 +66,8 @@ void _editor_page_class_actions_init (EditorPageClass *klass);
void _editor_page_actions_init (EditorPage *self);
EditorWindow *_editor_page_get_window (EditorPage *self);
void _editor_page_save (EditorPage *self);
-void _editor_page_save_as (EditorPage *self);
+void _editor_page_save_as (EditorPage *self,
+ const char *filename);
void _editor_page_raise (EditorPage *self);
void _editor_page_discard_changes_async (EditorPage *self,
gboolean reload,
diff --git a/src/editor-page.c b/src/editor-page.c
index 70d98b6..5605101 100644
--- a/src/editor-page.c
+++ b/src/editor-page.c
@@ -872,7 +872,7 @@ _editor_page_save (EditorPage *self)
if (editor_document_get_file (self->document) == NULL)
{
- _editor_page_save_as (self);
+ _editor_page_save_as (self, NULL);
return;
}
@@ -912,7 +912,8 @@ editor_page_save_as_cb (EditorPage *self,
}
void
-_editor_page_save_as (EditorPage *self)
+_editor_page_save_as (EditorPage *self,
+ const char *filename)
{
GtkFileChooserNative *native;
EditorWindow *window;
@@ -932,6 +933,24 @@ _editor_page_save_as (EditorPage *self)
_editor_file_chooser_add_line_endings (GTK_FILE_CHOOSER (native),
_editor_document_get_newline_type (self->document));
+ if (filename != NULL)
+ {
+ GFile *file = editor_document_get_file (self->document);
+ g_autoptr(GFile) selected = NULL;
+
+ if (file != NULL && !g_path_is_absolute (filename))
+ {
+ g_autoptr(GFile) parent = g_file_get_parent (file);
+ selected = g_file_get_child (parent, filename);
+ }
+ else
+ {
+ selected = g_file_new_for_path (filename);
+ }
+
+ gtk_file_chooser_set_file (GTK_FILE_CHOOSER (native), selected, NULL);
+ }
+
g_signal_connect_object (native,
"response",
G_CALLBACK (editor_page_save_as_cb),
diff --git a/src/editor-window-actions.c b/src/editor-window-actions.c
index cde11c0..2d1b2c0 100644
--- a/src/editor-window-actions.c
+++ b/src/editor-window-actions.c
@@ -153,7 +153,7 @@ editor_window_actions_save_as_cb (GtkWidget *widget,
page = editor_window_get_visible_page (self);
if (page != NULL)
- _editor_page_save_as (page);
+ _editor_page_save_as (page, NULL);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]