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 | 152 | int scaled_fonts : 1; /// @brief Use scaled fonts |
| 153 | 153 | int drawing : 1; /// @brief Draw widget? |
| 154 | 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 | 156 | /// @brief Action properties. |
| 158 | 157 | GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM]; | ... | ... |
src/terminal/callbacks.c
| ... | ... | @@ -87,10 +87,6 @@ static gboolean bg_update_message(H3270 *session) |
| 87 | 87 | ); |
| 88 | 88 | |
| 89 | 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 | 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 | 122 | |
| 123 | 123 | void v3270_notify_setting(GtkWidget *widget, V3270_SETTING id) |
| 124 | 124 | { |
| 125 | + debug("%s(%u)",__FUNCTION__,(unsigned int) id); | |
| 125 | 126 | g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.settings[id]); |
| 126 | 127 | v3270_emit_save_settings(widget); |
| 127 | 128 | } | ... | ... |
src/terminal/keyboard/keyfile.c
| ... | ... | @@ -65,7 +65,7 @@ |
| 65 | 65 | if(!key) |
| 66 | 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 | 70 | g_key_file_set_string( |
| 71 | 71 | ((struct Args *) ptr)->key_file, |
| ... | ... | @@ -130,7 +130,7 @@ |
| 130 | 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 | 136 | size_t ix; |
| ... | ... | @@ -190,6 +190,9 @@ |
| 190 | 190 | if(!keys) |
| 191 | 191 | return FALSE; |
| 192 | 192 | |
| 193 | + g_object_freeze_notify(G_OBJECT(widget)); | |
| 194 | + terminal->freeze = 1; | |
| 195 | + | |
| 193 | 196 | size_t ix; |
| 194 | 197 | for(ix = 0; keys[ix]; ix++) |
| 195 | 198 | { |
| ... | ... | @@ -204,5 +207,8 @@ |
| 204 | 207 | |
| 205 | 208 | v3270_accelerator_map_sort(terminal); |
| 206 | 209 | |
| 210 | + g_object_thaw_notify(G_OBJECT(widget)); | |
| 211 | + terminal->freeze = 0; | |
| 212 | + | |
| 207 | 213 | return TRUE; |
| 208 | 214 | } | ... | ... |
src/terminal/keyfile.c
| ... | ... | @@ -261,6 +261,7 @@ |
| 261 | 261 | group_name = "terminal"; |
| 262 | 262 | |
| 263 | 263 | g_object_freeze_notify(G_OBJECT(widget)); |
| 264 | + terminal->freeze = 1; | |
| 264 | 265 | |
| 265 | 266 | // Load Toggles |
| 266 | 267 | for(ix = 0; ix < G_N_ELEMENTS(klass->properties.toggle); ix++) |
| ... | ... | @@ -275,6 +276,7 @@ |
| 275 | 276 | load_by_pspec(widget,klass->properties.settings[ix],key_file,group_name); |
| 276 | 277 | |
| 277 | 278 | g_object_thaw_notify(G_OBJECT(widget)); |
| 279 | + terminal->freeze = 0; | |
| 278 | 280 | |
| 279 | 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 | 126 | g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) id, (gboolean) (value != 0), (gchar *) name); |
| 127 | 127 | |
| 128 | 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 | 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 | 493 | |
| 494 | 494 | widget->host = lib3270_session_new(NULL); |
| 495 | 495 | lib3270_set_user_data(widget->host,widget); |
| 496 | + lib3270_set_url(widget->host,NULL); | |
| 496 | 497 | |
| 497 | 498 | // Install callbacks |
| 498 | 499 | v3270_install_callbacks(widget); |
| ... | ... | @@ -789,8 +790,6 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget) |
| 789 | 790 | static gboolean bg_emit_save_settings(v3270 *terminal) |
| 790 | 791 | { |
| 791 | 792 | terminal->freeze = 0; |
| 792 | - terminal->save_settings = 0; | |
| 793 | - | |
| 794 | 793 | g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE); |
| 795 | 794 | g_object_unref(terminal); |
| 796 | 795 | return FALSE; | ... | ... |