meta-gpu-xrandr: Account for the current user text scale factor
when calculating the crtc scale based on Xft.dpi.
- cinnamon-settings-daemon retrieves the global scale from muffin,
and the text scale from gsettings, calculates the dpi and sets
it on the server.
- muffin retrieves the dpi from the server and calculates the global
scale from that *rounding to the nearest integer*. A text factor
of >= 1.5 causes a higher global scale to be assumed each time
muffin restarts. Muffin triggers a dbus signal, and cinnamon-
settings-daemon does its thing over again.
window.c: Improve the test for checking if an 'above' window may
cover a new window.
This check occurs prior to placement (and plays a part in how
placement is calculated), but prior to placing the window, its
position and monitor aren't up-to-date. There are still a number
of things we can check, however, and it's better to be accurate
on what we do check rather than reporting false positives.
window activation: Detect a couple of conditions that might cause
initial window focus and stacking to be wrong (mostly because of
bad timestamps), and correct them.
- a modal window with a parent that is the current input focus should
never appear below that parent.
- a modal window spawned via portal (rather than 'native').
Flatpak apps, along with browsers (and electron apps) are now using
this portal mechanism to provide a dialog appropriate to the current
environment (such as Kde, Gtk). The dialogs aren't direct descendants
of their parent windows, their timestamps can/will be earlier than
the most recent user time for the parents, causing muffin to refuse
focus.