diff options
author | Christian Hergert <christian@hergert.me> | 2022-04-04 18:53:19 +0000 |
---|---|---|
committer | Christian Hergert <christian@hergert.me> | 2022-04-04 18:53:19 +0000 |
commit | d75147db0acd7723732790155fd3a63688193c63 (patch) | |
tree | 3c535af7cafda09ed1acc033abf6f747449723e5 | |
parent | 15b7a4572b3a06aefed75bb7989c711763af65f7 (diff) | |
parent | d3cf7088b31965371a11d47a872fa1a4005eaa00 (diff) | |
download | gtk+-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.c | 3 | ||||
-rw-r--r-- | gdk/macos/gdkmacostoplevelsurface.c | 15 |
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; |