Evaluate [normalWindow styleMask] & NSWindowStyleMaskResizable instead.
Signed-off-by: Akihiko Odaki <akihiko.odaki@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];
}
--
2.43.1
On Sat, 17 Feb 2024 at 11:19, Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>
> Evaluate [normalWindow styleMask] & NSWindowStyleMaskResizable instead.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@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.)
-- PMM
On 2024/02/23 1:53, Peter Maydell wrote:
> On Sat, 17 Feb 2024 at 11:19, Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>>
>> Evaluate [normalWindow styleMask] & NSWindowStyleMaskResizable instead.
>>
>> Signed-off-by: Akihiko Odaki <akihiko.odaki@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.
In any case, I put a bit more effort to simplify style mask references
with v12 so please check it out.
Regards,
Akihiko Odaki
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.odaki@daynix.com>
>> wrote:
>>>
>>> Evaluate [normalWindow styleMask] & NSWindowStyleMaskResizable instead.
>>>
>>> Signed-off-by: Akihiko Odaki <akihiko.odaki@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
© 2016 - 2026 Red Hat, Inc.