diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-07-12 14:33:03 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-07-12 14:24:08 +0000 |
commit | d5be2fdb90f02258c60545b69e3247ad0919672c (patch) | |
tree | 6524a20e4206e43f688ba60e34e06b18eb4d1b35 /src/quicktemplates2/qquickmenu.cpp | |
parent | f1797a43d6d0812aab1077a9ebeeaeb68c60b845 (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.cpp | 23 |
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) |