diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-22 16:15:20 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-22 16:15:20 +0100 |
commit | 9cb31e4c7129771de1f7139c3accf10752467a67 (patch) | |
tree | e361463b58230e4232193bacd7301fdf90dc5499 /src | |
parent | 726da89e771ab46646297e9f6494625cfc680215 (diff) | |
parent | 4c66fbe8892e644b3d3c62d5bd94f03831ff76de (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
src/templates/qquickpopup.cpp
Change-Id: Idb43ff6aff692d01e9bc03450a474bf18a7e41fa
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/controls/Popup.qml | 6 | ||||
-rw-r--r-- | src/imports/controls/material/Popup.qml | 6 | ||||
-rw-r--r-- | src/imports/controls/universal/Popup.qml | 6 | ||||
-rw-r--r-- | src/templates/qquickpopup.cpp | 20 |
4 files changed, 28 insertions, 10 deletions
diff --git a/src/imports/controls/Popup.qml b/src/imports/controls/Popup.qml index 60ea326a..309c317b 100644 --- a/src/imports/controls/Popup.qml +++ b/src/imports/controls/Popup.qml @@ -40,8 +40,10 @@ import Qt.labs.templates 1.0 as T T.Popup { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0) contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) diff --git a/src/imports/controls/material/Popup.qml b/src/imports/controls/material/Popup.qml index 8fa9f7f7..d882840a 100644 --- a/src/imports/controls/material/Popup.qml +++ b/src/imports/controls/material/Popup.qml @@ -42,8 +42,10 @@ import Qt.labs.controls.material 1.0 T.Popup { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0) contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) diff --git a/src/imports/controls/universal/Popup.qml b/src/imports/controls/universal/Popup.qml index d26dd02d..7ab79545 100644 --- a/src/imports/controls/universal/Popup.qml +++ b/src/imports/controls/universal/Popup.qml @@ -41,8 +41,10 @@ import Qt.labs.controls.universal 1.0 T.Popup { id: control - implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) + implicitWidth: Math.max(background ? background.implicitWidth : 0, + contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) + implicitHeight: Math.max(background ? background.implicitHeight : 0, + contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0) contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0) contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0) diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp index c298bd9c..5589b095 100644 --- a/src/templates/qquickpopup.cpp +++ b/src/templates/qquickpopup.cpp @@ -496,10 +496,10 @@ void QQuickPopupPositioner::itemParentChanged(QQuickItem *, QQuickItem *parent) addAncestorListeners(parent); } -void QQuickPopupPositioner::itemChildRemoved(QQuickItem *, QQuickItem *child) +void QQuickPopupPositioner::itemChildRemoved(QQuickItem *item, QQuickItem *child) { if (isAncestor(child)) - removeAncestorListeners(child); + removeAncestorListeners(item); } void QQuickPopupPositioner::itemDestroyed(QQuickItem *item) @@ -527,7 +527,19 @@ void QQuickPopupPrivate::reposition() QQuickWindow *window = q->window(); if (window) { - const QRectF bounds = QRectF(0, 0, window->width(), window->height()).marginsRemoved(getMargins()); + const QMarginsF margins = getMargins(); + const QRectF bounds = QRectF(0, 0, window->width(), window->height()).marginsRemoved(margins); + + // push inside the margins + if (margins.top() > 0 && rect.top() < bounds.top()) + rect.moveTop(margins.top()); + if (margins.bottom() > 0 && rect.bottom() > bounds.bottom()) + rect.moveBottom(bounds.bottom()); + if (margins.left() > 0 && rect.left() < bounds.left()) + rect.moveLeft(margins.left()); + if (margins.right() > 0 && rect.right() > bounds.right()) + rect.moveRight(bounds.right()); + if (rect.top() < bounds.top() || rect.bottom() > bounds.bottom()) { // if the popup doesn't fit inside the window, try flipping it around (below <-> above) const QRectF flipped = parentItem->mapRectToScene(QRectF(x, parentItem->height() - y - rect.height(), rect.width(), rect.height())); @@ -588,7 +600,7 @@ bool QQuickPopupPositioner::isAncestor(QQuickItem *item) const if (!m_parentItem) return false; - QQuickItem *parent = m_parentItem->parentItem(); + QQuickItem *parent = m_parentItem; while (parent) { if (parent == item) return true; |