summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/Action/ActionView.cpp
diff options
context:
space:
mode:
authorTomi Korpipaa <tomi.korpipaa@qt.io>2018-01-26 07:09:16 +0200
committerTomi Korpipää <tomi.korpipaa@qt.io>2018-01-26 07:32:54 +0000
commitb06bef0f344e429252e7ece8448c8546dd291cd9 (patch)
treea538106c1ca810bb849581e667f24f5d7b16c441 /src/Authoring/Studio/Palettes/Action/ActionView.cpp
parent1961ff954c4df4a437bb0e9375fd8bdcb643a88a (diff)
Keep popups inside screen
Task-number: QT3DS-76 Change-Id: I56957722d30ec943cc3a25bd42fb246233bf0650 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes/Action/ActionView.cpp')
-rw-r--r--src/Authoring/Studio/Palettes/Action/ActionView.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/Authoring/Studio/Palettes/Action/ActionView.cpp b/src/Authoring/Studio/Palettes/Action/ActionView.cpp
index b45c9803..e25f5672 100644
--- a/src/Authoring/Studio/Palettes/Action/ActionView.cpp
+++ b/src/Authoring/Studio/Palettes/Action/ActionView.cpp
@@ -49,10 +49,11 @@
#include "Qt3DSDMDataTypes.h"
#include "Qt3DSDMSlides.h"
-#include <QCoreApplication>
-#include <QQmlContext>
-#include <QQmlEngine>
-#include <QTimer>
+#include <QtCore/qcoreapplication.h>
+#include <QtQml/qqmlcontext.h>
+#include <QtQml/qqmlengine.h>
+#include <QtCore/qtimer.h>
+#include <QtWidgets/qdesktopwidget.h>
ActionView::ActionView(const QSize &preferredSize, QWidget *parent)
: QQuickWidget(parent)
@@ -487,7 +488,18 @@ void ActionView::showBrowser(QQuickWidget *browser, const QPoint &point)
QSize popupSize = CStudioPreferences::browserPopupSize();
browser->disconnect();
browser->resize(popupSize);
- browser->move(point - QPoint(popupSize.width(), popupSize.height()));
+
+ // Make sure the popup doesn't go outside the screen
+ QSize screenSize = QApplication::desktop()->availableGeometry(
+ QApplication::desktop()->screenNumber(this)).size();
+ QPoint newPos = point - QPoint(popupSize.width(), popupSize.height());
+ if (newPos.y() < 0)
+ newPos.setY(0);
+ if (newPos.x() + popupSize.width() > screenSize.width())
+ newPos.setX(screenSize.width() - popupSize.width());
+ else if (newPos.x() < 0)
+ newPos.setX(0);
+ browser->move(newPos);
// Show asynchronously to avoid flashing blank window on first show
QTimer::singleShot(0, this, [browser] {