From 579c33e27b84a0d6060ee040814ab89a645b481e Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Sun, 27 Sep 2020 11:20:58 -0300 Subject: [PATCH] Pre-defining session file name on save dialogs. --- src/objects/actions/save.c | 22 ++++++++++++++-------- src/objects/os/linux/savedesktopicon.c | 4 +++- src/objects/window/keyfile.c | 9 ++++++--- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/objects/actions/save.c b/src/objects/actions/save.c index e8513e6..388a2c0 100644 --- a/src/objects/actions/save.c +++ b/src/objects/actions/save.c @@ -143,14 +143,20 @@ } - gtk_entry_bind_to_filechooser( - inputs[1], - GTK_FILE_CHOOSER_ACTION_SAVE, - _("Save session preferences"), - NULL, - "*.3270", - _("3270 session files") - ); + { + g_autofree gchar * session_filename = v3270_key_file_build_filename(terminal); + gtk_entry_set_text(GTK_ENTRY(inputs[1]),session_filename); + + gtk_entry_bind_to_filechooser( + inputs[1], + GTK_FILE_CHOOSER_ACTION_SAVE, + _("Save session preferences"), + NULL, + "*.3270", + _("3270 session files") + ); + + } g_signal_connect(dialog,"response",G_CALLBACK(response),terminal); diff --git a/src/objects/os/linux/savedesktopicon.c b/src/objects/os/linux/savedesktopicon.c index afa4990..9ea701c 100644 --- a/src/objects/os/linux/savedesktopicon.c +++ b/src/objects/os/linux/savedesktopicon.c @@ -117,6 +117,7 @@ } + /* static gchar * get_filename(GtkWidget *terminal) { g_autofree gchar * defname = v3270_keyfile_get_default_filename(); @@ -148,6 +149,7 @@ return filename; } + */ GtkWidget * factory(V3270SimpleAction *action, GtkWidget *terminal) { @@ -253,7 +255,7 @@ // 3 = Session filename { - g_autofree gchar * session_filename = get_filename(terminal); + g_autofree gchar * session_filename = v3270_key_file_build_filename(terminal); gtk_entry_set_text(GTK_ENTRY(inputs[3]),session_filename); gtk_entry_bind_to_filechooser( diff --git a/src/objects/window/keyfile.c b/src/objects/window/keyfile.c index 6a08473..fb4967b 100644 --- a/src/objects/window/keyfile.c +++ b/src/objects/window/keyfile.c @@ -292,9 +292,12 @@ void v3270_key_file_close(GtkWidget *terminal) { gchar * v3270_key_file_build_filename(GtkWidget *terminal) { - const gchar * filename = v3270_key_file_get_filename(terminal); - if(filename && g_file_test(filename,G_FILE_TEST_IS_REGULAR) && !g_str_has_prefix(filename,g_get_user_config_dir())) { - return g_strdup(filename); + g_autofree gchar * defname = v3270_keyfile_get_default_filename(); + const gchar * current = v3270_key_file_get_filename(terminal); + + // If is not the default name, return it. + if(current && *current && g_file_test(current,G_FILE_TEST_IS_REGULAR) && strcmp(defname,current)) { + return g_strdup(current); } g_autofree gchar * folder = v3270_key_file_get_default_path(terminal); -- libgit2 0.21.2