Skip to content

Commit

Permalink
ui/cocoa: Fix window clipping on macOS 14
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
DrDonk authored and philmd committed Mar 5, 2024
1 parent e28a909 commit f5af802
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions ui/cocoa.m
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -366,6 +370,9 @@ - (id)initWithFrame:(NSRect)frameRect
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;
Expand Down

0 comments on commit f5af802

Please sign in to comment.