From 867979435caf7a9fc5813537abee54e94bd616d9 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 13 Jul 2017 12:33:46 +0200 Subject: QQuickMenu: get rid of openSubMenu() Change-Id: I8125971dd91614984379e734af21f5ff28852667 Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickmenu.cpp | 33 +++++++++++++++------------------ src/quicktemplates2/qquickmenu_p_p.h | 2 +- 2 files changed, 16 insertions(+), 19 deletions(-) (limited to 'src') 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 currentSubMenuItem = QQuickMenuPrivate::get(subMenu)->currentItem; - subMenu->close(); - subMenu = currentSubMenuItem ? currentSubMenuItem->subMenu() : nullptr; - } + QQuickMenu *subMenu = currentSubMenu(); + while (subMenu) { + QPointer 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(); } } diff --git a/src/quicktemplates2/qquickmenu_p_p.h b/src/quicktemplates2/qquickmenu_p_p.h index b8da1764..9f3d66a2 100644 --- a/src/quicktemplates2/qquickmenu_p_p.h +++ b/src/quicktemplates2/qquickmenu_p_p.h @@ -102,7 +102,7 @@ public: void onItemTriggered(); void onItemActiveFocusChanged(); - void openSubMenu(QQuickMenuItem *item, bool activate); + QQuickMenu *currentSubMenu() const; void setParentMenu(QQuickMenu *parent); void resolveParentItem(); -- cgit v1.2.3