From: Christian Hergert Date: Mon, 7 Mar 2022 22:31:23 +0000 (-0800) Subject: macos: do not focus new window when resigning main X-Git-Tag: archive/raspbian/4.6.5+ds-1+rpi1~1^2~19^2~3^2~7^2~15 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=cb386ec2a26de106822c24fd3cc9a276c978d9ad;p=gtk4.git macos: do not focus new window when resigning main This can get in the way of how we track changes while events are actively processing. Instead, we may want to delay this until the next main loop idle and then check to see if we have a main window as the NSNotification may have come in right after this. --- diff --git a/gdk/macos/gdkmacosdisplay.c b/gdk/macos/gdkmacosdisplay.c index 798633f33a..bc58c2a6f3 100644 --- a/gdk/macos/gdkmacosdisplay.c +++ b/gdk/macos/gdkmacosdisplay.c @@ -491,8 +491,6 @@ void _gdk_macos_display_surface_resigned_main (GdkMacosDisplay *self, GdkMacosSurface *surface) { - GdkMacosSurface *new_surface = NULL; - g_return_if_fail (GDK_IS_MACOS_DISPLAY (self)); g_return_if_fail (GDK_IS_MACOS_SURFACE (surface)); @@ -500,40 +498,6 @@ _gdk_macos_display_surface_resigned_main (GdkMacosDisplay *self, g_queue_unlink (&self->main_surfaces, &surface->main); _gdk_macos_display_clear_sorting (self); - - if (GDK_SURFACE (surface)->transient_for && - gdk_surface_get_mapped (GDK_SURFACE (surface)->transient_for)) - { - new_surface = GDK_MACOS_SURFACE (GDK_SURFACE (surface)->transient_for); - } - else - { - const GList *surfaces = _gdk_macos_display_get_surfaces (self); - - for (const GList *iter = surfaces; iter; iter = iter->next) - { - GdkMacosSurface *item = iter->data; - - g_assert (GDK_IS_MACOS_SURFACE (item)); - - if (item == surface) - continue; - - if (GDK_SURFACE_IS_MAPPED (GDK_SURFACE (item))) - { - new_surface = item; - break; - } - } - } - - if (new_surface != NULL) - { - NSWindow *nswindow = _gdk_macos_surface_get_native (new_surface); - [nswindow makeKeyAndOrderFront:nswindow]; - } - - _gdk_macos_display_clear_sorting (self); } static GdkSurface *