parent
0a98946212
commit
887a64334c
@ -0,0 +1,53 @@
|
|||||||
|
From 3c85e2e8899d1253430783a618d7584d985bd614 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fabian Vogt <fabian@ritter-vogt.de>
|
||||||
|
Date: Tue, 21 Feb 2023 16:03:51 +0100
|
||||||
|
Subject: [PATCH] Use the QScreen of the QWindow as default output
|
||||||
|
|
||||||
|
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.
|
||||||
|
---
|
||||||
|
src/interfaces/window.cpp | 10 ++++++++--
|
||||||
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
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 <layershellqt_logging.h>
|
||||||
|
|
||||||
|
#include <QPointer>
|
||||||
|
+#include <optional>
|
||||||
|
|
||||||
|
using namespace LayerShellQt;
|
||||||
|
|
||||||
|
@@ -26,7 +27,7 @@ public:
|
||||||
|
Window::KeyboardInteractivity keyboardInteractivity = Window::KeyboardInteractivityExclusive;
|
||||||
|
Window::Layer layer = Window::LayerTop;
|
||||||
|
QMargins margins;
|
||||||
|
- QPointer<QScreen> desiredOutput;
|
||||||
|
+ std::optional<QPointer<QScreen>> desiredOutput;
|
||||||
|
};
|
||||||
|
|
||||||
|
static QMap<QWindow *, Window *> 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)
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
Loading…
Reference in new issue