Commit 6022ed5b62b0fbd1328a838870dfea9c25fe9a93

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

Improving "save-settings" engine.

src/dialogs/settings/dialog.c
... ... @@ -149,14 +149,6 @@ static void revert_settings(GtkWidget *widget, GtkWidget G_GNUC_UNUSED(* termina
149 149 v3270_settings_revert(widget);
150 150 }
151 151  
152   -static gboolean bg_emit_save_settings(GObject *widget)
153   -{
154   - debug("Unfreezing and emitting save settings for terminal %p",widget);
155   - GTK_V3270(widget)->freeze = 0;
156   - g_signal_emit(widget,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE);
157   - return FALSE;
158   -}
159   -
160 152 void v3270_settings_dialog_apply(GtkWidget *dialog)
161 153 {
162 154 debug("%s",__FUNCTION__);
... ... @@ -165,6 +157,14 @@ void v3270_settings_dialog_apply(GtkWidget *dialog)
165 157 if(!terminal)
166 158 return;
167 159  
  160 + GdkWindow * window = gtk_widget_get_window(dialog);
  161 + gdk_window_set_cursor(
  162 + window,
  163 + GTK_V3270_GET_CLASS(terminal)->cursors[LIB3270_POINTER_WAITING]
  164 + );
  165 +
  166 + gdk_display_sync(gtk_widget_get_display(dialog));
  167 +
168 168 // Freeze to avoid multiple "save settings" signals.
169 169 GTK_V3270(terminal)->freeze = 1;
170 170  
... ... @@ -174,8 +174,14 @@ void v3270_settings_dialog_apply(GtkWidget *dialog)
174 174 terminal
175 175 );
176 176  
177   - // Delay the "unfreeze" signal.
178   - g_idle_add((GSourceFunc) bg_emit_save_settings, G_OBJECT(terminal));
  177 + // Don't delay save settings signal!
  178 + GTK_V3270(terminal)->freeze = 0;
  179 + g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE);
  180 +
  181 + gdk_window_set_cursor(
  182 + window,
  183 + NULL
  184 + );
179 185  
180 186 }
181 187  
... ...
src/terminal/widget.c
... ... @@ -242,38 +242,38 @@ static void v3270_class_init(v3270Class *klass)
242 242 // http://www.functionx.com/win32/Lesson02b.htm
243 243 static const gchar * cr[LIB3270_POINTER_COUNT] =
244 244 {
245   - "ibeam", // V3270_CURSOR_UNPROTECTED
246   - "wait", // V3270_CURSOR_WAITING
247   - "arrow", // V3270_CURSOR_LOCKED
248   - "arrow", // V3270_CURSOR_PROTECTED
249   - "hand", // V3270_CURSOR_MOVE_SELECTION
250   - "sizenwse", // V3270_CURSOR_SELECTION_TOP_LEFT
251   - "sizenesw", // V3270_CURSOR_SELECTION_TOP_RIGHT
252   - "sizens", // V3270_CURSOR_SELECTION_TOP
253   - "sizenesw", // V3270_CURSOR_SELECTION_BOTTOM_LEFT
254   - "sizenwse", // V3270_CURSOR_SELECTION_BOTTOM_RIGHT
255   - "sizens", // V3270_CURSOR_SELECTION_BOTTOM
256   - "sizewe", // V3270_CURSOR_SELECTION_LEFT
257   - "sizewe", // V3270_CURSOR_SELECTION_RIGHT
258   - "help", // V3270_CURSOR_QUESTION
  245 + "ibeam", // LIB3270_POINTER_UNLOCKED
  246 + "wait", // LIB3270_POINTER_WAITING
  247 + "arrow", // LIB3270_POINTER_LOCKED
  248 + "arrow", // LIB3270_POINTER_PROTECTED
  249 + "hand", // LIB3270_POINTER_MOVE_SELECTION
  250 + "sizenwse", // LIB3270_POINTER_SELECTION_TOP_LEFT
  251 + "sizenesw", // LIB3270_POINTER_SELECTION_TOP_RIGHT
  252 + "sizens", // LIB3270_POINTER_SELECTION_TOP
  253 + "sizenesw", // LIB3270_POINTER_SELECTION_BOTTOM_LEFT
  254 + "sizenwse", // LIB3270_POINTER_SELECTION_BOTTOM_RIGHT
  255 + "sizens", // LIB3270_POINTER_SELECTION_BOTTOM
  256 + "sizewe", // LIB3270_POINTER_SELECTION_LEFT
  257 + "sizewe", // LIB3270_POINTER_SELECTION_RIGHT
  258 + "help", // LIB3270_POINTER_QUESTION
259 259 };
260 260 #else
261 261 static const int cr[LIB3270_POINTER_COUNT] =
262 262 {
263   - GDK_XTERM, // V3270_CURSOR_UNPROTECTED
264   - GDK_WATCH, // V3270_CURSOR_WAITING
265   - GDK_X_CURSOR, // V3270_CURSOR_LOCKED
266   - GDK_ARROW, // V3270_CURSOR_PROTECTED
267   - GDK_HAND1, // V3270_CURSOR_MOVE_SELECTION
268   - GDK_TOP_LEFT_CORNER, // V3270_CURSOR_SELECTION_TOP_LEFT
269   - GDK_TOP_RIGHT_CORNER, // V3270_CURSOR_SELECTION_TOP_RIGHT
270   - GDK_TOP_SIDE, // V3270_CURSOR_SELECTION_TOP
271   - GDK_BOTTOM_LEFT_CORNER, // V3270_CURSOR_SELECTION_BOTTOM_LEFT
272   - GDK_BOTTOM_RIGHT_CORNER, // V3270_CURSOR_SELECTION_BOTTOM_RIGHT
273   - GDK_BOTTOM_SIDE, // V3270_CURSOR_SELECTION_BOTTOM
274   - GDK_LEFT_SIDE, // V3270_CURSOR_SELECTION_LEFT
275   - GDK_RIGHT_SIDE, // V3270_CURSOR_SELECTION_RIGHT
276   - GDK_QUESTION_ARROW, // V3270_CURSOR_QUESTION
  263 + GDK_XTERM, // LIB3270_POINTER_UNLOCKED
  264 + GDK_WATCH, // LIB3270_POINTER_WAITING
  265 + GDK_X_CURSOR, // LIB3270_POINTER_LOCKED
  266 + GDK_ARROW, // LIB3270_POINTER_PROTECTED
  267 + GDK_HAND1, // LIB3270_POINTER_MOVE_SELECTION
  268 + GDK_TOP_LEFT_CORNER, // LIB3270_POINTER_SELECTION_TOP_LEFT
  269 + GDK_TOP_RIGHT_CORNER, // LIB3270_POINTER_SELECTION_TOP_RIGHT
  270 + GDK_TOP_SIDE, // LIB3270_POINTER_SELECTION_TOP
  271 + GDK_BOTTOM_LEFT_CORNER, // LIB3270_POINTER_SELECTION_BOTTOM_LEFT
  272 + GDK_BOTTOM_RIGHT_CORNER, // LIB3270_POINTER_SELECTION_BOTTOM_RIGHT
  273 + GDK_BOTTOM_SIDE, // LIB3270_POINTER_SELECTION_BOTTOM
  274 + GDK_LEFT_SIDE, // LIB3270_POINTER_SELECTION_LEFT
  275 + GDK_RIGHT_SIDE, // LIB3270_POINTER_SELECTION_RIGHT
  276 + GDK_QUESTION_ARROW, // LIB3270_POINTER_QUESTION
277 277 };
278 278 #endif // WIN32
279 279  
... ...