If we are designing our UI's windows from QML, it makes sense that we
might want to configure how they're placed from the same place.
Everything was already in place but for a few technical bits which this
change adds.
Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
If the Window::setDesiredOutput API was not called for the QWindow, use
QWindow::screen(). This allows assigning QWindows to specific screens using
the plain Qt API.
Passing nullptr to Window::setDesiredOutput explicitly results in nil as
desired output for the layer, which lets the compositor select a screen.
(cherry picked from commit 3c85e2e889)
QWaylandLayerSurface pulled data from the Window on startup. The Window
pushed data into the QWaylandLayerSurface on changes. Having two
patterns is a sign of something being off.
This moves everything to a single design, pulling from the public
interface. This allows us to drop a code path that meddles with
QWaylandWindow internals.
If the property is set, the compositor will try to put the window on the
given output. If not set, the compositer will decide where to put the
window (usually the active output). The motivation for this change is the
ability for KRunner to always appear on the active output.
When a compositor has no outputs listed Qt creates a dummy placeholder
QScreen object that does not represent a wl_output.
This should still be fixed in the clients to not create a view, it's
wasteful and probably will still have plenty of other bugs, hence the
giant warning, but it's still worth guarding.
CCBUG: 439096