Use current screen to set dimensions of new floating windows

This fixes a bug when using multiple screens with different dimensions,
causing some floating windows to be smaller/larger than the size they
requested.

Some applications (e.g. pinentry) always map their window at (0, 0) so
floatLocation would compute the window size relative to the screen
containing (0, 0) and if the current workspace is on another screen with
a different size, this relative size results in a different absolute
size, which is undesirable for fixed size floats.

Other applications like ssh-agent place their window at the center of
the framebuffer (ignoring xinerama layout). Same problem.

Then there are apps that remember their position/size when minimizing to
tray and then attempt to restore it when reopened. Again, if they
restore it on another screen, we miscalculate the size.

The fix is to use the current screen for calculating dimensions of new
(not yet mapped) floating windows.

Co-Authored-By: Vincent Vinel <narthorn@gmail.com>
This commit is contained in:
Tomas Janousek
2020-05-13 18:36:23 +02:00
parent 78b967198b
commit f8b243b66e
2 changed files with 23 additions and 6 deletions

View File

@@ -2,6 +2,10 @@
## unknown (unknown)
* Fixed a bug when using multiple screens with different dimensions,
causing some floating windows to be smaller/larger than the size they
requested.
## 0.15 (September 30, 2018)
* Reimplement `sendMessage` to deal properly with windowset changes made