On Sat, 24 Feb 2024, Akihiko Odaki wrote:
On 2024/02/23 1:53, Peter Maydell wrote:
On Sat, 17 Feb 2024 at 11:19, Akihiko Odaki <akihiko.od...@daynix.com> wrote:

Evaluate [normalWindow styleMask] & NSWindowStyleMaskResizable instead.

Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com>
---
  ui/cocoa.m | 11 ++++-------
  1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/ui/cocoa.m b/ui/cocoa.m
index 81de8d92669b..401ed0c3f1f5 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -103,7 +103,6 @@ static void cocoa_switch(DisplayChangeListener *dcl,
  static int left_command_key_enabled = 1;
  static bool swap_opt_cmd;

-static bool stretch_video;
  static NSTextField *pauseLabel;

  static bool allow_events;
@@ -533,7 +532,7 @@ - (void) resizeWindow
  {
[[self window] setContentAspectRatio:NSMakeSize(screen.width, screen.height)];

-    if (!stretch_video) {
+    if (!([[self window] styleMask] & NSWindowStyleMaskResizable)) {
[[self window] setContentSize:NSMakeSize(screen.width, screen.height)];
          [[self window] center];
} else if ([[self window] styleMask] & NSWindowStyleMaskFullScreen) {
@@ -1296,7 +1295,7 @@ - (BOOL)windowShouldClose:(id)sender

- (NSSize) window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize
  {
-    if (stretch_video) {
+    if ([normalWindow styleMask] & NSWindowStyleMaskResizable) {
          return [cocoaView fixZoomedFullScreenSize:proposedSize];
      }

@@ -1377,8 +1376,7 @@ - (void)showQEMUDoc:(id)sender
  /* Stretches video to fit host monitor size */
  - (void)zoomToFit:(id) sender
  {
-    stretch_video = !stretch_video;
-    if (stretch_video == true) {
+    if (([normalWindow styleMask] & NSWindowStyleMaskResizable) == 0) {
[normalWindow setStyleMask:[normalWindow styleMask] | NSWindowStyleMaskResizable];
          [sender setState: NSControlStateValueOn];
      } else {
@@ -1650,7 +1648,7 @@ static void create_initial_menus(void)
      menu = [[NSMenu alloc] initWithTitle:@"View"];
[menu addItem: [[[NSMenuItem alloc] initWithTitle:@"Enter Fullscreen" action:@selector(doToggleFullScreen:) keyEquivalent:@"f"] autorelease]]; // Fullscreen menuItem = [[[NSMenuItem alloc] initWithTitle:@"Zoom To Fit" action:@selector(zoomToFit:) keyEquivalent:@""] autorelease]; - [menuItem setState: stretch_video ? NSControlStateValueOn : NSControlStateValueOff]; + [menuItem setState: [normalWindow styleMask] & NSWindowStyleMaskResizable ? NSControlStateValueOn : NSControlStateValueOff];
      [menu addItem: menuItem];
menuItem = [[[NSMenuItem alloc] initWithTitle:@"View" action:nil keyEquivalent:@""] autorelease];
      [menuItem setSubmenu:menu];
@@ -2036,7 +2034,6 @@ static void cocoa_display_init(DisplayState *ds, DisplayOptions *opts)
      }

      if (opts->u.cocoa.has_zoom_to_fit && opts->u.cocoa.zoom_to_fit) {
-        stretch_video = true;
[normalWindow setStyleMask:[normalWindow styleMask] | NSWindowStyleMaskResizable];
      }

It's nice to get rid of the boolean, but
  [normalWindow styleMask] & NSWindowStyleMaskResizable
feels a bit clunky -- maybe we should wrap it in a method with
a suitable name ? (isZoomToFit, maybe? but I'm not too familiar
with what cocoa function naming style is.)

I don't think we should have a method for this. It's verbose but the main reason of that is NSWindowStyleMaskResizable is wordy; otherwise it's quite a simple. There are few places that use this construct after all.

If not a method how about a macro just to make it less long? But if Peter is otherwise happy with the current version just this does not need another version IMO.

Regards,
BALATON Zoltan

Reply via email to