GUI: detect UI scale factor when moving window

This commit is contained in:
tildearrow 2023-08-31 01:24:06 -05:00
parent 9caa2f38f4
commit a882d7bcf2
6 changed files with 107 additions and 25 deletions

View file

@ -20,7 +20,28 @@
#include <Cocoa/Cocoa.h>
#include "macstuff.h"
double getMacDPIScale() {
CGFloat val=[[NSScreen mainScreen] backingScaleFactor];
double getMacDPIScale(void* sysWin, unsigned char isUIKit) {
NSScreen* screen=nil;
if (sysWin!=NULL) {
if (isUIKit) {
UIWindow* win=(UIWindow*)sysWin;
UIWindowScene* winScene=[win windowScene];
if (winScene!=nil) {
UIScreen* winScreen=[winScene screen];
CGFloat ret=[winScreen scale];
return (double)ret;
}
} else {
NSWindow* win=(NSWindow*)sysWin;
screen=[win screen];
}
}
if (screen==nil) {
screen=[NSScreen mainScreen];
}
if (screen==nil) {
return 1.0;
}
CGFloat val=[screen backingScaleFactor];
return (double)val;
}