aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickcombobox.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-04-19 13:36:56 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-04-19 12:50:50 +0000
commit0846541cd97b0fb30d51796ab9bf31d7684eb15b (patch)
tree1b901d5f587c5830b97bef75e8be6c4ea231c121 /src/quicktemplates2/qquickcombobox.cpp
parentf5b91d87a49c4e34063e72aa06a0f3d8eb1be50a (diff)
Revise QQuickComboBox internals
Move the logic of press/move/release/cancel event handlers into methods in the private class, that can be reused for touch events. Task-number: QTBUG-58389 Change-Id: Ifc587f53975a8ddd5cd8baea52aff259de39876e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickcombobox.cpp')
-rw-r--r--src/quicktemplates2/qquickcombobox.cpp46
1 files changed, 39 insertions, 7 deletions
diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp
index 85c577b4..1e24f022 100644
--- a/src/quicktemplates2/qquickcombobox.cpp
+++ b/src/quicktemplates2/qquickcombobox.cpp
@@ -243,6 +243,11 @@ public:
void createDelegateModel();
+ void handlePress(const QPointF &point);
+ void handleMove(const QPointF &point);
+ void handleRelease(const QPointF &point);
+ void handleUngrab();
+
bool flat;
bool down;
bool hasDown;
@@ -622,6 +627,33 @@ void QQuickComboBoxPrivate::createDelegateModel()
delete oldModel;
}
+void QQuickComboBoxPrivate::handlePress(const QPointF &)
+{
+ Q_Q(QQuickComboBox);
+ q->setPressed(true);
+}
+
+void QQuickComboBoxPrivate::handleMove(const QPointF &point)
+{
+ Q_Q(QQuickComboBox);
+ q->setPressed(q->contains(point));
+}
+
+void QQuickComboBoxPrivate::handleRelease(const QPointF &)
+{
+ Q_Q(QQuickComboBox);
+ if (pressed) {
+ q->setPressed(false);
+ togglePopup(false);
+ }
+}
+
+void QQuickComboBoxPrivate::handleUngrab()
+{
+ Q_Q(QQuickComboBox);
+ q->setPressed(false);
+}
+
QQuickComboBox::QQuickComboBox(QQuickItem *parent)
: QQuickControl(*(new QQuickComboBoxPrivate), parent)
{
@@ -1473,30 +1505,30 @@ void QQuickComboBox::keyReleaseEvent(QKeyEvent *event)
void QQuickComboBox::mousePressEvent(QMouseEvent *event)
{
+ Q_D(QQuickComboBox);
QQuickControl::mousePressEvent(event);
- setPressed(true);
+ d->handlePress(event->localPos());
}
void QQuickComboBox::mouseMoveEvent(QMouseEvent* event)
{
+ Q_D(QQuickComboBox);
QQuickControl::mouseMoveEvent(event);
- setPressed(contains(event->pos()));
+ d->handleMove(event->localPos());
}
void QQuickComboBox::mouseReleaseEvent(QMouseEvent *event)
{
Q_D(QQuickComboBox);
QQuickControl::mouseReleaseEvent(event);
- if (d->pressed) {
- setPressed(false);
- d->togglePopup(false);
- }
+ d->handleRelease(event->localPos());
}
void QQuickComboBox::mouseUngrabEvent()
{
+ Q_D(QQuickComboBox);
QQuickControl::mouseUngrabEvent();
- setPressed(false);
+ d->handleUngrab();
}
#if QT_CONFIG(wheelevent)