Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #70 from giucam/mouseeventsource
[qtdeclarative] Ignore mouse events synthesized by the OS in Quick2. Contributes to MER#1033
  • Loading branch information
giucam committed May 26, 2015
2 parents c9bae19 + a0ec51f commit d0c8958
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/quick/items/qquickmultipointtoucharea.cpp
Expand Up @@ -43,6 +43,7 @@
#include <QtQuick/qquickwindow.h>
#include <private/qsgadaptationlayer_p.h>
#include <private/qquickitem_p.h>
#include <private/qguiapplication_p.h>
#include <QEvent>
#include <QMouseEvent>
#include <math.h>
Expand Down Expand Up @@ -677,6 +678,10 @@ bool QQuickMultiPointTouchArea::sendMouseEvent(QMouseEvent *event)
QMouseEvent mouseEvent(event->type(), localPos, event->windowPos(), event->screenPos(),
event->button(), event->buttons(), event->modifiers());
mouseEvent.setAccepted(false);
QGuiApplicationPrivate::setMouseEventCapsAndVelocity(&mouseEvent,
QGuiApplicationPrivate::mouseEventCaps(event),
QGuiApplicationPrivate::mouseEventVelocity(event));
QGuiApplicationPrivate::setMouseEventSource(&mouseEvent, Qt::MouseEventSynthesizedByQt);

switch (mouseEvent.type()) {
case QEvent::MouseMove:
Expand Down
26 changes: 26 additions & 0 deletions src/quick/items/qquickwindow.cpp
Expand Up @@ -501,6 +501,7 @@ static QMouseEvent *touchToMouseEvent(QEvent::Type type, const QTouchEvent::Touc
transformedVelocity = transformMatrix.mapVector(p.velocity()).toVector2D();
}
QGuiApplicationPrivate::setMouseEventCapsAndVelocity(me, event->device()->capabilities(), transformedVelocity);
QGuiApplicationPrivate::setMouseEventSource(me, Qt::MouseEventSynthesizedByQt);
return me;
}

Expand Down Expand Up @@ -1386,6 +1387,7 @@ QMouseEvent *QQuickWindowPrivate::cloneMouseEvent(QMouseEvent *event, QPointF *t
event->windowPos(), event->screenPos(),
event->button(), event->buttons(), event->modifiers());
QGuiApplicationPrivate::setMouseEventCapsAndVelocity(me, caps, velocity);
QGuiApplicationPrivate::setMouseEventSource(me, QGuiApplicationPrivate::mouseEventSource(event));
me->setTimestamp(event->timestamp());
return me;
}
Expand Down Expand Up @@ -1462,6 +1464,12 @@ bool QQuickWindowPrivate::deliverMouseEvent(QMouseEvent *event)
void QQuickWindow::mousePressEvent(QMouseEvent *event)
{
Q_D(QQuickWindow);

if (event->source() == Qt::MouseEventSynthesizedBySystem) {
event->accept();
return;
}

#ifdef MOUSE_DEBUG
qWarning() << "QQuickWindow::mousePressEvent()" << event->localPos() << event->button() << event->buttons();
#endif
Expand All @@ -1473,6 +1481,12 @@ void QQuickWindow::mousePressEvent(QMouseEvent *event)
void QQuickWindow::mouseReleaseEvent(QMouseEvent *event)
{
Q_D(QQuickWindow);

if (event->source() == Qt::MouseEventSynthesizedBySystem) {
event->accept();
return;
}

#ifdef MOUSE_DEBUG
qWarning() << "QQuickWindow::mouseReleaseEvent()" << event->localPos() << event->button() << event->buttons();
#endif
Expand All @@ -1491,6 +1505,12 @@ void QQuickWindow::mouseReleaseEvent(QMouseEvent *event)
void QQuickWindow::mouseDoubleClickEvent(QMouseEvent *event)
{
Q_D(QQuickWindow);

if (event->source() == Qt::MouseEventSynthesizedBySystem) {
event->accept();
return;
}

#ifdef MOUSE_DEBUG
qWarning() << "QQuickWindow::mouseDoubleClickEvent()" << event->localPos() << event->button() << event->buttons();
#endif
Expand Down Expand Up @@ -1526,6 +1546,12 @@ bool QQuickWindowPrivate::sendHoverEvent(QEvent::Type type, QQuickItem *item,
void QQuickWindow::mouseMoveEvent(QMouseEvent *event)
{
Q_D(QQuickWindow);

if (event->source() == Qt::MouseEventSynthesizedBySystem) {
event->accept();
return;
}

#ifdef MOUSE_DEBUG
qWarning() << "QQuickWindow::mouseMoveEvent()" << event->localPos() << event->button() << event->buttons();
#endif
Expand Down

0 comments on commit d0c8958

Please sign in to comment.