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
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 | +*/ | ... | ... |