| Summary: | Maximized window does not move to another moniroe | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | d3coder <admin> |
| Component: | general | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | kde, mariusz.libera, nate |
| Priority: | NOR | Keywords: | regression |
| Version First Reported In: | 5.22.90 | Flags: | vlad.zahorodnii:
Wayland-
vlad.zahorodnii: X11+ |
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/kwin/commit/cc006d3f8e76e55bafd5ebc09013b1b356aea967 | Version Fixed/Implemented In: | 5.23 |
| Sentry Crash Report: | |||
|
Description
d3coder
2021-09-16 15:04:20 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/1428 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
Git commit cc006d3f8e76e55bafd5ebc09013b1b356aea967 by Vlad Zahorodnii.
Committed on 17/09/2021 at 14:02.
Pushed by vladz into branch 'Plasma/5.23'.
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.
(cherry picked from commit afcb9fd037937d948ea4dcf411518155ec149acb)
M +1 -1 src/x11client.cpp
https://invent.kde.org/plasma/kwin/commit/cc006d3f8e76e55bafd5ebc09013b1b356aea967
*** Bug 442363 has been marked as a duplicate of this bug. *** *** Bug 442615 has been marked as a duplicate of this bug. *** |