SUMMARY Window does not move to the next monitor if window is maximized Bind "Move window to next monitor" action to some hotkey, meta + space in my case STEPS TO REPRODUCE 1. Maximize window 2. Press meta + space OBSERVED RESULT 1. Firefox does not move another monitor, "move" animation works, but window simply becomes smaller as if it's about to move and then maximizes back 2. Full screen firefox does move to another monitor without animation 3. Freshly started dolphin does not play "moving" animation and does not move to another monitor if i restore and maximize dolphin, it plays "moving" animation, but does not actually move to another monitor EXPECTED RESULT Window moves to another monitor SOFTWARE/OS VERSIONS Operating System: Arch Linux KDE Plasma Version: 5.22.90 KDE Frameworks Version: 5.86.0 Qt Version: 5.15.2 Kernel Version: 5.14.3-arch1-1 (64-bit) Graphics Platform: X11 Processors: 8 × Intel® Core™ i7-4790K CPU @ 4.00GHz Memory: 15.5 GiB of RAM Graphics Processor: Mesa DRI Intel® HD Graphics 4600 ADDITIONAL INFORMATION
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. ***