aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickswitch.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-09-06 23:27:32 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-09-06 23:31:16 +0200
commit9a9a9bd1144663e2cb74efdd3d3f6d76c72313f9 (patch)
tree2811ccf99d641b040587716f17be8c59a30e11fe /src/quicktemplates2/qquickswitch.cpp
parent320647bce7d968b5798dfc6946df555a548e3f8f (diff)
parent86180aed5008779b1b94731d9b4c6b1fdac8f3d3 (diff)
Merge remote-tracking branch 'origin/5.8' into dev
Diffstat (limited to 'src/quicktemplates2/qquickswitch.cpp')
-rw-r--r--src/quicktemplates2/qquickswitch.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickswitch.cpp b/src/quicktemplates2/qquickswitch.cpp
index 439950d8..37ae53f0 100644
--- a/src/quicktemplates2/qquickswitch.cpp
+++ b/src/quicktemplates2/qquickswitch.cpp
@@ -37,6 +37,8 @@
#include "qquickswitch_p.h"
#include "qquickabstractbutton_p_p.h"
+#include <QtGui/qstylehints.h>
+#include <QtGui/qguiapplication.h>
#include <QtQuick/private/qquickwindow_p.h>
#include <QtQuick/private/qquickevents_p_p.h>
@@ -119,8 +121,12 @@ bool QQuickSwitchPrivate::handleMousePressEvent(QQuickItem *child, QMouseEvent *
{
Q_Q(QQuickSwitch);
Q_UNUSED(child);
+ if ((focusPolicy & Qt::ClickFocus) == Qt::ClickFocus && !QGuiApplication::styleHints()->setFocusOnTouchRelease())
+ q->forceActiveFocus(Qt::MouseFocusReason);
+
pressPoint = event->pos();
q->setPressed(true);
+ emit q->pressed();
event->accept();
return true;
}
@@ -140,6 +146,9 @@ bool QQuickSwitchPrivate::handleMouseMoveEvent(QQuickItem *child, QMouseEvent *e
bool QQuickSwitchPrivate::handleMouseReleaseEvent(QQuickItem *child, QMouseEvent *event)
{
Q_Q(QQuickSwitch);
+ if ((focusPolicy & Qt::ClickFocus) == Qt::ClickFocus && QGuiApplication::styleHints()->setFocusOnTouchRelease())
+ q->forceActiveFocus(Qt::MouseFocusReason);
+
pressPoint = QPoint();
q->setPressed(false);
if (child->keepMouseGrab()) {
@@ -147,11 +156,14 @@ bool QQuickSwitchPrivate::handleMouseReleaseEvent(QQuickItem *child, QMouseEvent
q->setChecked(position > 0.5);
q->setPosition(checked ? 1.0 : 0.0);
child->setKeepMouseGrab(false);
- if (wasChecked != checked)
+ if (wasChecked != checked) {
+ emit q->released();
emit q->clicked();
+ }
event->accept();
} else {
q->toggle();
+ emit q->released();
emit q->clicked();
event->accept();
}