diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-04-19 13:36:56 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-04-19 12:50:50 +0000 |
commit | 0846541cd97b0fb30d51796ab9bf31d7684eb15b (patch) | |
tree | 1b901d5f587c5830b97bef75e8be6c4ea231c121 /src/quicktemplates2/qquickcombobox.cpp | |
parent | f5b91d87a49c4e34063e72aa06a0f3d8eb1be50a (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.cpp | 46 |
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) |