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. BUG: 442534
parent
ca869e2b