On 05/02/2022 14:25, Jon Turney wrote:
On 27/01/2022 03:12, Ken Whitesell wrote:
First, the bottom line:
XWin.exe.manifest, line 21
change:
<dpiAwareness>PerMonitorV2,PerMonitor</dpiAwareness>
to
<dpiAwareness>PerMonitor</dpiAwareness>
Some details:
I managed to get to a point where I could build the packages from
source and install them. I looked at the commit you referred me to,
and started reverting changes, one-by-one - at least in so far as the
change appeared to make sense to me.
Anyway, I got to this change, and sure enough, it worked. Removing the
"PerMonitorV2" solved the issue. Also, I confirmed that it's the
"PerMonitorV2" that is causing the issue and not having both of them
by running another test with just the "PerMonitorV2" - and that still
shows the problem.
Thanks for taking the time to narrow this down. It's been very helpful.
Working through the documented effects of that [1], I was able to work
out that this mis-rendering is due to the non-client area scaling.
[1] See under DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 in
https://docs.microsoft.com/en-us/windows/win32/hidpi/dpi-awareness-context
If you turn off 'Hide Root Window' from the tray menu, you can kind of
see what's going wrong: normally the client area of the X window is
exactly aligned with that in the root window, but when the non-client
area is rescaled by a DPI change (the title bar changes size
significantly), it's misaligned so that part of the X window is outside
the client area (and thus clipped in updates).
I think this is due to the AdjustWindowsRectEx() function not being DPI
aware (I guess it's always computing the non-client window rect based on
the processes initial DPI)
Unfortunately, from an initial look, rewriting things to use
AdjustWindowRectExForDpi() isn't trivial (since we need to make 'DPI of
the monitor this Window is going to end up on' available to it)
So for the moment, I think I'll apply your reversion (although this
probably comes at the cost of not scaling the window frame, the traymenu
and About... dialog)
I made this change in xserver 21.1.4-1.
Thanks again for tracking this down.
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple