summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hergert <christian@hergert.me>2022-04-04 18:53:19 +0000
committerChristian Hergert <christian@hergert.me>2022-04-04 18:53:19 +0000
commitd75147db0acd7723732790155fd3a63688193c63 (patch)
tree3c535af7cafda09ed1acc033abf6f747449723e5
parent15b7a4572b3a06aefed75bb7989c711763af65f7 (diff)
parentd3cf7088b31965371a11d47a872fa1a4005eaa00 (diff)
downloadgtk+-d75147db0acd7723732790155fd3a63688193c63.tar.gz
Merge branch 'sumibi-yakitori/fix-minimize-window-macos' into 'main'
macos: Fix problem that window cannot be minimized by user operation Closes #4811 See merge request GNOME/gtk!4613
-rw-r--r--gdk/macos/gdkmacosdisplay.c3
-rw-r--r--gdk/macos/gdkmacostoplevelsurface.c15
2 files changed, 17 insertions, 1 deletions
diff --git a/gdk/macos/gdkmacosdisplay.c b/gdk/macos/gdkmacosdisplay.c
index d85a744563..41be42cfbe 100644
--- a/gdk/macos/gdkmacosdisplay.c
+++ b/gdk/macos/gdkmacosdisplay.c
@@ -434,7 +434,8 @@ select_key_in_idle_cb (gpointer data)
{
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;
diff --git a/gdk/macos/gdkmacostoplevelsurface.c b/gdk/macos/gdkmacostoplevelsurface.c
index aa828fcfa5..54bc4c8af9 100644
--- a/gdk/macos/gdkmacostoplevelsurface.c
+++ b/gdk/macos/gdkmacostoplevelsurface.c
@@ -83,6 +83,19 @@ _gdk_macos_toplevel_surface_unmaximize (GdkMacosToplevelSurface *self)
}
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)
{
@@ -202,6 +215,8 @@ _gdk_macos_toplevel_surface_present (GdkToplevel *toplevel,
_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;