diff --git a/app/display/gimpdisplayshell-tool-events.c b/app/display/gimpdisplayshell-tool-events.c index ec54e968a7..0fe9d7ded2 100644 --- a/app/display/gimpdisplayshell-tool-events.c +++ b/app/display/gimpdisplayshell-tool-events.c @@ -339,7 +339,9 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas, display, gimp_print_event (event)); /* Find out what device the event occurred upon */ - if (! gimp->busy && gimp_devices_check_change (gimp, event)) + if (! gimp->busy && + ! shell->inferior_ignore_mode && + gimp_devices_check_change (gimp, event)) { gimp_display_shell_check_device_cursor (shell); device_changed = TRUE; @@ -367,6 +369,13 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas, { GdkEventCrossing *cevent = (GdkEventCrossing *) event; + if (shell->inferior_ignore_mode) + { + shell->inferior_ignore_mode = FALSE; + gtk_widget_set_extension_events (shell->canvas, + GDK_EXTENSION_EVENTS_ALL); + } + if (cevent->mode != GDK_CROSSING_NORMAL) return TRUE; @@ -388,6 +397,13 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas, { GdkEventCrossing *cevent = (GdkEventCrossing *) event; + if (cevent->detail == GDK_NOTIFY_INFERIOR) + { + shell->inferior_ignore_mode = TRUE; + gtk_widget_set_extension_events (shell->canvas, + GDK_EXTENSION_EVENTS_NONE); + } + if (cevent->mode != GDK_CROSSING_NORMAL) return TRUE; diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h index c9b1058c4a..e5074bb885 100644 --- a/app/display/gimpdisplayshell.h +++ b/app/display/gimpdisplayshell.h @@ -174,6 +174,8 @@ struct _GimpDisplayShell gboolean keyboard_grabbed; guint32 keyboard_grab_time; + gboolean inferior_ignore_mode; + gboolean space_pressed; gboolean space_release_pending; const gchar *space_shaded_tool;