aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickpopuppositioner.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-10-31 16:08:59 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2016-10-31 16:08:59 +0100
commitf7fd7460231ea9ad80fc85b4af793ad7ace56930 (patch)
tree2155c9399945b4ebe0b9af84da75b478afb30683 /src/quicktemplates2/qquickpopuppositioner.cpp
parentf4b2f9eeac7f9175a5834f405ad88fb6d28864e1 (diff)
parent10972ca272ae59fbe0f18eef6d9237fbd4aaca86 (diff)
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts: src/quicktemplates2/qquickpopup.cpp src/quicktemplates2/qquickpopup_p_p.h Change-Id: I33241dfd15a320e6ae2f0c056252b0ec6be7c6f6
Diffstat (limited to 'src/quicktemplates2/qquickpopuppositioner.cpp')
-rw-r--r--src/quicktemplates2/qquickpopuppositioner.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/quicktemplates2/qquickpopuppositioner.cpp b/src/quicktemplates2/qquickpopuppositioner.cpp
index cdd9332f..762b6d30 100644
--- a/src/quicktemplates2/qquickpopuppositioner.cpp
+++ b/src/quicktemplates2/qquickpopuppositioner.cpp
@@ -50,6 +50,7 @@ static const QQuickItemPrivate::ChangeTypes ItemChangeTypes = QQuickItemPrivate:
| QQuickItemPrivate::Parent;
QQuickPopupPositioner::QQuickPopupPositioner(QQuickPopup *popup) :
+ m_positioning(false),
m_parentItem(nullptr),
m_popup(popup)
{
@@ -96,6 +97,11 @@ void QQuickPopupPositioner::reposition()
if (!popupItem->isVisible())
return;
+ if (m_positioning) {
+ popupItem->polish();
+ return;
+ }
+
const qreal w = popupItem->width();
const qreal h = popupItem->height();
const qreal iw = popupItem->implicitWidth();
@@ -205,6 +211,8 @@ void QQuickPopupPositioner::reposition()
}
}
+ m_positioning = true;
+
popupItem->setPosition(rect.topLeft());
const QPointF effectivePos = m_parentItem ? m_parentItem->mapFromScene(rect.topLeft()) : rect.topLeft();
@@ -221,6 +229,8 @@ void QQuickPopupPositioner::reposition()
popupItem->setWidth(rect.width());
if (!p->hasHeight && heightAdjusted && rect.height() > 0)
popupItem->setHeight(rect.height());
+
+ m_positioning = false;
}
void QQuickPopupPositioner::itemGeometryChanged(QQuickItem *, QQuickGeometryChange, const QRectF &)