aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/calendar
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-06-25 09:03:40 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-06-26 09:54:33 +0000
commit5f09ab8b94ab83e04493940cbd6c95e6d363d0db (patch)
treeace107ece2a134780575d03be4e37ae6646dab40 /src/imports/calendar
parentc11ef4ffa905ac9ba5e5af89ed03b1786b5187a8 (diff)
QQuickMonthGrid: fix touch support
QQuickMonthGrid lost its clicked() signal when multi-touch support was added to QQuickControl, because QQuickControl now accepts touch events and therefore QQuickMonthGrid no longer gets synthesized mouse events. Re-implement QQuickControlPrivate::handlePress/Move/Release/Ungrab() instead of QQuickControl::mouseXxxEvent() to gain multi-touch support. Task-number: QTBUG-61585 Change-Id: Ic6fb2ea0b43b2b44beb0d8fdd3335a20f7c028f6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/calendar')
-rw-r--r--src/imports/calendar/qquickmonthgrid.cpp75
-rw-r--r--src/imports/calendar/qquickmonthgrid_p.h4
2 files changed, 40 insertions, 39 deletions
diff --git a/src/imports/calendar/qquickmonthgrid.cpp b/src/imports/calendar/qquickmonthgrid.cpp
index 9621f49a..46b18db6 100644
--- a/src/imports/calendar/qquickmonthgrid.cpp
+++ b/src/imports/calendar/qquickmonthgrid.cpp
@@ -106,12 +106,17 @@ public:
void resizeItems();
- QQuickItem *cellAt(const QPoint &pos) const;
+ QQuickItem *cellAt(const QPointF &pos) const;
QDate dateOf(QQuickItem *cell) const;
- void updatePress(const QPoint &pos);
+ void updatePress(const QPointF &pos);
void clearPress(bool clicked);
+ void handlePress(const QPointF &point) override;
+ void handleMove(const QPointF &point) override;
+ void handleRelease(const QPointF &point) override;
+ void handleUngrab() override;
+
static void setContextProperty(QQuickItem *item, const QString &name, const QVariant &value);
QString title;
@@ -133,11 +138,13 @@ void QQuickMonthGridPrivate::resizeItems()
itemSize.setHeight((contentItem->height() - 5 * spacing) / 6);
const auto childItems = contentItem->childItems();
- for (QQuickItem *item : childItems)
- item->setSize(itemSize);
+ for (QQuickItem *item : childItems) {
+ if (!QQuickItemPrivate::get(item)->isTransparentForPositioner())
+ item->setSize(itemSize);
+ }
}
-QQuickItem *QQuickMonthGridPrivate::cellAt(const QPoint &pos) const
+QQuickItem *QQuickMonthGridPrivate::cellAt(const QPointF &pos) const
{
Q_Q(const QQuickMonthGrid);
if (contentItem) {
@@ -154,7 +161,7 @@ QDate QQuickMonthGridPrivate::dateOf(QQuickItem *cell) const
return QDate();
}
-void QQuickMonthGridPrivate::updatePress(const QPoint &pos)
+void QQuickMonthGridPrivate::updatePress(const QPointF &pos)
{
Q_Q(QQuickMonthGrid);
clearPress(false);
@@ -178,6 +185,33 @@ void QQuickMonthGridPrivate::clearPress(bool clicked)
pressedItem = nullptr;
}
+void QQuickMonthGridPrivate::handlePress(const QPointF &point)
+{
+ Q_Q(QQuickMonthGrid);
+ QQuickControlPrivate::handlePress(point);
+ updatePress(point);
+ if (pressedDate.isValid())
+ pressTimer = q->startTimer(qGuiApp->styleHints()->mousePressAndHoldInterval());
+}
+
+void QQuickMonthGridPrivate::handleMove(const QPointF &point)
+{
+ QQuickControlPrivate::handleMove(point);
+ updatePress(point);
+}
+
+void QQuickMonthGridPrivate::handleRelease(const QPointF &point)
+{
+ QQuickControlPrivate::handleRelease(point);
+ clearPress(true);
+}
+
+void QQuickMonthGridPrivate::handleUngrab()
+{
+ QQuickControlPrivate::handleUngrab();
+ clearPress(false);
+}
+
void QQuickMonthGridPrivate::setContextProperty(QQuickItem *item, const QString &name, const QVariant &value)
{
QQmlContext *context = qmlContext(item);
@@ -402,35 +436,6 @@ void QQuickMonthGrid::updatePolish()
d->resizeItems();
}
-void QQuickMonthGrid::mousePressEvent(QMouseEvent *event)
-{
- Q_D(QQuickMonthGrid);
- d->updatePress(event->pos());
- if (d->pressedDate.isValid())
- d->pressTimer = startTimer(qGuiApp->styleHints()->mousePressAndHoldInterval());
- event->accept();
-}
-
-void QQuickMonthGrid::mouseMoveEvent(QMouseEvent *event)
-{
- Q_D(QQuickMonthGrid);
- d->updatePress(event->pos());
- event->accept();
-}
-
-void QQuickMonthGrid::mouseReleaseEvent(QMouseEvent *event)
-{
- Q_D(QQuickMonthGrid);
- d->clearPress(true);
- event->accept();
-}
-
-void QQuickMonthGrid::mouseUngrabEvent()
-{
- Q_D(QQuickMonthGrid);
- d->clearPress(false);
-}
-
void QQuickMonthGrid::timerEvent(QTimerEvent *event)
{
Q_D(QQuickMonthGrid);
diff --git a/src/imports/calendar/qquickmonthgrid_p.h b/src/imports/calendar/qquickmonthgrid_p.h
index 20c9c0fd..b85e0921 100644
--- a/src/imports/calendar/qquickmonthgrid_p.h
+++ b/src/imports/calendar/qquickmonthgrid_p.h
@@ -101,10 +101,6 @@ protected:
void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
void updatePolish() override;
- void mousePressEvent(QMouseEvent *event) override;
- void mouseMoveEvent(QMouseEvent *event) override;
- void mouseReleaseEvent(QMouseEvent *event) override;
- void mouseUngrabEvent() override;
void timerEvent(QTimerEvent *event) override;
private: