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 | 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 | ... | ... |