Commit f32a735bdae71dff6ca7a85115349feaf2589ad3

Authored by Perry Werneck
1 parent 4cdb9db3
Exists in master and in 1 other branch develop

Delaying save of settings on toggle change.

src/include/terminal.h
@@ -151,6 +151,7 @@ G_BEGIN_DECLS @@ -151,6 +151,7 @@ G_BEGIN_DECLS
151 int scaled_fonts : 1; /// @brief Use scaled fonts 151 int scaled_fonts : 1; /// @brief Use scaled fonts
152 int drawing : 1; /// @brief Draw widget? 152 int drawing : 1; /// @brief Draw widget?
153 int freeze : 1; /// @brief Truee when the "save settings" signal is disabled. 153 int freeze : 1; /// @brief Truee when the "save settings" signal is disabled.
  154 + int save_settings : 1; /// @brief The settings were changed.
154 155
155 /// @brief Action properties. 156 /// @brief Action properties.
156 GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM]; 157 GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM];
src/terminal/callbacks.c
@@ -77,11 +77,10 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE_ID id, unsigned char va @@ -77,11 +77,10 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE_ID id, unsigned char va
77 77
78 static gboolean bg_update_message(H3270 *session) 78 static gboolean bg_update_message(H3270 *session)
79 { 79 {
80 - void *widget = lib3270_get_user_data(session);  
81 - // trace("-----A %s %p",__FUNCTION__, lib3270_get_user_data(session)); 80 + v3270 *terminal = (v3270 *) lib3270_get_user_data(session);
82 81
83 g_signal_emit( 82 g_signal_emit(
84 - GTK_WIDGET(widget), 83 + terminal,
85 v3270_widget_signal[V3270_SIGNAL_MESSAGE_CHANGED], 84 v3270_widget_signal[V3270_SIGNAL_MESSAGE_CHANGED],
86 0, 85 0,
87 (gint) lib3270_get_program_message(session) 86 (gint) lib3270_get_program_message(session)
@@ -89,6 +88,9 @@ static gboolean bg_update_message(H3270 *session) @@ -89,6 +88,9 @@ static gboolean bg_update_message(H3270 *session)
89 88
90 //trace("-----B %s %p",__FUNCTION__, lib3270_get_user_data(session)); 89 //trace("-----B %s %p",__FUNCTION__, lib3270_get_user_data(session));
91 90
  91 + if(terminal->save_settings)
  92 + v3270_emit_save_settings(GTK_WIDGET(terminal));
  93 +
92 return FALSE; 94 return FALSE;
93 } 95 }
94 96
src/terminal/toggles.c
@@ -122,6 +122,8 @@ void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char @@ -122,6 +122,8 @@ void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char
122 g_object_notify_by_pspec(G_OBJECT(widget), klass->properties.toggle[id]); 122 g_object_notify_by_pspec(G_OBJECT(widget), klass->properties.toggle[id]);
123 g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) id, (gboolean) (value != 0), (gchar *) name); 123 g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) id, (gboolean) (value != 0), (gchar *) name);
124 124
125 - v3270_emit_save_settings(widget); 125 + // Can't emit the signal on every toggle change because, sometimes, the saving of the settings file takes time.
  126 + GTK_V3270(widget)->save_settings = 1;
  127 +// v3270_emit_save_settings(widget);
126 128
127 } 129 }
src/terminal/widget.c
@@ -773,11 +773,13 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget) @@ -773,11 +773,13 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget)
773 return GTK_V3270(widget)->input_method; 773 return GTK_V3270(widget)->input_method;
774 } 774 }
775 775
776 -static gboolean bg_emit_save_settings(GObject *widget) 776 +static gboolean bg_emit_save_settings(v3270 *terminal)
777 { 777 {
778 - GTK_V3270(widget)->freeze = 0;  
779 - g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE);  
780 - g_object_unref(widget); 778 + terminal->freeze = 0;
  779 + terminal->save_settings = 0;
  780 +
  781 + g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE);
  782 + g_object_unref(terminal);
781 return FALSE; 783 return FALSE;
782 } 784 }
783 785