qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] ui/cocoa: Fix window clipping on macOS 14
@ 2024-02-24 14:06 David Parsons
  2024-02-24 14:19 ` Akihiko Odaki
  2024-02-26  8:11 ` Philippe Mathieu-Daudé
  0 siblings, 2 replies; 3+ messages in thread
From: David Parsons @ 2024-02-24 14:06 UTC (permalink / raw)
  To: qemu-devel
  Cc: qemu-trivial, akihiko.odaki, mjt, philmd, kraxel,
	marcandre.lureau, David Parsons

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>
---
 ui/cocoa.m | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/ui/cocoa.m b/ui/cocoa.m
index eb99064bee..bbf9704b8c 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
@@ -365,6 +369,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;
-- 
2.39.3 (Apple Git-145)



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] ui/cocoa: Fix window clipping on macOS 14
  2024-02-24 14:06 [PATCH v2] ui/cocoa: Fix window clipping on macOS 14 David Parsons
@ 2024-02-24 14:19 ` Akihiko Odaki
  2024-02-26  8:11 ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 3+ messages in thread
From: Akihiko Odaki @ 2024-02-24 14:19 UTC (permalink / raw)
  To: David Parsons, qemu-devel
  Cc: qemu-trivial, mjt, philmd, kraxel, marcandre.lureau

On 2024/02/24 23:06, David Parsons wrote:
> 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>

> ---
>   ui/cocoa.m | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/ui/cocoa.m b/ui/cocoa.m
> index eb99064bee..bbf9704b8c 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
> @@ -365,6 +369,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;


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] ui/cocoa: Fix window clipping on macOS 14
  2024-02-24 14:06 [PATCH v2] ui/cocoa: Fix window clipping on macOS 14 David Parsons
  2024-02-24 14:19 ` Akihiko Odaki
@ 2024-02-26  8:11 ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 3+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-02-26  8:11 UTC (permalink / raw)
  To: David Parsons, qemu-devel
  Cc: qemu-trivial, akihiko.odaki, mjt, kraxel, marcandre.lureau

On 24/2/24 15:06, David Parsons wrote:
> 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>
> ---
>   ui/cocoa.m | 7 +++++++
>   1 file changed, 7 insertions(+)

Patch queued, thanks!


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-02-26  8:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-24 14:06 [PATCH v2] ui/cocoa: Fix window clipping on macOS 14 David Parsons
2024-02-24 14:19 ` Akihiko Odaki
2024-02-26  8:11 ` Philippe Mathieu-Daudé

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).