https://bugs.kde.org/show_bug.cgi?id=442534

Vlad Zahorodnii <vlad.zahorod...@kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/kwin/commit/afcb9fd03793
                   |                            |7d948ea4dcf411518155ec149ac
                   |                            |b
         Resolution|---                         |FIXED

--- Comment #2 from Vlad Zahorodnii <vlad.zahorod...@kde.org> ---
Git commit afcb9fd037937d948ea4dcf411518155ec149acb by Vlad Zahorodnii.
Committed on 17/09/2021 at 14:02.
Pushed by vladz into branch 'master'.

x11: Fix "Move window to next screen" shortcut for maximized windows

With the recent AbstractOutput changes, Workspace::clientArea() overload
that takes only the window and no additional output was changed to

    return clientArea(opt, window, window->output());

prior to that, it had been looking up the output at the center of the
frame geometry.

As it turns out, AbstractOutput::sendToOutput() blocks geometry updates,
which in its turn means that Toplevel::output() will be updated only
after geometry updates are unblocked. For the most part, it's not a big
deal until you need to use Workspace::clientArea(opt, const Toplevel*)

Since the output won't be updated until geometry updates are unblocked,
clientArea(opt, const Toplevel *) may return outdated info.

One could argue that we just simply need to update m_output similar to
m_frameGeometry when geometry updates are blocked, but... it's not going
to work on wayland! On Wayland, GeometryUpdatesBlocker is totally
unnecessary. Even if a window is resized, m_frameGeometry will be left
unchanged until the client repaints the window.

Instead, one need to pass the AbstractOutput to clientArea() if it's
important.

This change makes X11Client::changeMaximize() query the MaximizeArea of
the output containing the center of the move resize geometry, similar to
what the XdgToplevelClient does.

M  +1    -1    src/x11client.cpp

https://invent.kde.org/plasma/kwin/commit/afcb9fd037937d948ea4dcf411518155ec149acb

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to