# ifdef FEAT_GUI_DIALOG
// Multiple dialogs not allowed, just tracked for future use.
int dialogs_active; // number of active GUI dialogs
-
- // X11 focus_in_event() by dialogs, ignored to match wayland.
+ // Suppress focus-in event when focus returns.
int dialog_focus_pending;
# endif
bool is_x11; // active gdk backend in gtk is x11
DialogInfo dialoginfo;
++gui.dialogs_active;
- if (gui.is_x11)
- ++gui.dialog_focus_pending;
dialog = create_message_dialog(type, title, message);
dialoginfo.dialog = GTK_DIALOG(dialog);
gtk_widget_destroy(dialog);
}
- --gui.dialogs_active;
+ if (gui.dialogs_active > 0)
+ --gui.dialogs_active;
return response > 0 ? response : 0;
}
gpointer data UNUSED)
{
#ifdef FEAT_GUI_DIALOG
- if (gui.is_x11 && gui.dialog_focus_pending > 0)
+ if (gui.dialog_focus_pending > 0)
+ {
--gui.dialog_focus_pending;
+ ++hold_gui_events;
+ gui_focus_change(TRUE);
+ --hold_gui_events;
+ }
else
#endif
gui_focus_change(TRUE);
GdkEventFocus *event UNUSED,
gpointer data UNUSED)
{
+#ifdef FEAT_GUI_DIALOG
+ if (gui.dialogs_active > 0)
+ ++gui.dialog_focus_pending;
+#endif
+
gui_focus_change(FALSE);
if (blink_state != BLINK_NONE)
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 900,
/**/
899,
/**/