diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-07-13 12:33:46 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-07-14 11:44:16 +0000 |
commit | 867979435caf7a9fc5813537abee54e94bd616d9 (patch) | |
tree | df066c7eeffe7af151a9b5f816679db4dfe4d301 /src/quicktemplates2/qquickmenu.cpp | |
parent | 1a5b3a0f7ba924c197bbade5d5c7732e8b2d978a (diff) |
QQuickMenu: get rid of openSubMenu()
Change-Id: I8125971dd91614984379e734af21f5ff28852667
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickmenu.cpp')
-rw-r--r-- | src/quicktemplates2/qquickmenu.cpp | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp index 66615500..ab4f6b56 100644 --- a/src/quicktemplates2/qquickmenu.cpp +++ b/src/quicktemplates2/qquickmenu.cpp @@ -403,13 +403,11 @@ bool QQuickMenuPrivate::prepareExitTransition() if (!QQuickPopupPrivate::prepareExitTransition()) return false; - if (currentItem) { - QQuickMenu *subMenu = currentItem->subMenu(); - while (subMenu) { - QPointer<QQuickMenuItem> currentSubMenuItem = QQuickMenuPrivate::get(subMenu)->currentItem; - subMenu->close(); - subMenu = currentSubMenuItem ? currentSubMenuItem->subMenu() : nullptr; - } + QQuickMenu *subMenu = currentSubMenu(); + while (subMenu) { + QPointer<QQuickMenuItem> currentSubMenuItem = QQuickMenuPrivate::get(subMenu)->currentItem; + subMenu->close(); + subMenu = currentSubMenuItem ? currentSubMenuItem->subMenu() : nullptr; } return true; } @@ -454,8 +452,8 @@ void QQuickMenuPrivate::onItemTriggered() if (!item) return; - if (item->subMenu()) - openSubMenu(item, true); + if (QQuickMenu *subMenu = item->subMenu()) + subMenu->popup(subMenu->itemAt(0)); else q->dismiss(); } @@ -472,15 +470,12 @@ void QQuickMenuPrivate::onItemActiveFocusChanged() setCurrentIndex(indexOfItem, control ? control->focusReason() : Qt::OtherFocusReason); } -void QQuickMenuPrivate::openSubMenu(QQuickMenuItem *item, bool activate) +QQuickMenu *QQuickMenuPrivate::currentSubMenu() const { - QQuickMenu *subMenu = item ? item->subMenu() : nullptr; - if (!subMenu) - return; + if (!currentItem) + return nullptr; - if (activate) - QQuickMenuPrivate::get(subMenu)->setCurrentIndex(0, Qt::PopupFocusReason); - subMenu->open(); + return currentItem->subMenu(); } void QQuickMenuPrivate::setParentMenu(QQuickMenu *parent) @@ -1388,7 +1383,8 @@ void QQuickMenu::keyPressEvent(QKeyEvent *event) close(); } } else { - d->openSubMenu(d->currentItem, true); + if (QQuickMenu *subMenu = d->currentSubMenu()) + subMenu->popup(subMenu->itemAt(0)); } return; @@ -1401,7 +1397,8 @@ void QQuickMenu::timerEvent(QTimerEvent *event) { Q_D(QQuickMenu); if (event->timerId() == d->hoverTimer) { - d->openSubMenu(d->currentItem, false); + if (QQuickMenu *subMenu = d->currentSubMenu()) + subMenu->open(); d->stopHoverTimer(); } } |