aboutsummaryrefslogtreecommitdiff
path: root/ui/cocoa.m
diff options
context:
space:
mode:
authorDavid Parsons <dave@daveparsons.net>2024-02-24 14:06:20 +0000
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2024-03-05 12:04:41 +0100
commitf5af80271aad356233b2bea2369b3b2211fa395d (patch)
treef332aec5895c57b2981e8d3b361dd0208745550b /ui/cocoa.m
parente28a909a191f00645d101511e5e9e132662aa290 (diff)
downloadqemu-f5af80271aad356233b2bea2369b3b2211fa395d.zip
qemu-f5af80271aad356233b2bea2369b3b2211fa395d.tar.gz
qemu-f5af80271aad356233b2bea2369b3b2211fa395d.tar.bz2
ui/cocoa: Fix window clipping on macOS 14
macOS Sonoma changes the NSView.clipsToBounds to false by default where it was true in earlier version of macOS. This causes the window contents to be occluded by the frame at the top of the window. This fixes the issue by conditionally compiling the clipping on Sonoma to true. NSView only exposes the clipToBounds in macOS 14 and so has to be fixed via conditional compilation. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1994 Signed-off-by: David Parsons <dave@daveparsons.net> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> Message-ID: <20240224140620.39200-1-dave@daveparsons.net> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Diffstat (limited to 'ui/cocoa.m')
-rw-r--r--ui/cocoa.m7
1 files changed, 7 insertions, 0 deletions
diff --git a/ui/cocoa.m b/ui/cocoa.m
index b7ca0ed..5618d29 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -54,6 +54,10 @@
#define MAC_OS_X_VERSION_10_13 101300
#endif
+#ifndef MAC_OS_VERSION_14_0
+#define MAC_OS_VERSION_14_0 140000
+#endif
+
/* 10.14 deprecates NSOnState and NSOffState in favor of
* NSControlStateValueOn/Off, which were introduced in 10.13.
* Define for older versions
@@ -366,6 +370,9 @@ static CGEventRef handleTapEvent(CGEventTapProxy proxy, CGEventType type, CGEven
screen.width = frameRect.size.width;
screen.height = frameRect.size.height;
kbd = qkbd_state_init(dcl.con);
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_14_0
+ [self setClipsToBounds:YES];
+#endif
}
return self;