macos: make transient-for key window when hiding surface
authorChristian Hergert <christian@hergert.me>
Thu, 10 Mar 2022 16:04:14 +0000 (08:04 -0800)
committerChristian Hergert <chergert@redhat.com>
Wed, 16 Mar 2022 19:25:10 +0000 (12:25 -0700)
This only handled the popover case before and not the transient-for case.

gdk/macos/gdkmacossurface.c

index 6c116ed8178581679c414802b59ea0cacba73646..449a3b35a510e26783a785bb69b61d2afa50217b 100644 (file)
@@ -219,10 +219,17 @@ gdk_macos_surface_hide (GdkSurface *surface)
 
   if (was_key)
     {
+      GdkSurface *parent;
+
+      if (GDK_IS_TOPLEVEL (surface))
+        parent = surface->transient_for;
+      else
+        parent = surface->parent;
+
       /* Return key input to the parent window if necessary */
-      if (surface->parent != NULL && GDK_SURFACE_IS_MAPPED (surface->parent))
+      if (parent != NULL && GDK_SURFACE_IS_MAPPED (parent))
         {
-          GdkMacosWindow *parentWindow = GDK_MACOS_SURFACE (surface->parent)->window;
+          GdkMacosWindow *parentWindow = GDK_MACOS_SURFACE (parent)->window;
 
           [parentWindow showAndMakeKey:YES];
         }