Commit 6022ed5b62b0fbd1328a838870dfea9c25fe9a93
1 parent
4c0b7333
Exists in
master
and in
1 other branch
Improving "save-settings" engine.
Showing
2 changed files
with
44 additions
and
38 deletions
Show diff stats
src/dialogs/settings/dialog.c
@@ -149,14 +149,6 @@ static void revert_settings(GtkWidget *widget, GtkWidget G_GNUC_UNUSED(* termina | @@ -149,14 +149,6 @@ static void revert_settings(GtkWidget *widget, GtkWidget G_GNUC_UNUSED(* termina | ||
149 | v3270_settings_revert(widget); | 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 | void v3270_settings_dialog_apply(GtkWidget *dialog) | 152 | void v3270_settings_dialog_apply(GtkWidget *dialog) |
161 | { | 153 | { |
162 | debug("%s",__FUNCTION__); | 154 | debug("%s",__FUNCTION__); |
@@ -165,6 +157,14 @@ void v3270_settings_dialog_apply(GtkWidget *dialog) | @@ -165,6 +157,14 @@ void v3270_settings_dialog_apply(GtkWidget *dialog) | ||
165 | if(!terminal) | 157 | if(!terminal) |
166 | return; | 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 | // Freeze to avoid multiple "save settings" signals. | 168 | // Freeze to avoid multiple "save settings" signals. |
169 | GTK_V3270(terminal)->freeze = 1; | 169 | GTK_V3270(terminal)->freeze = 1; |
170 | 170 | ||
@@ -174,8 +174,14 @@ void v3270_settings_dialog_apply(GtkWidget *dialog) | @@ -174,8 +174,14 @@ void v3270_settings_dialog_apply(GtkWidget *dialog) | ||
174 | terminal | 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,38 +242,38 @@ static void v3270_class_init(v3270Class *klass) | ||
242 | // http://www.functionx.com/win32/Lesson02b.htm | 242 | // http://www.functionx.com/win32/Lesson02b.htm |
243 | static const gchar * cr[LIB3270_POINTER_COUNT] = | 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 | #else | 260 | #else |
261 | static const int cr[LIB3270_POINTER_COUNT] = | 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 | #endif // WIN32 | 278 | #endif // WIN32 |
279 | 279 |