diff options
Diffstat (limited to 'src/widgets/widgets/qtoolbutton.cpp')
-rw-r--r-- | src/widgets/widgets/qtoolbutton.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp index f866fe8bda..375eff7ae8 100644 --- a/src/widgets/widgets/qtoolbutton.cpp +++ b/src/widgets/widgets/qtoolbutton.cpp @@ -62,6 +62,7 @@ public: void init(); #ifndef QT_NO_MENU void _q_buttonPressed(); + void _q_buttonReleased(); void popupTimerDone(); void _q_updateButtonDown(); void _q_menuTriggered(QAction *); @@ -211,6 +212,7 @@ void QToolButtonPrivate::init() #ifndef QT_NO_MENU QObject::connect(q, SIGNAL(pressed()), q, SLOT(_q_buttonPressed())); + QObject::connect(q, SIGNAL(released()), q, SLOT(_q_buttonReleased())); #endif setLayoutItemMargins(QStyle::SE_ToolButtonLayoutItem); @@ -698,12 +700,17 @@ void QToolButtonPrivate::_q_buttonPressed() return; // no menu to show if (popupMode == QToolButton::MenuButtonPopup) return; - else if (delay > 0 && !popupTimer.isActive() && popupMode == QToolButton::DelayedPopup) + else if (delay > 0 && popupMode == QToolButton::DelayedPopup) popupTimer.start(delay, q); else if (delay == 0 || popupMode == QToolButton::InstantPopup) q->showMenu(); } +void QToolButtonPrivate::_q_buttonReleased() +{ + popupTimer.stop(); +} + void QToolButtonPrivate::popupTimerDone() { Q_Q(QToolButton); |