diff options
author | Tomi Korpipaa <tomi.korpipaa@qt.io> | 2018-01-26 07:09:16 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2018-01-26 07:32:54 +0000 |
commit | b06bef0f344e429252e7ece8448c8546dd291cd9 (patch) | |
tree | a538106c1ca810bb849581e667f24f5d7b16c441 /src/Authoring/Studio/Palettes/Action/ActionView.cpp | |
parent | 1961ff954c4df4a437bb0e9375fd8bdcb643a88a (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.cpp | 22 |
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] { |