aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-22 16:15:20 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-22 16:15:20 +0100
commit9cb31e4c7129771de1f7139c3accf10752467a67 (patch)
treee361463b58230e4232193bacd7301fdf90dc5499 /src
parent726da89e771ab46646297e9f6494625cfc680215 (diff)
parent4c66fbe8892e644b3d3c62d5bd94f03831ff76de (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.qml6
-rw-r--r--src/imports/controls/material/Popup.qml6
-rw-r--r--src/imports/controls/universal/Popup.qml6
-rw-r--r--src/templates/qquickpopup.cpp20
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;