diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-09-20 16:23:57 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-09-21 21:39:27 +0000 |
commit | 8a4af9e87704f7b8ed269114d3ab75430bd61998 (patch) | |
tree | 31e825e3d439a2f5d789a2e6bfc5226771609e04 /src | |
parent | 29668bf3ebef803d67aa4e0bff8cc784149996a9 (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.cpp | 5 |
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())) { |