Commit fae87c18af47669b5e576a13a787ff587b3a5b13
1 parent
51e90127
Exists in
v5.2
Fixing delayed saving of customized session file.
Showing
5 changed files
with
34 additions
and
7 deletions
Show diff stats
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 | +*/ |