aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickmenu.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-07-11 17:09:24 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-07-12 10:24:26 +0000
commit1467d6bb49cf3417527f3afcdf71ad3a78ae0fb7 (patch)
treec5ccd98996f64ea0322fffdfa3e3ee27f37f77b1 /src/quicktemplates2/qquickmenu.cpp
parentc298bc51f7ae784a4d91cabe2075c47b0ef71167 (diff)
QQuickMenu: control close policy from prepareEnterTransition()
Moving stuff away from openSubMenu() until we can remove it... Change-Id: I0a979a6a0de25584a213b59e1d29d3b9f78b184e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickmenu.cpp')
-rw-r--r--src/quicktemplates2/qquickmenu.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp
index d9ef4072..7cc5a565 100644
--- a/src/quicktemplates2/qquickmenu.cpp
+++ b/src/quicktemplates2/qquickmenu.cpp
@@ -170,7 +170,6 @@ static const int SUBMENU_DELAY = 225;
\sa {Customizing Menu}, MenuItem, {Menu Controls}, {Popup Controls}
*/
-static const QQuickPopup::ClosePolicy defaultMenuClosePolicy = QQuickPopup::CloseOnEscape | QQuickPopup::CloseOnPressOutside;
static const QQuickPopup::ClosePolicy cascadingSubMenuClosePolicy = QQuickPopup::CloseOnEscape | QQuickPopup::CloseOnPressOutsideParent;
static bool shouldCascade()
@@ -360,6 +359,21 @@ void QQuickMenuPrivate::itemGeometryChanged(QQuickItem *, QQuickGeometryChange,
resizeItems();
}
+bool QQuickMenuPrivate::prepareEnterTransition()
+{
+ Q_Q(QQuickMenu);
+ if (!QQuickPopupPrivate::prepareEnterTransition())
+ return false;
+
+ if (!hasClosePolicy) {
+ if (cascade && parentMenu)
+ closePolicy = cascadingSubMenuClosePolicy;
+ else
+ q->resetClosePolicy();
+ }
+ return true;
+}
+
bool QQuickMenuPrivate::prepareExitTransition()
{
if (!QQuickPopupPrivate::prepareExitTransition())
@@ -443,7 +457,6 @@ void QQuickMenuPrivate::openSubMenu(QQuickMenuItem *item, bool activate)
if (cascade) {
subMenu->setParentItem(item);
- subMenu->setClosePolicy(cascadingSubMenuClosePolicy);
if (popupItem->isMirrored())
subMenu->setPosition(QPointF(-subMenu->width() - q->leftPadding() + subMenu->overlap(), -subMenu->topPadding()));
else
@@ -451,7 +464,6 @@ void QQuickMenuPrivate::openSubMenu(QQuickMenuItem *item, bool activate)
} else {
q->close();
subMenu->setParentItem(parentItem);
- subMenu->setClosePolicy(defaultMenuClosePolicy);
subMenu->setPosition(QPointF(q->x() + (q->width() - subMenu->width()) / 2,
q->y() + (q->height() - subMenu->height()) / 2));
}