Message ID | 20240318-zoom-v1-1-07ad14fcde19@daynix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ui/cocoa: Do not automatically zoom for HiDPI | expand |
On Mon, 18 Mar 2024 at 09:02, Akihiko Odaki <akihiko.odaki@daynix.com> wrote: > > Cocoa automatically zooms for a HiDPI display like Retina and makes > the display blurry. Revert the automatic zooming. > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> > --- > ui/cocoa.m | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/ui/cocoa.m b/ui/cocoa.m > index fa879d7dcd4b..c5b3c28000ff 100644 > --- a/ui/cocoa.m > +++ b/ui/cocoa.m > @@ -522,7 +522,10 @@ - (void) resizeWindow > [[self window] setContentAspectRatio:NSMakeSize(screen.width, screen.height)]; > > if (!([[self window] styleMask] & NSWindowStyleMaskResizable)) { > - [[self window] setContentSize:NSMakeSize(screen.width, screen.height)]; > + CGFloat width = screen.width / [[self window] backingScaleFactor]; > + CGFloat height = screen.height / [[self window] backingScaleFactor]; > + > + [[self window] setContentSize:NSMakeSize(width, height)]; > [[self window] center]; > } else if ([[self window] styleMask] & NSWindowStyleMaskFullScreen) { > [[self window] setContentSize:[self screenSafeAreaSize]]; > @@ -575,8 +578,8 @@ - (void) updateUIInfoLocked > > info.xoff = 0; > info.yoff = 0; > - info.width = frameSize.width; > - info.height = frameSize.height; > + info.width = frameSize.width * [[self window] backingScaleFactor]; > + info.height = frameSize.height * [[self window] backingScaleFactor]; > > dpy_set_ui_info(dcl.con, &info, TRUE); > } Could we / should we use convertRectToBacking and convertRectFromBacking rather than doing the multiply/divide ourselves? The docs seem to recommend against directly using backingScaleFactor when possible. thanks -- PMM
On 2024/03/22 22:06, Peter Maydell wrote: > On Mon, 18 Mar 2024 at 09:02, Akihiko Odaki <akihiko.odaki@daynix.com> wrote: >> >> Cocoa automatically zooms for a HiDPI display like Retina and makes >> the display blurry. Revert the automatic zooming. >> >> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> >> --- >> ui/cocoa.m | 9 ++++++--- >> 1 file changed, 6 insertions(+), 3 deletions(-) >> >> diff --git a/ui/cocoa.m b/ui/cocoa.m >> index fa879d7dcd4b..c5b3c28000ff 100644 >> --- a/ui/cocoa.m >> +++ b/ui/cocoa.m >> @@ -522,7 +522,10 @@ - (void) resizeWindow >> [[self window] setContentAspectRatio:NSMakeSize(screen.width, screen.height)]; >> >> if (!([[self window] styleMask] & NSWindowStyleMaskResizable)) { >> - [[self window] setContentSize:NSMakeSize(screen.width, screen.height)]; >> + CGFloat width = screen.width / [[self window] backingScaleFactor]; >> + CGFloat height = screen.height / [[self window] backingScaleFactor]; >> + >> + [[self window] setContentSize:NSMakeSize(width, height)]; >> [[self window] center]; >> } else if ([[self window] styleMask] & NSWindowStyleMaskFullScreen) { >> [[self window] setContentSize:[self screenSafeAreaSize]]; >> @@ -575,8 +578,8 @@ - (void) updateUIInfoLocked >> >> info.xoff = 0; >> info.yoff = 0; >> - info.width = frameSize.width; >> - info.height = frameSize.height; >> + info.width = frameSize.width * [[self window] backingScaleFactor]; >> + info.height = frameSize.height * [[self window] backingScaleFactor]; >> >> dpy_set_ui_info(dcl.con, &info, TRUE); >> } > > Could we / should we use convertRectToBacking and convertRectFromBacking > rather than doing the multiply/divide ourselves? The docs seem to > recommend against directly using backingScaleFactor when possible. Sorry, I forgot to reply this. Unfortunately, Cocoa does not provide a method to scale NSSize while convertRectToBacking and convertRectFromBacking work with NSRect, which is the reason why I opted for manual scaling here. Regards, Akihiko Odaki
diff --git a/ui/cocoa.m b/ui/cocoa.m index fa879d7dcd4b..c5b3c28000ff 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -522,7 +522,10 @@ - (void) resizeWindow [[self window] setContentAspectRatio:NSMakeSize(screen.width, screen.height)]; if (!([[self window] styleMask] & NSWindowStyleMaskResizable)) { - [[self window] setContentSize:NSMakeSize(screen.width, screen.height)]; + CGFloat width = screen.width / [[self window] backingScaleFactor]; + CGFloat height = screen.height / [[self window] backingScaleFactor]; + + [[self window] setContentSize:NSMakeSize(width, height)]; [[self window] center]; } else if ([[self window] styleMask] & NSWindowStyleMaskFullScreen) { [[self window] setContentSize:[self screenSafeAreaSize]]; @@ -575,8 +578,8 @@ - (void) updateUIInfoLocked info.xoff = 0; info.yoff = 0; - info.width = frameSize.width; - info.height = frameSize.height; + info.width = frameSize.width * [[self window] backingScaleFactor]; + info.height = frameSize.height * [[self window] backingScaleFactor]; dpy_set_ui_info(dcl.con, &info, TRUE); }
Cocoa automatically zooms for a HiDPI display like Retina and makes the display blurry. Revert the automatic zooming. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> --- ui/cocoa.m | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --- base-commit: ba49d760eb04630e7b15f423ebecf6c871b8f77b change-id: 20240318-zoom-df4d6834e56b Best regards,