aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-09-20 16:23:57 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-09-21 21:39:27 +0000
commit8a4af9e87704f7b8ed269114d3ab75430bd61998 (patch)
tree31e825e3d439a2f5d789a2e6bfc5226771609e04 /src
parent29668bf3ebef803d67aa4e0bff8cc784149996a9 (diff)
QQuickPopup: fix negative margins
The documentation states: A popup with negative margins is not pushed within the bounds of the enclosing window. Therefore QQuickPopupPrivate::reposition() must not subtract negative margins to calculate the available bounds. Change-Id: I626772970bf3d5d9eefbb13811ea1003a85bcf0b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/quicktemplates2/qquickpopup.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index 8c0e5990..2a48473a 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -595,7 +595,10 @@ void QQuickPopupPrivate::reposition()
if (window) {
const QMarginsF margins = getMargins();
- const QRectF bounds = QRectF(0, 0, window->width(), window->height()).marginsRemoved(margins);
+ const QRectF bounds(qMax<qreal>(0.0, margins.left()),
+ qMax<qreal>(0.0, margins.top()),
+ window->width() - qMax<qreal>(0.0, margins.left()) - qMax<qreal>(0.0, margins.right()),
+ window->height() - qMax<qreal>(0.0, margins.top()) - qMax<qreal>(0.0, margins.bottom()));
// if the popup doesn't fit horizontally inside the window, try flipping it around (left <-> right)
if (allowHorizontalFlip && (rect.left() < bounds.left() || rect.right() > bounds.right())) {