diff options
author | Henning Gruendl <henning.gruendl@qt.io> | 2023-11-16 18:34:39 +0100 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2023-11-16 17:57:28 +0000 |
commit | c3f9d43acaa753149d17bed90114a266158ff683 (patch) | |
tree | 5722242b991f9443cab5b8641e070184509b48fe /src/plugins/qmldesignerbase | |
parent | 245bd90a6e53421eafae6c8dfe4d71949f387eab (diff) |
QmlDesigner: Fix PopupDialog popup location
* Restrict popup location to single screen given by global position
* Reintroduce PopupDialog title bar drag
* Fix global popup show on linux
Change-Id: If1923151cb9d0ec4286f27aeae2baa292e017eb5
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/plugins/qmldesignerbase')
-rw-r--r-- | src/plugins/qmldesignerbase/utils/windowmanager.cpp | 11 | ||||
-rw-r--r-- | src/plugins/qmldesignerbase/utils/windowmanager.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/plugins/qmldesignerbase/utils/windowmanager.cpp b/src/plugins/qmldesignerbase/utils/windowmanager.cpp index c52d5d469a6..146535ceac1 100644 --- a/src/plugins/qmldesignerbase/utils/windowmanager.cpp +++ b/src/plugins/qmldesignerbase/utils/windowmanager.cpp @@ -8,6 +8,7 @@ #include <QCursor> #include <QGuiApplication> #include <QMainWindow> +#include <QScreen> #include <QWindow> namespace QmlDesignerBase { @@ -43,4 +44,14 @@ QPoint WindowManager::globalCursorPosition() return QCursor::pos(); } +QRect WindowManager::getScreenGeometry(QPoint point) +{ + QScreen *screen = QGuiApplication::screenAt(point); + + if (!screen) + return {}; + + return screen->geometry(); +} + } // namespace QmlDesignerBase diff --git a/src/plugins/qmldesignerbase/utils/windowmanager.h b/src/plugins/qmldesignerbase/utils/windowmanager.h index 3d8e692c1aa..87a0b701463 100644 --- a/src/plugins/qmldesignerbase/utils/windowmanager.h +++ b/src/plugins/qmldesignerbase/utils/windowmanager.h @@ -25,6 +25,7 @@ public: static void registerDeclarativeType(); Q_INVOKABLE QPoint globalCursorPosition(); + Q_INVOKABLE QRect getScreenGeometry(QPoint point); signals: void focusWindowChanged(QWindow *window); |