Commit 4c0b7333df1d53992a69d3e35485678d2462e7dd
1 parent
b2f7d539
Exists in
master
and in
1 other branch
Disabling "save-settings" signal on every toggle change for performance
reasons.
Showing
7 changed files
with
12 additions
and
10 deletions
Show diff stats
src/include/terminal.h
| @@ -152,7 +152,6 @@ G_BEGIN_DECLS | @@ -152,7 +152,6 @@ G_BEGIN_DECLS | ||
| 152 | int scaled_fonts : 1; /// @brief Use scaled fonts | 152 | int scaled_fonts : 1; /// @brief Use scaled fonts |
| 153 | int drawing : 1; /// @brief Draw widget? | 153 | int drawing : 1; /// @brief Draw widget? |
| 154 | int freeze : 1; /// @brief Truee when the "save settings" signal is disabled. | 154 | int freeze : 1; /// @brief Truee when the "save settings" signal is disabled. |
| 155 | - int save_settings : 1; /// @brief The settings were changed. | ||
| 156 | 155 | ||
| 157 | /// @brief Action properties. | 156 | /// @brief Action properties. |
| 158 | GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM]; | 157 | GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM]; |
src/terminal/callbacks.c
| @@ -87,10 +87,6 @@ static gboolean bg_update_message(H3270 *session) | @@ -87,10 +87,6 @@ static gboolean bg_update_message(H3270 *session) | ||
| 87 | ); | 87 | ); |
| 88 | 88 | ||
| 89 | //trace("-----B %s %p",__FUNCTION__, lib3270_get_user_data(session)); | 89 | //trace("-----B %s %p",__FUNCTION__, lib3270_get_user_data(session)); |
| 90 | - | ||
| 91 | - if(terminal->save_settings) | ||
| 92 | - v3270_emit_save_settings(GTK_WIDGET(terminal)); | ||
| 93 | - | ||
| 94 | return FALSE; | 90 | return FALSE; |
| 95 | } | 91 | } |
| 96 | 92 |
src/terminal/font/properties.c
| @@ -122,6 +122,7 @@ LIB3270_EXPORT void v3270_set_font_family(GtkWidget *widget, const gchar *name) | @@ -122,6 +122,7 @@ LIB3270_EXPORT void v3270_set_font_family(GtkWidget *widget, const gchar *name) | ||
| 122 | 122 | ||
| 123 | void v3270_notify_setting(GtkWidget *widget, V3270_SETTING id) | 123 | void v3270_notify_setting(GtkWidget *widget, V3270_SETTING id) |
| 124 | { | 124 | { |
| 125 | + debug("%s(%u)",__FUNCTION__,(unsigned int) id); | ||
| 125 | g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.settings[id]); | 126 | g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.settings[id]); |
| 126 | v3270_emit_save_settings(widget); | 127 | v3270_emit_save_settings(widget); |
| 127 | } | 128 | } |
src/terminal/keyboard/keyfile.c
| @@ -65,7 +65,7 @@ | @@ -65,7 +65,7 @@ | ||
| 65 | if(!key) | 65 | if(!key) |
| 66 | return; | 66 | return; |
| 67 | 67 | ||
| 68 | - debug("%s=%s",v3270_accelerator_get_name(accel),keys); | 68 | +// debug("%s=%s",v3270_accelerator_get_name(accel),keys); |
| 69 | 69 | ||
| 70 | g_key_file_set_string( | 70 | g_key_file_set_string( |
| 71 | ((struct Args *) ptr)->key_file, | 71 | ((struct Args *) ptr)->key_file, |
| @@ -130,7 +130,7 @@ | @@ -130,7 +130,7 @@ | ||
| 130 | return; | 130 | return; |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | - debug("Recreating accelerators for action \"%s\"",v3270_accelerator_get_name(accel)); | 133 | +// debug("Recreating accelerators for action \"%s\"",v3270_accelerator_get_name(accel)); |
| 134 | 134 | ||
| 135 | { | 135 | { |
| 136 | size_t ix; | 136 | size_t ix; |
| @@ -190,6 +190,9 @@ | @@ -190,6 +190,9 @@ | ||
| 190 | if(!keys) | 190 | if(!keys) |
| 191 | return FALSE; | 191 | return FALSE; |
| 192 | 192 | ||
| 193 | + g_object_freeze_notify(G_OBJECT(widget)); | ||
| 194 | + terminal->freeze = 1; | ||
| 195 | + | ||
| 193 | size_t ix; | 196 | size_t ix; |
| 194 | for(ix = 0; keys[ix]; ix++) | 197 | for(ix = 0; keys[ix]; ix++) |
| 195 | { | 198 | { |
| @@ -204,5 +207,8 @@ | @@ -204,5 +207,8 @@ | ||
| 204 | 207 | ||
| 205 | v3270_accelerator_map_sort(terminal); | 208 | v3270_accelerator_map_sort(terminal); |
| 206 | 209 | ||
| 210 | + g_object_thaw_notify(G_OBJECT(widget)); | ||
| 211 | + terminal->freeze = 0; | ||
| 212 | + | ||
| 207 | return TRUE; | 213 | return TRUE; |
| 208 | } | 214 | } |
src/terminal/keyfile.c
| @@ -261,6 +261,7 @@ | @@ -261,6 +261,7 @@ | ||
| 261 | group_name = "terminal"; | 261 | group_name = "terminal"; |
| 262 | 262 | ||
| 263 | g_object_freeze_notify(G_OBJECT(widget)); | 263 | g_object_freeze_notify(G_OBJECT(widget)); |
| 264 | + terminal->freeze = 1; | ||
| 264 | 265 | ||
| 265 | // Load Toggles | 266 | // Load Toggles |
| 266 | for(ix = 0; ix < G_N_ELEMENTS(klass->properties.toggle); ix++) | 267 | for(ix = 0; ix < G_N_ELEMENTS(klass->properties.toggle); ix++) |
| @@ -275,6 +276,7 @@ | @@ -275,6 +276,7 @@ | ||
| 275 | load_by_pspec(widget,klass->properties.settings[ix],key_file,group_name); | 276 | load_by_pspec(widget,klass->properties.settings[ix],key_file,group_name); |
| 276 | 277 | ||
| 277 | g_object_thaw_notify(G_OBJECT(widget)); | 278 | g_object_thaw_notify(G_OBJECT(widget)); |
| 279 | + terminal->freeze = 0; | ||
| 278 | 280 | ||
| 279 | return TRUE; | 281 | return TRUE; |
| 280 | } | 282 | } |
src/terminal/toggles.c
| @@ -126,7 +126,6 @@ void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char | @@ -126,7 +126,6 @@ void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char | ||
| 126 | g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) id, (gboolean) (value != 0), (gchar *) name); | 126 | g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) id, (gboolean) (value != 0), (gchar *) name); |
| 127 | 127 | ||
| 128 | // Can't emit the signal on every toggle change because, sometimes, the saving of the settings file takes time. | 128 | // Can't emit the signal on every toggle change because, sometimes, the saving of the settings file takes time. |
| 129 | - GTK_V3270(widget)->save_settings = 1; | ||
| 130 | // v3270_emit_save_settings(widget); | 129 | // v3270_emit_save_settings(widget); |
| 131 | 130 | ||
| 132 | } | 131 | } |
src/terminal/widget.c
| @@ -493,6 +493,7 @@ static void v3270_init(v3270 *widget) | @@ -493,6 +493,7 @@ static void v3270_init(v3270 *widget) | ||
| 493 | 493 | ||
| 494 | widget->host = lib3270_session_new(NULL); | 494 | widget->host = lib3270_session_new(NULL); |
| 495 | lib3270_set_user_data(widget->host,widget); | 495 | lib3270_set_user_data(widget->host,widget); |
| 496 | + lib3270_set_url(widget->host,NULL); | ||
| 496 | 497 | ||
| 497 | // Install callbacks | 498 | // Install callbacks |
| 498 | v3270_install_callbacks(widget); | 499 | v3270_install_callbacks(widget); |
| @@ -789,8 +790,6 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget) | @@ -789,8 +790,6 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget) | ||
| 789 | static gboolean bg_emit_save_settings(v3270 *terminal) | 790 | static gboolean bg_emit_save_settings(v3270 *terminal) |
| 790 | { | 791 | { |
| 791 | terminal->freeze = 0; | 792 | terminal->freeze = 0; |
| 792 | - terminal->save_settings = 0; | ||
| 793 | - | ||
| 794 | g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE); | 793 | g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE); |
| 795 | g_object_unref(terminal); | 794 | g_object_unref(terminal); |
| 796 | return FALSE; | 795 | return FALSE; |