diff options
author | Christian Hergert <chergert@redhat.com> | 2020-12-02 13:44:23 -0800 |
---|---|---|
committer | Christian Hergert <chergert@redhat.com> | 2020-12-02 19:44:01 -0800 |
commit | 2e52386be525cfdc475794459c521740c6e0baa0 (patch) | |
tree | 6dbcc3ca02b8af66fd66a1452c6514e326bbebc6 | |
parent | 9431c70a6a8b38b220803d82699ff26d2534c145 (diff) | |
download | gtk+-2e52386be525cfdc475794459c521740c6e0baa0.tar.gz |
macos: send focus-out event to windowing
-rw-r--r-- | gdk/macos/gdkmacosdisplay.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gdk/macos/gdkmacosdisplay.c b/gdk/macos/gdkmacosdisplay.c index 1ac55ad82f..9772059bcf 100644 --- a/gdk/macos/gdkmacosdisplay.c +++ b/gdk/macos/gdkmacosdisplay.c @@ -519,23 +519,30 @@ void _gdk_macos_display_surface_resigned_key (GdkMacosDisplay *self, GdkMacosSurface *surface) { + gboolean was_keyboard_surface; + g_return_if_fail (GDK_IS_MACOS_DISPLAY (self)); g_return_if_fail (GDK_IS_MACOS_SURFACE (surface)); - if (self->keyboard_surface == surface) + was_keyboard_surface = self->keyboard_surface == surface; + + self->keyboard_surface = NULL; + + if (was_keyboard_surface) { GdkDevice *keyboard; GdkEvent *event; GdkSeat *seat; + GList *node; seat = gdk_display_get_default_seat (GDK_DISPLAY (self)); keyboard = gdk_seat_get_keyboard (seat); event = gdk_focus_event_new (GDK_SURFACE (surface), keyboard, FALSE); - _gdk_event_queue_append (GDK_DISPLAY (self), event); + node = _gdk_event_queue_append (GDK_DISPLAY (self), event); + _gdk_windowing_got_event (GDK_DISPLAY (self), node, event, + _gdk_display_get_next_serial (GDK_DISPLAY (self))); } - self->keyboard_surface = NULL; - _gdk_macos_display_clear_sorting (self); } |