Commit fae87c18af47669b5e576a13a787ff587b3a5b13

Authored by Perry Werneck
1 parent 51e90127
Exists in v5.2

Fixing delayed saving of customized session file.

src/pw3270/linux/config.c
... ... @@ -279,10 +279,7 @@ void pw3270_session_config_save()
279 279 if(keyfilename)
280 280 {
281 281 g_message( _("Saving %s"), keyfilename);
282   -
283 282 g_file_set_contents(keyfilename,text,-1,&error);
284   - g_free(keyfilename);
285   - keyfilename = 0;
286 283 }
287 284 else
288 285 {
... ...
src/pw3270/linux/settings.c
... ... @@ -34,6 +34,7 @@
34 34  
35 35 /*--[ Implement ]------------------------------------------------------------------------------------*/
36 36  
  37 +/*
37 38 void load_terminal_settings(GtkWidget *widget)
38 39 {
39 40 GError *error = NULL;
... ... @@ -103,3 +104,4 @@
103 104  
104 105 }
105 106  
  107 +*/
... ...
src/pw3270/private.h
... ... @@ -100,7 +100,7 @@
100 100 // Settings
101 101  
102 102 /// @brief Load terminal settings from system and session files.
103   - G_GNUC_INTERNAL void load_terminal_settings(GtkWidget *widget);
  103 +// G_GNUC_INTERNAL void load_terminal_settings(GtkWidget *widget);
104 104  
105 105 #endif // PRIVATE_H_INCLUDED
106 106  
... ...
src/pw3270/window.c
... ... @@ -404,10 +404,10 @@ static GtkWidget * trace_window = NULL;
404 404  
405 405 static void save_terminal_settings(GtkWidget *widget, GtkWidget *window)
406 406 {
407   - debug("%s",__FUNCTION__);
408 407  
409 408 GKeyFile * keyfile = pw3270_session_config_get(FALSE);
410 409  
  410 + debug("%s keyfile=%p",__FUNCTION__,keyfile);
411 411 if(keyfile)
412 412 {
413 413 v3270_to_key_file(widget, keyfile, "terminal");
... ... @@ -777,7 +777,34 @@ static GtkWidget * trace_window = NULL;
777 777 host = v3270_get_session(widget->terminal);
778 778  
779 779 // Load terminal settings before connecting the signals.
780   - load_terminal_settings(widget->terminal);
  780 + {
  781 + GKeyFile * keyfile = pw3270_session_config_get(FALSE);
  782 +
  783 + if(keyfile)
  784 + {
  785 + v3270_load_key_file(widget->terminal,keyfile,"terminal");
  786 + }
  787 +#ifdef _WIN32
  788 + else
  789 + {
  790 + static HKEY predefined[] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE };
  791 + g_autofree gchar * path = g_strdup_printf("SOFTWARE\\%s",g_get_application_name());
  792 +
  793 + size_t ix;
  794 +
  795 + for(ix=0;ix < G_N_ELEMENTS(predefined); ix++)
  796 + {
  797 + HKEY hKey;
  798 + if(RegOpenKeyEx(predefined[ix],path,0,KEY_READ,&hKey) == ERROR_SUCCESS)
  799 + {
  800 + v3270_load_registry(widget->terminal,hKey,"terminal");
  801 + RegCloseKey(hKey);
  802 + }
  803 + }
  804 + }
  805 +#endif // _WIN32
  806 +
  807 + }
781 808  
782 809 g_object_set_data_full(G_OBJECT(widget->terminal),"toggle_actions",g_new0(GtkAction *,LIB3270_TOGGLE_COUNT),g_free);
783 810 g_object_set_data_full(G_OBJECT(widget->terminal),"named_actions",(gpointer) action, (GDestroyNotify) g_free);
... ...
src/pw3270/windows/settings.c
... ... @@ -34,6 +34,7 @@
34 34  
35 35 /*--[ Implement ]------------------------------------------------------------------------------------*/
36 36  
  37 +/*
37 38 void load_terminal_settings(GtkWidget *widget)
38 39 {
39 40 static HKEY predefined[] = { HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER };
... ... @@ -53,4 +54,4 @@
53 54  
54 55  
55 56 }
56   -
  57 +*/
... ...