summaryrefslogtreecommitdiffstats
path: root/src/widget/wpushbutton.cpp
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2020-02-02 22:20:29 +0100
committerDaniel Schürmann <daschuer@mixxx.org>2020-02-02 22:20:29 +0100
commit5e84866a7ab5a73895cd25cfab137c8672f3c943 (patch)
tree0ae8856d60687b68c90da9d996a1a8014dea3ce3 /src/widget/wpushbutton.cpp
parent17b5c476515fff6fef831782afaf4204775efd10 (diff)
use QEvent::WindowDeactivate to reset the press state
Diffstat (limited to 'src/widget/wpushbutton.cpp')
-rw-r--r--src/widget/wpushbutton.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/widget/wpushbutton.cpp b/src/widget/wpushbutton.cpp
index b8f425e9e7..df8c5d4a44 100644
--- a/src/widget/wpushbutton.cpp
+++ b/src/widget/wpushbutton.cpp
@@ -290,7 +290,9 @@ void WPushButton::onConnectedControlChanged(double dParameter, double dValue) {
Q_UNUSED(dParameter);
// Enums are not currently represented using parameter space so it doesn't
// make sense to use the parameter here yet.
- m_bPressed = (dValue == 1.0);
+ if (m_iNoStates == 1) {
+ m_bPressed = (dValue == 1.0);
+ }
restyleAndRepaint();
}
@@ -395,15 +397,27 @@ void WPushButton::mousePressEvent(QMouseEvent * e) {
}
}
+bool WPushButton::event(QEvent* e) {
+ if (e->type() == QEvent::WindowDeactivate) {
+ // if the window is deactivated while in pressed state
+ if (m_bPressed) {
+ m_bPressed = false;
+ restyleAndRepaint();
+ }
+ }
+ return QWidget::event(e);
+}
+
void WPushButton::focusOutEvent(QFocusEvent* e) {
- Q_UNUSED(e);
- if (e->reason() != Qt::MouseFocusReason) {
+ qDebug() << "focusOutEvent" << e->reason();
+ if (m_bPressed && e->reason() != Qt::MouseFocusReason) {
// Since we support multi touch there is no reason to reset
// the pressed flag if the Primary touch point is moved to an
// other widget
m_bPressed = false;
restyleAndRepaint();
}
+ QWidget::focusOutEvent(e);
}
void WPushButton::mouseReleaseEvent(QMouseEvent * e) {