Commit 579c33e27b84a0d6060ee040814ab89a645b481e

Authored by Perry Werneck
1 parent 6a05f9b3

Pre-defining session file name on save dialogs.

src/objects/actions/save.c
... ... @@ -143,14 +143,20 @@
143 143  
144 144 }
145 145  
146   - gtk_entry_bind_to_filechooser(
147   - inputs[1],
148   - GTK_FILE_CHOOSER_ACTION_SAVE,
149   - _("Save session preferences"),
150   - NULL,
151   - "*.3270",
152   - _("3270 session files")
153   - );
  146 + {
  147 + g_autofree gchar * session_filename = v3270_key_file_build_filename(terminal);
  148 + gtk_entry_set_text(GTK_ENTRY(inputs[1]),session_filename);
  149 +
  150 + gtk_entry_bind_to_filechooser(
  151 + inputs[1],
  152 + GTK_FILE_CHOOSER_ACTION_SAVE,
  153 + _("Save session preferences"),
  154 + NULL,
  155 + "*.3270",
  156 + _("3270 session files")
  157 + );
  158 +
  159 + }
154 160  
155 161 g_signal_connect(dialog,"response",G_CALLBACK(response),terminal);
156 162  
... ...
src/objects/os/linux/savedesktopicon.c
... ... @@ -117,6 +117,7 @@
117 117  
118 118 }
119 119  
  120 + /*
120 121 static gchar * get_filename(GtkWidget *terminal) {
121 122  
122 123 g_autofree gchar * defname = v3270_keyfile_get_default_filename();
... ... @@ -148,6 +149,7 @@
148 149 return filename;
149 150  
150 151 }
  152 + */
151 153  
152 154 GtkWidget * factory(V3270SimpleAction *action, GtkWidget *terminal) {
153 155  
... ... @@ -253,7 +255,7 @@
253 255  
254 256 // 3 = Session filename
255 257 {
256   - g_autofree gchar * session_filename = get_filename(terminal);
  258 + g_autofree gchar * session_filename = v3270_key_file_build_filename(terminal);
257 259 gtk_entry_set_text(GTK_ENTRY(inputs[3]),session_filename);
258 260  
259 261 gtk_entry_bind_to_filechooser(
... ...
src/objects/window/keyfile.c
... ... @@ -292,9 +292,12 @@ void v3270_key_file_close(GtkWidget *terminal) {
292 292  
293 293 gchar * v3270_key_file_build_filename(GtkWidget *terminal) {
294 294  
295   - const gchar * filename = v3270_key_file_get_filename(terminal);
296   - if(filename && g_file_test(filename,G_FILE_TEST_IS_REGULAR) && !g_str_has_prefix(filename,g_get_user_config_dir())) {
297   - return g_strdup(filename);
  295 + g_autofree gchar * defname = v3270_keyfile_get_default_filename();
  296 + const gchar * current = v3270_key_file_get_filename(terminal);
  297 +
  298 + // If is not the default name, return it.
  299 + if(current && *current && g_file_test(current,G_FILE_TEST_IS_REGULAR) && strcmp(defname,current)) {
  300 + return g_strdup(current);
298 301 }
299 302  
300 303 g_autofree gchar * folder = v3270_key_file_get_default_path(terminal);
... ...