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,10 +279,7 @@ void pw3270_session_config_save()
279 if(keyfilename) 279 if(keyfilename)
280 { 280 {
281 g_message( _("Saving %s"), keyfilename); 281 g_message( _("Saving %s"), keyfilename);
282 -  
283 g_file_set_contents(keyfilename,text,-1,&error); 282 g_file_set_contents(keyfilename,text,-1,&error);
284 - g_free(keyfilename);  
285 - keyfilename = 0;  
286 } 283 }
287 else 284 else
288 { 285 {
src/pw3270/linux/settings.c
@@ -34,6 +34,7 @@ @@ -34,6 +34,7 @@
34 34
35 /*--[ Implement ]------------------------------------------------------------------------------------*/ 35 /*--[ Implement ]------------------------------------------------------------------------------------*/
36 36
  37 +/*
37 void load_terminal_settings(GtkWidget *widget) 38 void load_terminal_settings(GtkWidget *widget)
38 { 39 {
39 GError *error = NULL; 40 GError *error = NULL;
@@ -103,3 +104,4 @@ @@ -103,3 +104,4 @@
103 104
104 } 105 }
105 106
  107 +*/
src/pw3270/private.h
@@ -100,7 +100,7 @@ @@ -100,7 +100,7 @@
100 // Settings 100 // Settings
101 101
102 /// @brief Load terminal settings from system and session files. 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 #endif // PRIVATE_H_INCLUDED 105 #endif // PRIVATE_H_INCLUDED
106 106
src/pw3270/window.c
@@ -404,10 +404,10 @@ static GtkWidget * trace_window = NULL; @@ -404,10 +404,10 @@ static GtkWidget * trace_window = NULL;
404 404
405 static void save_terminal_settings(GtkWidget *widget, GtkWidget *window) 405 static void save_terminal_settings(GtkWidget *widget, GtkWidget *window)
406 { 406 {
407 - debug("%s",__FUNCTION__);  
408 407
409 GKeyFile * keyfile = pw3270_session_config_get(FALSE); 408 GKeyFile * keyfile = pw3270_session_config_get(FALSE);
410 409
  410 + debug("%s keyfile=%p",__FUNCTION__,keyfile);
411 if(keyfile) 411 if(keyfile)
412 { 412 {
413 v3270_to_key_file(widget, keyfile, "terminal"); 413 v3270_to_key_file(widget, keyfile, "terminal");
@@ -777,7 +777,34 @@ static GtkWidget * trace_window = NULL; @@ -777,7 +777,34 @@ static GtkWidget * trace_window = NULL;
777 host = v3270_get_session(widget->terminal); 777 host = v3270_get_session(widget->terminal);
778 778
779 // Load terminal settings before connecting the signals. 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 g_object_set_data_full(G_OBJECT(widget->terminal),"toggle_actions",g_new0(GtkAction *,LIB3270_TOGGLE_COUNT),g_free); 809 g_object_set_data_full(G_OBJECT(widget->terminal),"toggle_actions",g_new0(GtkAction *,LIB3270_TOGGLE_COUNT),g_free);
783 g_object_set_data_full(G_OBJECT(widget->terminal),"named_actions",(gpointer) action, (GDestroyNotify) g_free); 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,6 +34,7 @@
34 34
35 /*--[ Implement ]------------------------------------------------------------------------------------*/ 35 /*--[ Implement ]------------------------------------------------------------------------------------*/
36 36
  37 +/*
37 void load_terminal_settings(GtkWidget *widget) 38 void load_terminal_settings(GtkWidget *widget)
38 { 39 {
39 static HKEY predefined[] = { HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER }; 40 static HKEY predefined[] = { HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER };
@@ -53,4 +54,4 @@ @@ -53,4 +54,4 @@
53 54
54 55
55 } 56 }
56 - 57 +*/