macos: Fix problem that window cannot be minimized by user operation
Closes #4811
See merge request GNOME/gtk!4613
(cherry picked from commit
d75147db0acd7723732790155fd3a63688193c63)
d3cf7088 macos: Skip running `showAndMakeKey` when a window is minimized by user action
{
GdkMacosSurface *surface = iter->data;
- if (GDK_SURFACE_IS_MAPPED (GDK_SURFACE (surface)))
+ if (GDK_SURFACE_IS_MAPPED (GDK_SURFACE (surface)) &&
+ ([surface->window styleMask] & NSWindowStyleMaskMiniaturizable) == 0)
{
[surface->window showAndMakeKey:YES];
break;
[window zoom:window];
}
+static void
+_gdk_macos_toplevel_surface_unminimize (GdkMacosToplevelSurface *self)
+{
+ NSWindow *window;
+
+ g_assert (GDK_IS_MACOS_TOPLEVEL_SURFACE (self));
+
+ window = _gdk_macos_surface_get_native (GDK_MACOS_SURFACE (self));
+
+ if ([window isMiniaturized])
+ [window deminiaturize:window];
+}
+
static void
_gdk_macos_toplevel_surface_present (GdkToplevel *toplevel,
GdkToplevelLayout *layout)
_gdk_macos_toplevel_surface_unfullscreen (self);
}
+ _gdk_macos_toplevel_surface_unminimize (self);
+
if (!GDK_MACOS_SURFACE (self)->did_initial_present)
{
int x = 0, y = 0;