aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesignerbase
diff options
context:
space:
mode:
authorHenning Gruendl <henning.gruendl@qt.io>2023-11-16 18:34:39 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2023-11-16 17:57:28 +0000
commitc3f9d43acaa753149d17bed90114a266158ff683 (patch)
tree5722242b991f9443cab5b8641e070184509b48fe /src/plugins/qmldesignerbase
parent245bd90a6e53421eafae6c8dfe4d71949f387eab (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.cpp11
-rw-r--r--src/plugins/qmldesignerbase/utils/windowmanager.h1
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);