summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qmenu.cpp
diff options
context:
space:
mode:
authorBłażej Szczygieł <spaz16@wp.pl>2016-05-09 20:01:36 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2017-04-12 07:29:18 +0000
commitbdd5a67e6543aa4159ab4aa4b466baa453b622aa (patch)
treebef53c852a4b654d5ab0c38dc0e194f099f10103 /src/widgets/widgets/qmenu.cpp
parent11ed95ac9c12ee2b20b5c6f6be68d0b6387c0e70 (diff)
QtWidgets: Don't open submenus when mouse is moving between actions
Don't set the current action during closing submenu when mouse moved more than one action in the menu to the top or to the bottom. Task-number: QTBUG-53215 Change-Id: I2383363bc48f644df046198662dfa4d080fe3f1d Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/widgets/widgets/qmenu.cpp')
-rw-r--r--src/widgets/widgets/qmenu.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp
index 1925b58326..6da56c926c 100644
--- a/src/widgets/widgets/qmenu.cpp
+++ b/src/widgets/widgets/qmenu.cpp
@@ -632,6 +632,7 @@ void QMenuSloppyState::reset()
m_enabled = false;
m_first_mouse = true;
m_init_guard = false;
+ m_use_reset_action = true;
m_uni_dir_discarded_count = 0;
m_time.stop();
m_reset_action = Q_NULLPTR;
@@ -684,6 +685,7 @@ void QMenuSloppyState::setSubMenuPopup(const QRect &actionRect, QAction *resetAc
{
m_enabled = true;
m_init_guard = true;
+ m_use_reset_action = true;
m_time.stop();
m_action_rect = actionRect;
m_sub_menu = subMenu;
@@ -744,10 +746,12 @@ void QMenuSloppyState::timeout()
if (m_sub_menu)
menu_priv->hideMenu(m_sub_menu);
- if (reallyHasMouse)
- menu_priv->setCurrentAction(m_reset_action,0);
- else
+ if (reallyHasMouse) {
+ if (m_use_reset_action)
+ menu_priv->setCurrentAction(m_reset_action, 0);
+ } else {
menu_priv->setCurrentAction(Q_NULLPTR, 0);
+ }
}
//return the top causedPopup.widget that is not a QMenu