This only handled the popover case before and not the transient-for case.
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];
}