aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickmenu.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-07-12 14:33:03 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-07-12 14:24:08 +0000
commitd5be2fdb90f02258c60545b69e3247ad0919672c (patch)
tree6524a20e4206e43f688ba60e34e06b18eb4d1b35 /src/quicktemplates2/qquickmenu.cpp
parentf1797a43d6d0812aab1077a9ebeeaeb68c60b845 (diff)
QQuickMenu: override reposition() to position sub-menus
Change-Id: Ia63148beee6b574e435a120be245601b3a0b3322 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickmenu.cpp')
-rw-r--r--src/quicktemplates2/qquickmenu.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp
index a5546306..18997928 100644
--- a/src/quicktemplates2/qquickmenu.cpp
+++ b/src/quicktemplates2/qquickmenu.cpp
@@ -359,6 +359,23 @@ void QQuickMenuPrivate::itemGeometryChanged(QQuickItem *, QQuickGeometryChange,
resizeItems();
}
+void QQuickMenuPrivate::reposition()
+{
+ Q_Q(QQuickMenu);
+ if (parentMenu) {
+ if (cascade) {
+ if (popupItem->isMirrored())
+ q->setPosition(QPointF(-q->width() - parentMenu->leftPadding() + q->overlap(), -q->topPadding()));
+ else if (parentItem)
+ q->setPosition(QPointF(parentItem->width() + parentMenu->rightPadding() - q->overlap(), -q->topPadding()));
+ } else {
+ q->setPosition(QPointF(parentMenu->x() + (parentMenu->width() - q->width()) / 2,
+ parentMenu->y() + (parentMenu->height() - q->height()) / 2));
+ }
+ }
+ QQuickPopupPrivate::reposition();
+}
+
bool QQuickMenuPrivate::prepareEnterTransition()
{
Q_Q(QQuickMenu);
@@ -461,15 +478,9 @@ void QQuickMenuPrivate::openSubMenu(QQuickMenuItem *item, bool activate)
if (cascade) {
subMenu->setParentItem(item);
- if (popupItem->isMirrored())
- subMenu->setPosition(QPointF(-subMenu->width() - q->leftPadding() + subMenu->overlap(), -subMenu->topPadding()));
- else
- subMenu->setPosition(QPointF(item->width() + q->rightPadding() - subMenu->overlap(), -subMenu->topPadding()));
} else {
q->close();
subMenu->setParentItem(parentItem);
- subMenu->setPosition(QPointF(q->x() + (q->width() - subMenu->width()) / 2,
- q->y() + (q->height() - subMenu->height()) / 2));
}
if (activate)