diff --git a/src/interfaces/window.cpp b/src/interfaces/window.cpp index 477b74e..7aa39f4 100644 --- a/src/interfaces/window.cpp +++ b/src/interfaces/window.cpp @@ -8,6 +8,7 @@ #include #include +#include using namespace LayerShellQt; @@ -26,7 +27,7 @@ public: Window::KeyboardInteractivity keyboardInteractivity = Window::KeyboardInteractivityExclusive; Window::Layer layer = Window::LayerTop; QMargins margins; - QPointer desiredOutput; + std::optional> desiredOutput; }; static QMap s_map; @@ -103,7 +104,12 @@ Window::Layer Window::layer() const QScreen *Window::desiredOutput() const { - return d->desiredOutput; + // Don't use .value_or here to avoid a temporary QPointer + if (d->desiredOutput.has_value()) { + return d->desiredOutput.value(); + } + + return d->parentWindow->screen(); } void Window::setDesiredOutput(QScreen *output)