Diffusion KWin 67b2746ecdfd

Compute correct boundaries in checkWorkspacePosition

Authored by zzag on May 3 2019, 1:36 PM.

Description

Compute correct boundaries in checkWorkspacePosition

Summary:
When a client sets a strut, checkWorkspacePosition will be called to
bump clients that touch corresponding screen edge.

In order to do that, checkWorkspacePosition needs to calculate client
boundaries before and after the restricted move area was changed. As it
turns out, if the client reserves space "between" screens, calculated
boundaries can be incorrect, which may lead to some funky results, e.g.
shrunken clients.

For example, let's say that there is a dual-monitor setup. If a client
reserves some amount of space at the right border of the left screen,
then clients on the right monitor will have rightMax which is equal to
the x coordinate of screenArea.

To fix that, this change ensures that only restricted areas belonging
to the same screen as the client are taken into account when computing
the boundaries.

BUG: 404837
BUG: 406573

Reviewers: KWin, davidedmundson

Reviewed By: KWin, davidedmundson

Subscribers: kwin

Tags: KWin

Differential Revision: https://phabricator.kde.org/D20987

Details

Committed
zzagMay 15 2019, 8:07 AM
Reviewer
KWin
Differential Revision
D20987: Compute correct boundaries in checkWorkspacePosition
Parents
R108:0aa288bfae79: Port away from deprecated qFind
Branches
Unknown
Tags
Unknown