diff options
author | Liang Qi <liang.qi@qt.io> | 2017-04-18 10:43:17 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-04-18 10:46:22 +0200 |
commit | 18934bcb0c388eb4723043cb5001702fecaf90bc (patch) | |
tree | 59f4f1e5de00fa49e49bace1a38f1bce52e48457 /src/widgets/widgets/qmenu_p.h | |
parent | bc5454d2c41873349ea32c42aca8fc794cba442e (diff) | |
parent | d1210281e41008ce2e3510aa5cfb3ebea1c57734 (diff) |
Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
src/corelib/global/qglobal.cpp
Change-Id: I375fa4afa662fa411a15f212ebd5f2f0dffdba7f
Diffstat (limited to 'src/widgets/widgets/qmenu_p.h')
-rw-r--r-- | src/widgets/widgets/qmenu_p.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/widgets/widgets/qmenu_p.h b/src/widgets/widgets/qmenu_p.h index a160a2c7d4..2f04fac3c0 100644 --- a/src/widgets/widgets/qmenu_p.h +++ b/src/widgets/widgets/qmenu_p.h @@ -95,6 +95,7 @@ public: , m_select_other_actions(false) , m_first_mouse(true) , m_init_guard(false) + , m_use_reset_action(true) , m_uni_dir_discarded_count(0) , m_uni_dir_fail_at_count(0) , m_timeout(0) @@ -182,9 +183,17 @@ public: QSetValueOnDestroy<bool> setFirstMouse(m_first_mouse, false); QSetValueOnDestroy<QPointF> setPreviousPoint(m_previous_point, mousePos); - if (resetAction && resetAction->isSeparator()) + if (resetAction && resetAction->isSeparator()) { m_reset_action = Q_NULLPTR; - else { + m_use_reset_action = true; + } else if (m_reset_action != resetAction) { + if (m_use_reset_action && resetAction) { + const QList<QAction *> actions = m_menu->actions(); + const int resetIdx = actions.indexOf(resetAction); + const int originIdx = actions.indexOf(m_origin_action); + if (resetIdx > -1 && originIdx > -1 && qAbs(resetIdx - originIdx) > 1) + m_use_reset_action = false; + } m_reset_action = resetAction; } @@ -249,6 +258,7 @@ private: bool m_init_guard; bool m_discard_state_when_entering_parent; bool m_dont_start_time_on_leave; + bool m_use_reset_action; short m_uni_dir_discarded_count; short m_uni_dir_fail_at_count; short m_timeout; |