mudlet-makers team mailing list archive
-
mudlet-makers team
-
Mailing list archive
-
Message #04255
[Bug 1652413] Re: DPI Awareness/Scaling Issues (Win10)
Agreed. I've experimented a little further as Qt offers a bunch of ways
to handle this.
Solution A: Set QT_AUTO_SCREEN_SCALE_FACTOR=1 which scales both the
fonts and forms nicely [See attachment]. This is equivalent to adding
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling) where the
QApplication object is constructed (where should this be in Mudlet? I've
tried a number of logical points like line 137 in /src/main.cpp but
after building on Win10, it didn't seem set.
Solution B: Using qt.conf or -platform windows:dpiawareness=0 is hacky
and doesn't scale fonts correctly (forms are good, though).
Solution C: Set a static scaling value. (QT_SCALING_FACTOR environment
variable or equivalent QApplication attribute) We absolutely wouldn't
want to set a static scaling value - we want Qt to query Windows for the
scaling factor and use that multiplier (looks like solution A does
this).
I'm not a Qt expert, so you (Vadim) or someone else can point me in the
right direction on where to set the AA_EnableHighDpiScaling attr
(solution A), I'd be more than happy to build it, test it and submit a
PR.
Thanks,
Colin
** Attachment added: "Zoomed in Solution A result"
https://bugs.launchpad.net/mudlet/+bug/1652413/+attachment/4797276/+files/wenvvar.PNG
--
You received this bug notification because you are a member of Mudlet
Makers, which is subscribed to Mudlet.
https://bugs.launchpad.net/bugs/1652413
Title:
DPI Awareness/Scaling Issues (Win10)
Status in Mudlet:
New
Bug description:
Summary:
Mudlet exhibits behavior associated with static size values (in pixels) in the Qt GUI widgets rather than using relative values. Additionally, the application does not specify DPI awareness such that Qt autoscales the application using the native Windows display APIs.* As such, the UI is, while usable, not properly rendered which breaks third-party UI add-ons produced by the community.
*More info here: http://doc.qt.io/qt-5/highdpi.html
Recommended remediation (up for discussion!):
While an effort to convert Mudlet's QML to relative values would be the "right" fix, the autoscaling provided by Qt 5.6+ and Windows 8.1+ allow for one of the following:
The addition of a qt.conf directive to specify an equivalent of the following (passed at runtime, instructs Windows to treat the application as non-DPI aware and to scale it automatically):
-platform windows:dpiawareness=0
OR
The addition of the following property setter for Windows builds to achieve the same goal as option #1:
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
Steps to reproduce:
Run the application on a High DPI Windows 10 machine such as a Microsoft Surface or 4K display with scaling enabled and set to a value other than 100%. Observe the UI scaling issues in the splash frame and Connections frame - particularly cut off text and oddly shaped fields/tiny small icons.
I have tested the -platform windows:dpiawareness=0 solution and it's
working with Mudlet3-iota built against Qt5.6 on Windows 10 following
the wiki instructions. I am building and testing the second (probably
preferable) fix.
To manage notifications about this bug go to:
https://bugs.launchpad.net/mudlet/+bug/1652413/+subscriptions
References