From: Lars Knoll Date: Tue, 30 Aug 2011 14:48:57 +0000 (+0200) Subject: Use QMouseEvent instead of QGraphicsSceneMouseEvent X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=e4ba808305952dd313b495f20300ec6e2c3801ac;p=konrad%2Fqtdeclarative.git Use QMouseEvent instead of QGraphicsSceneMouseEvent QMouseEvent now supports floating point coordinates, and the graphics scene event is not be available in QtGui anymore. Change-Id: I28ab428a2d00fc1deef55b05c1c545e74838e105 Reviewed-on: http://codereview.qt.nokia.com/3991 Reviewed-by: Gunnar Sletta --- diff --git a/examples/declarative/text/textselection/textselection.qml b/examples/declarative/text/textselection/textselection.qml index 4b51f4e..a25d0df 100644 --- a/examples/declarative/text/textselection/textselection.qml +++ b/examples/declarative/text/textselection/textselection.qml @@ -37,7 +37,7 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -import QtQuick 1.0 +import QtQuick 2.0 Rectangle { id: editor @@ -105,85 +105,6 @@ Rectangle { +"

Click inside the selection to cut/copy/paste/cancel selection." +"

It's too whacky to let you paste if there is no current selection." - MouseArea { - property string drag: "" - property int pressPos - - x: -startHandle.width - y: 0 - width: parent.width+startHandle.width+endHandle.width - height: parent.height - - onPressAndHold: { - if (editor.state == "") { - edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y); - edit.selectWord(); - editor.state = "selection" - } - } - - onClicked: { - if (editor.state == "") { - edit.cursorPosition = edit.positionAt(mouse.x+x,mouse.y+y); - if (!edit.focus) - edit.focus = true; - edit.openSoftwareInputPanel(); - } - } - - function hitHandle(h,x,y) { - return x>=h.x+flick.contentX && x=h.y+flick.contentY && y= edit.selectionStart && pos <= edit.selectionEnd) { - drag = "selection" - flick.interactive = false - } else { - drag = "" - flick.interactive = true - } - } - } - } - - onReleased: { - if (editor.state == "selection") { - if (drag == "selection") { - editor.state = "menu" - } - drag = "" - } - flick.interactive = true - } - - onPositionChanged: { - if (editor.state == "selection" && drag != "") { - if (drag == "start") { - var pos = edit.positionAt(mouse.x+x+startHandle.width/2,mouse.y+y); - var e = edit.selectionEnd; - if (e < pos) - e = pos; - edit.select(pos,e); - } else if (drag == "end") { - var pos = edit.positionAt(mouse.x+x-endHandle.width/2,mouse.y+y); - var s = edit.selectionStart; - if (s > pos) - s = pos; - edit.select(s,pos); - } - } - } - } } } diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro index d0a3f01..78717c9 100644 --- a/src/declarative/declarative.pro +++ b/src/declarative/declarative.pro @@ -8,7 +8,7 @@ MODULE_PRI += ../../modules/qt_declarative.pri QT = core-private gui gui-private network widgets-private sql v8-private -DEFINES += QT_BUILD_DECLARATIVE_LIB QT_NO_URL_CAST_FROM_STRING +DEFINES += QT_BUILD_DECLARATIVE_LIB QT_NO_URL_CAST_FROM_STRING QT_NO_INTEGER_EVENT_COORDINATES win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x66000000 solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2 diff --git a/src/declarative/items/qsgcanvas.cpp b/src/declarative/items/qsgcanvas.cpp index 9f55c40..f97028a 100644 --- a/src/declarative/items/qsgcanvas.cpp +++ b/src/declarative/items/qsgcanvas.cpp @@ -56,7 +56,7 @@ #include #include -#include +#include #include #include #include @@ -471,19 +471,6 @@ void QSGCanvasPrivate::init(QSGCanvas *c) thread->moveContextToThread(context); } -void QSGCanvasPrivate::sceneMouseEventForTransform(QGraphicsSceneMouseEvent &sceneEvent, - const QTransform &transform) -{ - sceneEvent.setPos(transform.map(sceneEvent.scenePos())); - sceneEvent.setLastPos(transform.map(sceneEvent.lastScenePos())); - for (int ii = 0; ii < 5; ++ii) { - if (sceneEvent.buttons() & (1 << ii)) { - sceneEvent.setButtonDownPos((Qt::MouseButton)(1 << ii), - transform.map(sceneEvent.buttonDownScenePos((Qt::MouseButton)(1 << ii)))); - } - } -} - void QSGCanvasPrivate::transformTouchPoints(QList &touchPoints, const QTransform &transform) { for (int i=0; i &touc } } -QEvent::Type QSGCanvasPrivate::sceneMouseEventTypeFromMouseEvent(QMouseEvent *event) -{ - switch(event->type()) { - default: - Q_ASSERT(!"Unknown event type"); - case QEvent::MouseButtonPress: - return QEvent::GraphicsSceneMousePress; - case QEvent::MouseButtonRelease: - return QEvent::GraphicsSceneMouseRelease; - case QEvent::MouseButtonDblClick: - return QEvent::GraphicsSceneMouseDoubleClick; - case QEvent::MouseMove: - return QEvent::GraphicsSceneMouseMove; - } -} - -/*! -Fill in the data in \a sceneEvent based on \a event. This method leaves the item local positions in -\a sceneEvent untouched. Use sceneMouseEventForTransform() to fill in those details. -*/ -void QSGCanvasPrivate::sceneMouseEventFromMouseEvent(QGraphicsSceneMouseEvent &sceneEvent, QMouseEvent *event) -{ - Q_ASSERT(event); - - if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonDblClick) { - if ((event->button() & event->buttons()) == event->buttons()) { - lastMousePosition = event->pos(); - } - - switch (event->button()) { - default: - Q_ASSERT(!"Unknown button"); - case Qt::LeftButton: - buttonDownPositions[0] = event->pos(); - break; - case Qt::RightButton: - buttonDownPositions[1] = event->pos(); - break; - case Qt::MiddleButton: - buttonDownPositions[2] = event->pos(); - break; - case Qt::XButton1: - buttonDownPositions[3] = event->pos(); - break; - case Qt::XButton2: - buttonDownPositions[4] = event->pos(); - break; - } - } - - sceneEvent.setScenePos(event->pos()); - sceneEvent.setScreenPos(event->globalPos()); - sceneEvent.setLastScenePos(lastMousePosition); - sceneEvent.setLastScreenPos(lastMousePosition); // ### refactor: should do mapToGlobal - sceneEvent.setButtons(event->buttons()); - sceneEvent.setButton(event->button()); - sceneEvent.setModifiers(event->modifiers()); -// sceneEvent.setWidget(q); // ### refactor: - - for (int ii = 0; ii < 5; ++ii) { - if (sceneEvent.buttons() & (1 << ii)) { - sceneEvent.setButtonDownScenePos((Qt::MouseButton)(1 << ii), buttonDownPositions[ii]); - sceneEvent.setButtonDownScreenPos((Qt::MouseButton)(1 << ii), buttonDownPositions[ii]); // ### refactor: should do mapToGlobal - } - } - - lastMousePosition = event->pos(); -} /*! Translates the data in \a touchEvent to this canvas. This method leaves the item local positions in @@ -986,7 +905,7 @@ void QSGCanvas::inputMethodEvent(QInputMethodEvent *e) sendEvent(d->activeFocusItem, e); } -bool QSGCanvasPrivate::deliverInitialMousePressEvent(QSGItem *item, QGraphicsSceneMouseEvent *event) +bool QSGCanvasPrivate::deliverInitialMousePressEvent(QSGItem *item, QMouseEvent *event) { Q_Q(QSGCanvas); @@ -995,7 +914,7 @@ bool QSGCanvasPrivate::deliverInitialMousePressEvent(QSGItem *item, QGraphicsSce return false; if (itemPrivate->flags & QSGItem::ItemClipsChildrenToShape) { - QPointF p = item->mapFromScene(event->scenePos()); + QPointF p = item->mapFromScene(event->windowPos()); if (!QRectF(0, 0, item->width(), item->height()).contains(p)) return false; } @@ -1010,13 +929,15 @@ bool QSGCanvasPrivate::deliverInitialMousePressEvent(QSGItem *item, QGraphicsSce } if (itemPrivate->acceptedMouseButtons & event->button()) { - QPointF p = item->mapFromScene(event->scenePos()); + QPointF p = item->mapFromScene(event->windowPos()); if (QRectF(0, 0, item->width(), item->height()).contains(p)) { - sceneMouseEventForTransform(*event, itemPrivate->canvasToItemTransform()); - event->accept(); + QMouseEvent me(event->type(), p, event->windowPos(), event->screenPos(), + event->button(), event->buttons(), event->modifiers()); + me.accept(); mouseGrabberItem = item; - q->sendEvent(item, event); - if (event->isAccepted()) + q->sendEvent(item, &me); + event->setAccepted(me.isAccepted()); + if (me.isAccepted()) return true; mouseGrabberItem->ungrabMouse(); mouseGrabberItem = 0; @@ -1026,24 +947,28 @@ bool QSGCanvasPrivate::deliverInitialMousePressEvent(QSGItem *item, QGraphicsSce return false; } -bool QSGCanvasPrivate::deliverMouseEvent(QGraphicsSceneMouseEvent *sceneEvent) +bool QSGCanvasPrivate::deliverMouseEvent(QMouseEvent *event) { Q_Q(QSGCanvas); - if (!mouseGrabberItem && - sceneEvent->type() == QEvent::GraphicsSceneMousePress && - (sceneEvent->button() & sceneEvent->buttons()) == sceneEvent->buttons()) { + lastMousePosition = event->windowPos(); - return deliverInitialMousePressEvent(rootItem, sceneEvent); + if (!mouseGrabberItem && + event->type() == QEvent::MouseButtonPress && + (event->button() & event->buttons()) == event->buttons()) { + + return deliverInitialMousePressEvent(rootItem, event); } if (mouseGrabberItem) { QSGItemPrivate *mgPrivate = QSGItemPrivate::get(mouseGrabberItem); - sceneMouseEventForTransform(*sceneEvent, mgPrivate->canvasToItemTransform()); - - sceneEvent->accept(); - q->sendEvent(mouseGrabberItem, sceneEvent); - if (sceneEvent->isAccepted()) + const QTransform &transform = mgPrivate->canvasToItemTransform(); + QMouseEvent me(event->type(), transform.map(event->windowPos()), event->windowPos(), event->screenPos(), + event->button(), event->buttons(), event->modifiers()); + me.accept(); + q->sendEvent(mouseGrabberItem, &me); + event->setAccepted(me.isAccepted()); + if (me.isAccepted()) return true; } @@ -1058,11 +983,7 @@ void QSGCanvas::mousePressEvent(QMouseEvent *event) qWarning() << "QSGCanvas::mousePressEvent()" << event->pos() << event->button() << event->buttons(); #endif - QGraphicsSceneMouseEvent sceneEvent(d->sceneMouseEventTypeFromMouseEvent(event)); - d->sceneMouseEventFromMouseEvent(sceneEvent, event); - - d->deliverMouseEvent(&sceneEvent); - event->setAccepted(sceneEvent.isAccepted()); + d->deliverMouseEvent(event); } void QSGCanvas::mouseReleaseEvent(QMouseEvent *event) @@ -1078,12 +999,7 @@ void QSGCanvas::mouseReleaseEvent(QMouseEvent *event) return; } - QGraphicsSceneMouseEvent sceneEvent(d->sceneMouseEventTypeFromMouseEvent(event)); - d->sceneMouseEventFromMouseEvent(sceneEvent, event); - - d->deliverMouseEvent(&sceneEvent); - event->setAccepted(sceneEvent.isAccepted()); - + d->deliverMouseEvent(event); d->mouseGrabberItem = 0; } @@ -1095,19 +1011,15 @@ void QSGCanvas::mouseDoubleClickEvent(QMouseEvent *event) qWarning() << "QSGCanvas::mouseDoubleClickEvent()" << event->pos() << event->button() << event->buttons(); #endif - QGraphicsSceneMouseEvent sceneEvent(d->sceneMouseEventTypeFromMouseEvent(event)); - d->sceneMouseEventFromMouseEvent(sceneEvent, event); - if (!d->mouseGrabberItem && (event->button() & event->buttons()) == event->buttons()) { - if (d->deliverInitialMousePressEvent(d->rootItem, &sceneEvent)) + if (d->deliverInitialMousePressEvent(d->rootItem, event)) event->accept(); else event->ignore(); return; } - d->deliverMouseEvent(&sceneEvent); - event->setAccepted(sceneEvent.isAccepted()); + d->deliverMouseEvent(event); } bool QSGCanvasPrivate::sendHoverEvent(QEvent::Type type, QSGItem *item, @@ -1136,12 +1048,12 @@ void QSGCanvas::mouseMoveEvent(QMouseEvent *event) if (!d->mouseGrabberItem) { if (d->lastMousePosition.isNull()) - d->lastMousePosition = event->pos(); + d->lastMousePosition = event->windowPos(); QPointF last = d->lastMousePosition; - d->lastMousePosition = event->pos(); + d->lastMousePosition = event->windowPos(); bool accepted = event->isAccepted(); - bool delivered = d->deliverHoverEvent(d->rootItem, event->pos(), last, event->modifiers(), accepted); + bool delivered = d->deliverHoverEvent(d->rootItem, event->windowPos(), last, event->modifiers(), accepted); if (!delivered) { //take care of any exits accepted = d->clearHover(); @@ -1150,11 +1062,7 @@ void QSGCanvas::mouseMoveEvent(QMouseEvent *event) return; } - QGraphicsSceneMouseEvent sceneEvent(d->sceneMouseEventTypeFromMouseEvent(event)); - d->sceneMouseEventFromMouseEvent(sceneEvent, event); - - d->deliverMouseEvent(&sceneEvent); - event->setAccepted(sceneEvent.isAccepted()); + d->deliverMouseEvent(event); } bool QSGCanvasPrivate::deliverHoverEvent(QSGItem *item, const QPointF &scenePos, const QPointF &lastScenePos, @@ -1233,7 +1141,7 @@ bool QSGCanvasPrivate::deliverWheelEvent(QSGItem *item, QWheelEvent *event) return false; if (itemPrivate->flags & QSGItem::ItemClipsChildrenToShape) { - QPointF p = item->mapFromScene(event->pos()); + QPointF p = item->mapFromScene(event->posF()); if (!QRectF(0, 0, item->width(), item->height()).contains(p)) return false; } @@ -1247,7 +1155,7 @@ bool QSGCanvasPrivate::deliverWheelEvent(QSGItem *item, QWheelEvent *event) return true; } - QPointF p = item->mapFromScene(event->pos()); + QPointF p = item->mapFromScene(event->posF()); if (QRectF(0, 0, item->width(), item->height()).contains(p)) { QWheelEvent wheel(p, event->delta(), event->buttons(), event->modifiers(), event->orientation()); wheel.accept(); @@ -1494,7 +1402,7 @@ bool QSGCanvasPrivate::deliverDragEvent(QSGItem *item, QSGDragEvent *event) return false; } -bool QSGCanvasPrivate::sendFilteredMouseEvent(QSGItem *target, QSGItem *item, QGraphicsSceneMouseEvent *event) +bool QSGCanvasPrivate::sendFilteredMouseEvent(QSGItem *target, QSGItem *item, QMouseEvent *event) { if (!target) return false; @@ -1543,13 +1451,13 @@ bool QSGCanvas::sendEvent(QSGItem *item, QEvent *e) case QEvent::FocusOut: QSGItemPrivate::get(item)->deliverFocusEvent(static_cast(e)); break; - case QEvent::GraphicsSceneMousePress: - case QEvent::GraphicsSceneMouseRelease: - case QEvent::GraphicsSceneMouseDoubleClick: - case QEvent::GraphicsSceneMouseMove: - // XXX todo - should sendEvent be doing this? how does it relate to forwarded events? + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: + case QEvent::MouseMove: + // XXX todo - should sendEvent be doing this? how does it relate to forwarded events? { - QGraphicsSceneMouseEvent *se = static_cast(e); + QMouseEvent *se = static_cast(e); if (!d->sendFilteredMouseEvent(item->parentItem(), item, se)) { se->accept(); QSGItemPrivate::get(item)->deliverMouseEvent(se); diff --git a/src/declarative/items/qsgcanvas_p.h b/src/declarative/items/qsgcanvas_p.h index e5347f5..6915bff 100644 --- a/src/declarative/items/qsgcanvas_p.h +++ b/src/declarative/items/qsgcanvas_p.h @@ -102,16 +102,12 @@ public: QSGItem *mouseGrabberItem; // Mouse positions are saved in widget coordinates - QPoint lastMousePosition; - QPoint buttonDownPositions[5]; // Left, Right, Middle, XButton1, XButton2 - void sceneMouseEventFromMouseEvent(QGraphicsSceneMouseEvent &, QMouseEvent *); + QPointF lastMousePosition; void translateTouchEvent(QTouchEvent *touchEvent); - static QEvent::Type sceneMouseEventTypeFromMouseEvent(QMouseEvent *); - static void sceneMouseEventForTransform(QGraphicsSceneMouseEvent &, const QTransform &); static void transformTouchPoints(QList &touchPoints, const QTransform &transform); - bool deliverInitialMousePressEvent(QSGItem *, QGraphicsSceneMouseEvent *); - bool deliverMouseEvent(QGraphicsSceneMouseEvent *); - bool sendFilteredMouseEvent(QSGItem *, QSGItem *, QGraphicsSceneMouseEvent *); + bool deliverInitialMousePressEvent(QSGItem *, QMouseEvent *); + bool deliverMouseEvent(QMouseEvent *); + bool sendFilteredMouseEvent(QSGItem *, QSGItem *, QMouseEvent *); bool deliverWheelEvent(QSGItem *, QWheelEvent *); bool deliverTouchPoints(QSGItem *, QTouchEvent *, const QList &, QSet *, QHash > *); diff --git a/src/declarative/items/qsgflickable.cpp b/src/declarative/items/qsgflickable.cpp index e63698e..92554f8 100644 --- a/src/declarative/items/qsgflickable.cpp +++ b/src/declarative/items/qsgflickable.cpp @@ -45,7 +45,7 @@ #include "qsgcanvas_p.h" #include -#include +#include #include #include "qplatformdefs.h" @@ -777,7 +777,7 @@ void QSGFlickable::setFlickableDirection(FlickableDirection direction) } } -void QSGFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGFlickablePrivate::handleMousePressEvent(QMouseEvent *event) { Q_Q(QSGFlickable); if (interactive && timeline.isActive() @@ -799,7 +799,7 @@ void QSGFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) fixupMode = Normal; lastPos = QPoint(); QSGItemPrivate::start(lastPosTime); - pressPos = event->pos(); + pressPos = event->localPos(); hData.pressPos = hData.move.value(); vData.pressPos = vData.move.value(); flickingHorizontally = false; @@ -808,7 +808,7 @@ void QSGFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) QSGItemPrivate::start(velocityTime); } -void QSGFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event) { Q_Q(QSGFlickable); if (!interactive || !lastPosTime.isValid()) @@ -820,7 +820,7 @@ void QSGFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) bool stealX = stealMouse; if (q->yflick()) { - int dy = int(event->pos().y() - pressPos.y()); + int dy = int(event->localPos().y() - pressPos.y()); if (qAbs(dy) > QApplication::startDragDistance() || QSGItemPrivate::elapsed(pressTime) > 200) { if (!vMoved) vData.dragStartOffset = dy; @@ -852,7 +852,7 @@ void QSGFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) } if (q->xflick()) { - int dx = int(event->pos().x() - pressPos.x()); + int dx = int(event->localPos().x() - pressPos.x()); if (qAbs(dx) > QApplication::startDragDistance() || QSGItemPrivate::elapsed(pressTime) > 200) { if (!hMoved) hData.dragStartOffset = dx; @@ -908,18 +908,18 @@ void QSGFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) if (elapsed <= 0) return; QSGItemPrivate::restart(lastPosTime); - qreal dy = event->pos().y()-lastPos.y(); + qreal dy = event->localPos().y()-lastPos.y(); if (q->yflick() && !rejectY) vData.addVelocitySample(dy/elapsed, maxVelocity); - qreal dx = event->pos().x()-lastPos.x(); + qreal dx = event->localPos().x()-lastPos.x(); if (q->xflick() && !rejectX) hData.addVelocitySample(dx/elapsed, maxVelocity); } - lastPos = event->pos(); + lastPos = event->localPos(); } -void QSGFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGFlickablePrivate::handleMouseReleaseEvent(QMouseEvent *event) { Q_Q(QSGFlickable); stealMouse = false; @@ -945,7 +945,7 @@ void QSGFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *even qreal velocity = vData.velocity; if (vData.atBeginning || vData.atEnd) velocity /= 2; - if (qAbs(velocity) > MinimumFlickVelocity && qAbs(event->pos().y() - pressPos.y()) > FlickThreshold) + if (qAbs(velocity) > MinimumFlickVelocity && qAbs(event->localPos().y() - pressPos.y()) > FlickThreshold) flickY(velocity); else fixupY(); @@ -953,7 +953,7 @@ void QSGFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *even velocity = hData.velocity; if (hData.atBeginning || hData.atEnd) velocity /= 2; - if (qAbs(velocity) > MinimumFlickVelocity && qAbs(event->pos().x() - pressPos.x()) > FlickThreshold) + if (qAbs(velocity) > MinimumFlickVelocity && qAbs(event->localPos().x() - pressPos.x()) > FlickThreshold) flickX(velocity); else fixupX(); @@ -962,7 +962,7 @@ void QSGFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *even q->movementEnding(); } -void QSGFlickable::mousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGFlickable::mousePressEvent(QMouseEvent *event) { Q_D(QSGFlickable); if (d->interactive) { @@ -974,7 +974,7 @@ void QSGFlickable::mousePressEvent(QGraphicsSceneMouseEvent *event) } } -void QSGFlickable::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGFlickable::mouseMoveEvent(QMouseEvent *event) { Q_D(QSGFlickable); if (d->interactive) { @@ -985,7 +985,7 @@ void QSGFlickable::mouseMoveEvent(QGraphicsSceneMouseEvent *event) } } -void QSGFlickable::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGFlickable::mouseReleaseEvent(QMouseEvent *event) { Q_D(QSGFlickable); if (d->interactive) { @@ -1058,7 +1058,7 @@ bool QSGFlickablePrivate::isOutermostPressDelay() const return true; } -void QSGFlickablePrivate::captureDelayedPress(QGraphicsSceneMouseEvent *event) +void QSGFlickablePrivate::captureDelayedPress(QMouseEvent *event) { Q_Q(QSGFlickable); if (!q->canvas() || pressDelay <= 0) @@ -1066,25 +1066,8 @@ void QSGFlickablePrivate::captureDelayedPress(QGraphicsSceneMouseEvent *event) if (!isOutermostPressDelay()) return; delayedPressTarget = q->canvas()->mouseGrabberItem(); - delayedPressEvent = new QGraphicsSceneMouseEvent(event->type()); + delayedPressEvent = new QMouseEvent(*event); delayedPressEvent->setAccepted(false); - for (int i = 0x1; i <= 0x10; i <<= 1) { - if (event->buttons() & i) { - Qt::MouseButton button = Qt::MouseButton(i); - delayedPressEvent->setButtonDownPos(button, event->buttonDownPos(button)); - delayedPressEvent->setButtonDownScenePos(button, event->buttonDownScenePos(button)); - delayedPressEvent->setButtonDownScreenPos(button, event->buttonDownScreenPos(button)); - } - } - delayedPressEvent->setButtons(event->buttons()); - delayedPressEvent->setButton(event->button()); - delayedPressEvent->setPos(event->pos()); - delayedPressEvent->setScenePos(event->scenePos()); - delayedPressEvent->setScreenPos(event->screenPos()); - delayedPressEvent->setLastPos(event->lastPos()); - delayedPressEvent->setLastScenePos(event->lastScenePos()); - delayedPressEvent->setLastScreenPos(event->lastScreenPos()); - delayedPressEvent->setModifiers(event->modifiers()); delayedPressTimer.start(pressDelay, q); } @@ -1501,34 +1484,26 @@ void QSGFlickable::mouseUngrabEvent() } } -bool QSGFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event) +bool QSGFlickable::sendMouseEvent(QMouseEvent *event) { Q_D(QSGFlickable); - QGraphicsSceneMouseEvent mouseEvent(event->type()); QRectF myRect = mapRectToScene(QRectF(0, 0, width(), height())); QSGCanvas *c = canvas(); QSGItem *grabber = c ? c->mouseGrabberItem() : 0; bool disabledItem = grabber && !grabber->isEnabled(); bool stealThisEvent = d->stealMouse; - if ((stealThisEvent || myRect.contains(event->scenePos().toPoint())) && (!grabber || !grabber->keepMouseGrab() || disabledItem)) { + if ((stealThisEvent || myRect.contains(event->windowPos())) && (!grabber || !grabber->keepMouseGrab() || disabledItem)) { + QMouseEvent mouseEvent(event->type(), mapFromScene(event->windowPos()), event->windowPos(), event->screenPos(), + event->button(), event->buttons(), event->modifiers()); + mouseEvent.setAccepted(false); - for (int i = 0x1; i <= 0x10; i <<= 1) { - if (event->buttons() & i) { - Qt::MouseButton button = Qt::MouseButton(i); - mouseEvent.setButtonDownPos(button, mapFromScene(event->buttonDownPos(button))); - } - } - mouseEvent.setScenePos(event->scenePos()); - mouseEvent.setLastScenePos(event->lastScenePos()); - mouseEvent.setPos(mapFromScene(event->scenePos())); - mouseEvent.setLastPos(mapFromScene(event->lastScenePos())); switch(mouseEvent.type()) { - case QEvent::GraphicsSceneMouseMove: + case QEvent::MouseMove: d->handleMouseMoveEvent(&mouseEvent); break; - case QEvent::GraphicsSceneMousePress: + case QEvent::MouseButtonPress: if (d->pressed) // we are already pressed - this is a delayed replay return false; @@ -1536,7 +1511,7 @@ bool QSGFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event) d->captureDelayedPress(event); stealThisEvent = d->stealMouse; // Update stealThisEvent in case changed by function call above break; - case QEvent::GraphicsSceneMouseRelease: + case QEvent::MouseButtonRelease: if (d->delayedPressEvent) { // We replay the mouse press but the grabber we had might not be interessted by the event (e.g. overlay) // so we reset the grabber @@ -1568,7 +1543,7 @@ bool QSGFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event) d->lastPosTime.invalidate(); returnToBounds(); } - if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) { + if (event->type() == QEvent::MouseButtonRelease) { d->lastPosTime.invalidate(); d->clearDelayedPress(); d->stealMouse = false; @@ -1584,10 +1559,10 @@ bool QSGFlickable::childMouseEventFilter(QSGItem *i, QEvent *e) if (!isVisible() || !d->interactive || !isEnabled()) return QSGItem::childMouseEventFilter(i, e); switch (e->type()) { - case QEvent::GraphicsSceneMousePress: - case QEvent::GraphicsSceneMouseMove: - case QEvent::GraphicsSceneMouseRelease: - return sendMouseEvent(static_cast(e)); + case QEvent::MouseButtonPress: + case QEvent::MouseMove: + case QEvent::MouseButtonRelease: + return sendMouseEvent(static_cast(e)); default: break; } diff --git a/src/declarative/items/qsgflickable_p.h b/src/declarative/items/qsgflickable_p.h index 7f12e8a..14f5232 100644 --- a/src/declarative/items/qsgflickable_p.h +++ b/src/declarative/items/qsgflickable_p.h @@ -191,9 +191,9 @@ Q_SIGNALS: protected: virtual bool childMouseEventFilter(QSGItem *, QEvent *); - virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); virtual void wheelEvent(QWheelEvent *event); virtual void timerEvent(QTimerEvent *event); @@ -217,7 +217,7 @@ protected: virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); void mouseUngrabEvent(); - bool sendMouseEvent(QGraphicsSceneMouseEvent *event); + bool sendMouseEvent(QMouseEvent *event); bool xflick() const; bool yflick() const; diff --git a/src/declarative/items/qsgflickable_p_p.h b/src/declarative/items/qsgflickable_p_p.h index 9e854af..3ac6d87 100644 --- a/src/declarative/items/qsgflickable_p_p.h +++ b/src/declarative/items/qsgflickable_p_p.h @@ -138,7 +138,7 @@ public: void updateBeginningEnd(); bool isOutermostPressDelay() const; - void captureDelayedPress(QGraphicsSceneMouseEvent *event); + void captureDelayedPress(QMouseEvent *event); void clearDelayedPress(); void setViewportX(qreal x); @@ -177,7 +177,7 @@ public: QElapsedTimer velocityTime; QPointF lastFlickablePosition; qreal reportedVelocitySmoothing; - QGraphicsSceneMouseEvent *delayedPressEvent; + QMouseEvent *delayedPressEvent; QSGItem *delayedPressTarget; QBasicTimer delayedPressTimer; int pressDelay; @@ -196,9 +196,9 @@ public: QSGFlickable::FlickableDirection flickableDirection; QSGFlickable::BoundsBehavior boundsBehavior; - void handleMousePressEvent(QGraphicsSceneMouseEvent *); - void handleMouseMoveEvent(QGraphicsSceneMouseEvent *); - void handleMouseReleaseEvent(QGraphicsSceneMouseEvent *); + void handleMousePressEvent(QMouseEvent *); + void handleMouseMoveEvent(QMouseEvent *); + void handleMouseReleaseEvent(QMouseEvent *); // flickableData property static void data_append(QDeclarativeListProperty *, QObject *); diff --git a/src/declarative/items/qsgitem.cpp b/src/declarative/items/qsgitem.cpp index a779763..c7df26d 100644 --- a/src/declarative/items/qsgitem.cpp +++ b/src/declarative/items/qsgitem.cpp @@ -2829,22 +2829,22 @@ void QSGItem::focusOutEvent(QFocusEvent *) { } -void QSGItem::mousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGItem::mousePressEvent(QMouseEvent *event) { event->ignore(); } -void QSGItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGItem::mouseMoveEvent(QMouseEvent *event) { event->ignore(); } -void QSGItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGItem::mouseReleaseEvent(QMouseEvent *event) { event->ignore(); } -void QSGItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +void QSGItem::mouseDoubleClickEvent(QMouseEvent *event) { mousePressEvent(event); } @@ -3341,7 +3341,7 @@ void QSGItemPrivate::deliverFocusEvent(QFocusEvent *e) } } -void QSGItemPrivate::deliverMouseEvent(QGraphicsSceneMouseEvent *e) +void QSGItemPrivate::deliverMouseEvent(QMouseEvent *e) { Q_Q(QSGItem); @@ -3350,16 +3350,16 @@ void QSGItemPrivate::deliverMouseEvent(QGraphicsSceneMouseEvent *e) switch(e->type()) { default: Q_ASSERT(!"Unknown event type"); - case QEvent::GraphicsSceneMouseMove: + case QEvent::MouseMove: q->mouseMoveEvent(e); break; - case QEvent::GraphicsSceneMousePress: + case QEvent::MouseButtonPress: q->mousePressEvent(e); break; - case QEvent::GraphicsSceneMouseRelease: + case QEvent::MouseButtonRelease: q->mouseReleaseEvent(e); break; - case QEvent::GraphicsSceneMouseDoubleClick: + case QEvent::MouseButtonDblClick: q->mouseDoubleClickEvent(e); break; } diff --git a/src/declarative/items/qsgitem.h b/src/declarative/items/qsgitem.h index 02a7a33..bff32e3 100644 --- a/src/declarative/items/qsgitem.h +++ b/src/declarative/items/qsgitem.h @@ -48,7 +48,7 @@ #include #include -#include +#include #include #include @@ -360,10 +360,10 @@ protected: virtual void inputMethodEvent(QInputMethodEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); - virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void mouseUngrabEvent(); // XXX todo - params? virtual void wheelEvent(QWheelEvent *event); virtual void touchEvent(QTouchEvent *event); diff --git a/src/declarative/items/qsgitem_p.h b/src/declarative/items/qsgitem_p.h index a3acb97..294edc0 100644 --- a/src/declarative/items/qsgitem_p.h +++ b/src/declarative/items/qsgitem_p.h @@ -320,7 +320,7 @@ public: void deliverKeyEvent(QKeyEvent *); void deliverInputMethodEvent(QInputMethodEvent *); void deliverFocusEvent(QFocusEvent *); - void deliverMouseEvent(QGraphicsSceneMouseEvent *); + void deliverMouseEvent(QMouseEvent *); void deliverWheelEvent(QWheelEvent *); void deliverTouchEvent(QTouchEvent *); void deliverHoverEvent(QHoverEvent *); diff --git a/src/declarative/items/qsgmousearea.cpp b/src/declarative/items/qsgmousearea.cpp index 7d86d2e..547df31 100644 --- a/src/declarative/items/qsgmousearea.cpp +++ b/src/declarative/items/qsgmousearea.cpp @@ -45,8 +45,8 @@ #include "qsgevent.h" #include "qsgevents_p_p.h" -#include -#include +#include +#include #include @@ -272,21 +272,15 @@ void QSGMouseAreaPrivate::init() q->setFiltersChildMouseEvents(true); } -void QSGMouseAreaPrivate::saveEvent(QGraphicsSceneMouseEvent *event) +void QSGMouseAreaPrivate::saveEvent(QMouseEvent *event) { - lastPos = event->pos(); - lastScenePos = event->scenePos(); + lastPos = event->localPos(); + lastScenePos = event->windowPos(); lastButton = event->button(); lastButtons = event->buttons(); lastModifiers = event->modifiers(); } -void QSGMouseAreaPrivate::forwardEvent(QGraphicsSceneMouseEvent* event) -{ - Q_Q(QSGMouseArea); - event->setPos(q->mapFromScene(event->scenePos())); -} - bool QSGMouseAreaPrivate::isPressAndHoldConnected() { Q_Q(QSGMouseArea); @@ -704,7 +698,7 @@ Qt::MouseButtons QSGMouseArea::pressedButtons() const return d->lastButtons; } -void QSGMouseArea::mousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGMouseArea::mousePressEvent(QMouseEvent *event) { Q_D(QSGMouseArea); d->moved = false; @@ -722,7 +716,7 @@ void QSGMouseArea::mousePressEvent(QGraphicsSceneMouseEvent *event) if (d->drag) d->drag->setActive(false); setHovered(true); - d->startScene = event->scenePos(); + d->startScene = event->windowPos(); d->pressAndHoldTimer.start(PressAndHoldDelay, this); setKeepMouseGrab(d->stealMouse); event->setAccepted(setPressed(true)); @@ -730,7 +724,7 @@ void QSGMouseArea::mousePressEvent(QGraphicsSceneMouseEvent *event) } } -void QSGMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGMouseArea::mouseMoveEvent(QMouseEvent *event) { Q_D(QSGMouseArea); if (!d->absorb) { @@ -760,13 +754,13 @@ void QSGMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) QPointF curLocalPos; if (drag()->target()->parentItem()) { startLocalPos = drag()->target()->parentItem()->mapFromScene(d->startScene); - curLocalPos = drag()->target()->parentItem()->mapFromScene(event->scenePos()); + curLocalPos = drag()->target()->parentItem()->mapFromScene(event->windowPos()); } else { startLocalPos = d->startScene; - curLocalPos = event->scenePos(); + curLocalPos = event->windowPos(); } - const int dragThreshold = QApplication::startDragDistance(); + const int dragThreshold = 20; // ### refactor: QGuiApplication::startDragDistance(); qreal dx = qAbs(curLocalPos.x() - startLocalPos.x()); qreal dy = qAbs(curLocalPos.y() - startLocalPos.y()); @@ -824,7 +818,7 @@ void QSGMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) if (d->drag->active()) { QSGDragEvent dragEvent( QSGEvent::SGDragMove, - event->scenePos(), + event->windowPos(), d->drag->data(), d->drag->keys(), d->drag->grabItem()); @@ -841,7 +835,7 @@ void QSGMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) emit positionChanged(&me); } -void QSGMouseArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGMouseArea::mouseReleaseEvent(QMouseEvent *event) { Q_D(QSGMouseArea); d->stealMouse = false; @@ -853,7 +847,7 @@ void QSGMouseArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) if (d->drag && d->drag->active()) { QSGDragEvent dragEvent( QSGEvent::SGDragDrop, - event->scenePos(), + event->windowPos(), d->drag->data(), d->drag->keys(), d->drag->grabItem()); @@ -880,12 +874,10 @@ void QSGMouseArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) d->doubleClick = false; } -void QSGMouseArea::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +void QSGMouseArea::mouseDoubleClickEvent(QMouseEvent *event) { Q_D(QSGMouseArea); - if (!d->absorb) { - QSGItem::mouseDoubleClickEvent(event); - } else { + if (d->absorb) { d->saveEvent(event); QSGMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, true, false); me.setAccepted(d->isDoubleClickConnected()); @@ -893,8 +885,8 @@ void QSGMouseArea::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) if (!me.isAccepted()) d->propagate(&me, QSGMouseAreaPrivate::DoubleClick); d->doubleClick = d->isDoubleClickConnected() || me.isAccepted(); - QSGItem::mouseDoubleClickEvent(event); } + QSGItem::mouseDoubleClickEvent(event); } void QSGMouseArea::hoverEnterEvent(QHoverEvent *event) @@ -963,36 +955,27 @@ void QSGMouseArea::mouseUngrabEvent() ungrabMouse(); } -bool QSGMouseArea::sendMouseEvent(QGraphicsSceneMouseEvent *event) +bool QSGMouseArea::sendMouseEvent(QMouseEvent *event) { Q_D(QSGMouseArea); - QGraphicsSceneMouseEvent mouseEvent(event->type()); QRectF myRect = mapRectToScene(QRectF(0, 0, width(), height())); QSGCanvas *c = canvas(); QSGItem *grabber = c ? c->mouseGrabberItem() : 0; bool stealThisEvent = d->stealMouse; - if ((stealThisEvent || myRect.contains(event->scenePos().toPoint())) && (!grabber || !grabber->keepMouseGrab())) { + if ((stealThisEvent || myRect.contains(event->windowPos())) && (!grabber || !grabber->keepMouseGrab())) { + QMouseEvent mouseEvent(event->type(), mapFromScene(event->windowPos()), event->windowPos(), event->screenPos(), + event->button(), event->buttons(), event->modifiers()); mouseEvent.setAccepted(false); - for (int i = 0x1; i <= 0x10; i <<= 1) { - if (event->buttons() & i) { - Qt::MouseButton button = Qt::MouseButton(i); - mouseEvent.setButtonDownPos(button, mapFromScene(event->buttonDownPos(button))); - } - } - mouseEvent.setScenePos(event->scenePos()); - mouseEvent.setLastScenePos(event->lastScenePos()); - mouseEvent.setPos(mapFromScene(event->scenePos())); - mouseEvent.setLastPos(mapFromScene(event->lastScenePos())); - switch(mouseEvent.type()) { - case QEvent::GraphicsSceneMouseMove: + switch (event->type()) { + case QEvent::MouseMove: mouseMoveEvent(&mouseEvent); break; - case QEvent::GraphicsSceneMousePress: + case QEvent::MouseButtonPress: mousePressEvent(&mouseEvent); break; - case QEvent::GraphicsSceneMouseRelease: + case QEvent::MouseButtonRelease: mouseReleaseEvent(&mouseEvent); break; default: @@ -1004,7 +987,7 @@ bool QSGMouseArea::sendMouseEvent(QGraphicsSceneMouseEvent *event) return stealThisEvent; } - if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) { + if (event->type() == QEvent::MouseButtonRelease) { if (d->pressed) { d->pressed = false; d->stealMouse = false; @@ -1027,10 +1010,10 @@ bool QSGMouseArea::childMouseEventFilter(QSGItem *i, QEvent *e) if (!d->absorb || !isVisible() || !d->drag || !d->drag->filterChildren()) return QSGItem::childMouseEventFilter(i, e); switch (e->type()) { - case QEvent::GraphicsSceneMousePress: - case QEvent::GraphicsSceneMouseMove: - case QEvent::GraphicsSceneMouseRelease: - return sendMouseEvent(static_cast(e)); + case QEvent::MouseButtonPress: + case QEvent::MouseMove: + case QEvent::MouseButtonRelease: + return sendMouseEvent(static_cast(e)); default: break; } @@ -1108,7 +1091,6 @@ bool QSGMouseArea::hoverEnabled() const void QSGMouseArea::setHoverEnabled(bool h) { - Q_D(QSGMouseArea); if (h == acceptHoverEvents()) return; diff --git a/src/declarative/items/qsgmousearea_p.h b/src/declarative/items/qsgmousearea_p.h index ff3863c..c7d3cb7 100644 --- a/src/declarative/items/qsgmousearea_p.h +++ b/src/declarative/items/qsgmousearea_p.h @@ -211,12 +211,12 @@ Q_SIGNALS: protected: void setHovered(bool); bool setPressed(bool); - bool sendMouseEvent(QGraphicsSceneMouseEvent *event); + bool sendMouseEvent(QMouseEvent *event); - virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void mouseDoubleClickEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseUngrabEvent(); virtual void hoverEnterEvent(QHoverEvent *event); virtual void hoverMoveEvent(QHoverEvent *event); diff --git a/src/declarative/items/qsgmousearea_p_p.h b/src/declarative/items/qsgmousearea_p_p.h index ff531c6..2ec1eda 100644 --- a/src/declarative/items/qsgmousearea_p_p.h +++ b/src/declarative/items/qsgmousearea_p_p.h @@ -56,7 +56,7 @@ #include "qsgitem_p.h" -#include +#include #include QT_BEGIN_NAMESPACE @@ -72,7 +72,7 @@ public: ~QSGMouseAreaPrivate(); void init(); - void saveEvent(QGraphicsSceneMouseEvent *event); + void saveEvent(QMouseEvent *event); enum PropagateType{ Click, DoubleClick, @@ -80,7 +80,6 @@ public: }; void propagate(QSGMouseEvent* event, PropagateType); bool propagateHelper(QSGMouseEvent*, QSGItem*,const QPointF &, PropagateType); - void forwardEvent(QGraphicsSceneMouseEvent* event); bool isPressAndHoldConnected(); bool isDoubleClickConnected(); diff --git a/src/declarative/items/qsgpathview.cpp b/src/declarative/items/qsgpathview.cpp index 2c3e3ce..d37f710 100644 --- a/src/declarative/items/qsgpathview.cpp +++ b/src/declarative/items/qsgpathview.cpp @@ -48,7 +48,7 @@ #include #include -#include +#include #include #include #include @@ -1095,7 +1095,7 @@ QPointF QSGPathViewPrivate::pointNear(const QPointF &point, qreal *nearPercent) return nearPoint; } -void QSGPathView::mousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGPathView::mousePressEvent(QMouseEvent *event) { Q_D(QSGPathView); if (d->interactive) { @@ -1106,12 +1106,12 @@ void QSGPathView::mousePressEvent(QGraphicsSceneMouseEvent *event) } } -void QSGPathViewPrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGPathViewPrivate::handleMousePressEvent(QMouseEvent *event) { Q_Q(QSGPathView); if (!interactive || !items.count()) return; - QPointF scenePoint = q->mapToScene(event->pos()); + QPointF scenePoint = q->mapToScene(event->localPos()); int idx = 0; for (; idx < items.count(); ++idx) { QRectF rect = items.at(idx)->boundingRect(); @@ -1122,9 +1122,9 @@ void QSGPathViewPrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) if (idx == items.count() && dragMargin == 0.) // didn't click on an item return; - startPoint = pointNear(event->pos(), &startPc); + startPoint = pointNear(event->localPos(), &startPc); if (idx == items.count()) { - qreal distance = qAbs(event->pos().x() - startPoint.x()) + qAbs(event->pos().y() - startPoint.y()); + qreal distance = qAbs(event->localPos().x() - startPoint.x()) + qAbs(event->localPos().y() - startPoint.y()); if (distance > dragMargin) return; } @@ -1140,7 +1140,7 @@ void QSGPathViewPrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) tl.clear(); } -void QSGPathView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGPathView::mouseMoveEvent(QMouseEvent *event) { Q_D(QSGPathView); if (d->interactive) { @@ -1153,14 +1153,14 @@ void QSGPathView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) } } -void QSGPathViewPrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGPathViewPrivate::handleMouseMoveEvent(QMouseEvent *event) { Q_Q(QSGPathView); if (!interactive || !lastPosTime.isValid()) return; qreal newPc; - QPointF pathPoint = pointNear(event->pos(), &newPc); + QPointF pathPoint = pointNear(event->localPos(), &newPc); if (!stealMouse) { QPointF delta = pathPoint - startPoint; if (qAbs(delta.x()) > QApplication::startDragDistance() || qAbs(delta.y()) > QApplication::startDragDistance()) { @@ -1192,7 +1192,7 @@ void QSGPathViewPrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) } } -void QSGPathView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGPathView::mouseReleaseEvent(QMouseEvent *event) { Q_D(QSGPathView); if (d->interactive) { @@ -1204,7 +1204,7 @@ void QSGPathView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) } } -void QSGPathViewPrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *) +void QSGPathViewPrivate::handleMouseReleaseEvent(QMouseEvent *) { Q_Q(QSGPathView); stealMouse = false; @@ -1255,36 +1255,27 @@ void QSGPathViewPrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *) q->movementEnding(); } -bool QSGPathView::sendMouseEvent(QGraphicsSceneMouseEvent *event) +bool QSGPathView::sendMouseEvent(QMouseEvent *event) { Q_D(QSGPathView); - QGraphicsSceneMouseEvent mouseEvent(event->type()); QRectF myRect = mapRectToScene(QRectF(0, 0, width(), height())); QSGCanvas *c = canvas(); QSGItem *grabber = c ? c->mouseGrabberItem() : 0; bool stealThisEvent = d->stealMouse; - if ((stealThisEvent || myRect.contains(event->scenePos().toPoint())) && (!grabber || !grabber->keepMouseGrab())) { + if ((stealThisEvent || myRect.contains(event->windowPos())) && (!grabber || !grabber->keepMouseGrab())) { + QMouseEvent mouseEvent(event->type(), mapFromScene(event->windowPos()), event->windowPos(), event->screenPos(), + event->button(), event->buttons(), event->modifiers()); mouseEvent.setAccepted(false); - for (int i = 0x1; i <= 0x10; i <<= 1) { - if (event->buttons() & i) { - Qt::MouseButton button = Qt::MouseButton(i); - mouseEvent.setButtonDownPos(button, mapFromScene(event->buttonDownPos(button))); - } - } - mouseEvent.setScenePos(event->scenePos()); - mouseEvent.setLastScenePos(event->lastScenePos()); - mouseEvent.setPos(mapFromScene(event->scenePos())); - mouseEvent.setLastPos(mapFromScene(event->lastScenePos())); switch(mouseEvent.type()) { - case QEvent::GraphicsSceneMouseMove: + case QEvent::MouseMove: d->handleMouseMoveEvent(&mouseEvent); break; - case QEvent::GraphicsSceneMousePress: + case QEvent::MouseButtonPress: d->handleMousePressEvent(&mouseEvent); stealThisEvent = d->stealMouse; // Update stealThisEvent in case changed by function call above break; - case QEvent::GraphicsSceneMouseRelease: + case QEvent::MouseButtonRelease: d->handleMouseReleaseEvent(&mouseEvent); break; default: @@ -1299,7 +1290,7 @@ bool QSGPathView::sendMouseEvent(QGraphicsSceneMouseEvent *event) d->lastPosTime.invalidate(); d->fixOffset(); } - if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) + if (event->type() == QEvent::MouseButtonRelease) d->stealMouse = false; return false; } @@ -1311,10 +1302,10 @@ bool QSGPathView::childMouseEventFilter(QSGItem *i, QEvent *e) return QSGItem::childMouseEventFilter(i, e); switch (e->type()) { - case QEvent::GraphicsSceneMousePress: - case QEvent::GraphicsSceneMouseMove: - case QEvent::GraphicsSceneMouseRelease: - return sendMouseEvent(static_cast(e)); + case QEvent::MouseButtonPress: + case QEvent::MouseMove: + case QEvent::MouseButtonRelease: + return sendMouseEvent(static_cast(e)); default: break; } diff --git a/src/declarative/items/qsgpathview_p.h b/src/declarative/items/qsgpathview_p.h index a271e32..fa00294 100644 --- a/src/declarative/items/qsgpathview_p.h +++ b/src/declarative/items/qsgpathview_p.h @@ -174,10 +174,10 @@ Q_SIGNALS: protected: virtual void updatePolish(); - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *); - bool sendMouseEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *); + bool sendMouseEvent(QMouseEvent *event); bool childMouseEventFilter(QSGItem *, QEvent *); void mouseUngrabEvent(); void componentComplete(); diff --git a/src/declarative/items/qsgpathview_p_p.h b/src/declarative/items/qsgpathview_p_p.h index 1575c6c..30bb74a 100644 --- a/src/declarative/items/qsgpathview_p_p.h +++ b/src/declarative/items/qsgpathview_p_p.h @@ -124,9 +124,9 @@ public: return model && model->count() > 0 && model->isValid() && path; } - void handleMousePressEvent(QGraphicsSceneMouseEvent *event); - void handleMouseMoveEvent(QGraphicsSceneMouseEvent *event); - void handleMouseReleaseEvent(QGraphicsSceneMouseEvent *); + void handleMousePressEvent(QMouseEvent *event); + void handleMouseMoveEvent(QMouseEvent *event); + void handleMouseReleaseEvent(QMouseEvent *); int calcCurrentIndex(); void updateCurrent(); diff --git a/src/declarative/items/qsgpincharea.cpp b/src/declarative/items/qsgpincharea.cpp index 54c32e5..6d89414 100644 --- a/src/declarative/items/qsgpincharea.cpp +++ b/src/declarative/items/qsgpincharea.cpp @@ -42,7 +42,7 @@ #include "qsgpincharea_p_p.h" #include "qsgcanvas.h" -#include +#include #include #include @@ -462,7 +462,7 @@ void QSGPinchArea::updatePinch() } } -void QSGPinchArea::mousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGPinchArea::mousePressEvent(QMouseEvent *event) { Q_D(QSGPinchArea); d->stealMouse = false; @@ -474,7 +474,7 @@ void QSGPinchArea::mousePressEvent(QGraphicsSceneMouseEvent *event) } } -void QSGPinchArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGPinchArea::mouseMoveEvent(QMouseEvent *event) { Q_D(QSGPinchArea); if (!d->absorb) { @@ -483,7 +483,7 @@ void QSGPinchArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) } } -void QSGPinchArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGPinchArea::mouseReleaseEvent(QMouseEvent *event) { Q_D(QSGPinchArea); d->stealMouse = false; @@ -502,36 +502,27 @@ void QSGPinchArea::mouseUngrabEvent() setKeepMouseGrab(false); } -bool QSGPinchArea::sendMouseEvent(QGraphicsSceneMouseEvent *event) +bool QSGPinchArea::sendMouseEvent(QMouseEvent *event) { Q_D(QSGPinchArea); - QGraphicsSceneMouseEvent mouseEvent(event->type()); QRectF myRect = mapRectToScene(QRectF(0, 0, width(), height())); QSGCanvas *c = canvas(); QSGItem *grabber = c ? c->mouseGrabberItem() : 0; bool stealThisEvent = d->stealMouse; - if ((stealThisEvent || myRect.contains(event->scenePos().toPoint())) && (!grabber || !grabber->keepMouseGrab())) { + if ((stealThisEvent || myRect.contains(event->windowPos())) && (!grabber || !grabber->keepMouseGrab())) { + QMouseEvent mouseEvent(event->type(), mapFromScene(event->windowPos()), event->windowPos(), event->screenPos(), + event->button(), event->buttons(), event->modifiers()); mouseEvent.setAccepted(false); - for (int i = 0x1; i <= 0x10; i <<= 1) { - if (event->buttons() & i) { - Qt::MouseButton button = Qt::MouseButton(i); - mouseEvent.setButtonDownPos(button, mapFromScene(event->buttonDownPos(button))); - } - } - mouseEvent.setScenePos(event->scenePos()); - mouseEvent.setLastScenePos(event->lastScenePos()); - mouseEvent.setPos(mapFromScene(event->scenePos())); - mouseEvent.setLastPos(mapFromScene(event->lastScenePos())); switch(mouseEvent.type()) { - case QEvent::GraphicsSceneMouseMove: + case QEvent::MouseMove: mouseMoveEvent(&mouseEvent); break; - case QEvent::GraphicsSceneMousePress: + case QEvent::MouseButtonPress: mousePressEvent(&mouseEvent); break; - case QEvent::GraphicsSceneMouseRelease: + case QEvent::MouseButtonRelease: mouseReleaseEvent(&mouseEvent); break; default: @@ -543,7 +534,7 @@ bool QSGPinchArea::sendMouseEvent(QGraphicsSceneMouseEvent *event) return stealThisEvent; } - if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) { + if (event->type() == QEvent::MouseButtonRelease) { d->stealMouse = false; if (c && c->mouseGrabberItem() == this) ungrabMouse(); @@ -558,10 +549,10 @@ bool QSGPinchArea::childMouseEventFilter(QSGItem *i, QEvent *e) if (!d->absorb || !isVisible()) return QSGItem::childMouseEventFilter(i, e); switch (e->type()) { - case QEvent::GraphicsSceneMousePress: - case QEvent::GraphicsSceneMouseMove: - case QEvent::GraphicsSceneMouseRelease: - return sendMouseEvent(static_cast(e)); + case QEvent::MouseButtonPress: + case QEvent::MouseMove: + case QEvent::MouseButtonRelease: + return sendMouseEvent(static_cast(e)); break; case QEvent::TouchBegin: case QEvent::TouchUpdate: { diff --git a/src/declarative/items/qsgpincharea_p.h b/src/declarative/items/qsgpincharea_p.h index 95a1d7a..f27bddb 100644 --- a/src/declarative/items/qsgpincharea_p.h +++ b/src/declarative/items/qsgpincharea_p.h @@ -281,11 +281,11 @@ Q_SIGNALS: void pinchFinished(QSGPinchEvent *pinch); protected: - virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseUngrabEvent(); - virtual bool sendMouseEvent(QGraphicsSceneMouseEvent *event); + virtual bool sendMouseEvent(QMouseEvent *event); virtual bool childMouseEventFilter(QSGItem *i, QEvent *e); virtual void touchEvent(QTouchEvent *event); diff --git a/src/declarative/items/qsgtext.cpp b/src/declarative/items/qsgtext.cpp index bac0be9..da34cc6 100644 --- a/src/declarative/items/qsgtext.cpp +++ b/src/declarative/items/qsgtext.cpp @@ -50,7 +50,7 @@ #include #include -#include +#include #include #include #include @@ -1679,15 +1679,15 @@ void QSGText::componentComplete() } /*! \internal */ -void QSGText::mousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGText::mousePressEvent(QMouseEvent *event) { Q_D(QSGText); - if (!d->richText || !d->doc || d->doc->documentLayout()->anchorAt(event->pos()).isEmpty()) { + if (!d->richText || !d->doc || d->doc->documentLayout()->anchorAt(event->localPos()).isEmpty()) { event->setAccepted(false); d->activeLink.clear(); } else { - d->activeLink = d->doc->documentLayout()->anchorAt(event->pos()); + d->activeLink = d->doc->documentLayout()->anchorAt(event->localPos()); } // ### may malfunction if two of the same links are clicked & dragged onto each other) @@ -1698,12 +1698,12 @@ void QSGText::mousePressEvent(QGraphicsSceneMouseEvent *event) } /*! \internal */ -void QSGText::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGText::mouseReleaseEvent(QMouseEvent *event) { Q_D(QSGText); // ### confirm the link, and send a signal out - if (d->richText && d->doc && d->activeLink == d->doc->documentLayout()->anchorAt(event->pos())) + if (d->richText && d->doc && d->activeLink == d->doc->documentLayout()->anchorAt(event->localPos())) emit linkActivated(d->activeLink); else event->setAccepted(false); diff --git a/src/declarative/items/qsgtext_p.h b/src/declarative/items/qsgtext_p.h index 4a4b019..725eeb2 100644 --- a/src/declarative/items/qsgtext_p.h +++ b/src/declarative/items/qsgtext_p.h @@ -194,8 +194,8 @@ Q_SIGNALS: void effectiveHorizontalAlignmentChanged(); protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *); diff --git a/src/declarative/items/qsgtextedit.cpp b/src/declarative/items/qsgtextedit.cpp index cf86168..6b9e443 100644 --- a/src/declarative/items/qsgtextedit.cpp +++ b/src/declarative/items/qsgtextedit.cpp @@ -48,7 +48,7 @@ #include #include -#include +#include #include #include #include @@ -1328,7 +1328,7 @@ void QSGTextEdit::paste() \overload Handles the given mouse \a event. */ -void QSGTextEdit::mousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGTextEdit::mousePressEvent(QMouseEvent *event) { Q_D(QSGTextEdit); if (d->focusOnPress){ @@ -1354,12 +1354,12 @@ void QSGTextEdit::mousePressEvent(QGraphicsSceneMouseEvent *event) \overload Handles the given mouse \a event. */ -void QSGTextEdit::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGTextEdit::mouseReleaseEvent(QMouseEvent *event) { Q_D(QSGTextEdit); d->control->processEvent(event, QPointF(0, -d->yoff)); if (!d->showInputPanelOnFocus) { // input panel on click - if (d->focusOnPress && !isReadOnly() && boundingRect().contains(event->pos())) { + if (d->focusOnPress && !isReadOnly() && boundingRect().contains(event->localPos())) { // ### refactor: port properly qDebug("QSGTextEdit: virtual keyboard handling not implemented"); // if (canvas() && canvas() == qApp->focusWidget()) { @@ -1377,7 +1377,7 @@ void QSGTextEdit::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) \overload Handles the given mouse \a event. */ -void QSGTextEdit::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +void QSGTextEdit::mouseDoubleClickEvent(QMouseEvent *event) { Q_D(QSGTextEdit); d->control->processEvent(event, QPointF(0, -d->yoff)); @@ -1389,7 +1389,7 @@ void QSGTextEdit::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) \overload Handles the given mouse \a event. */ -void QSGTextEdit::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGTextEdit::mouseMoveEvent(QMouseEvent *event) { Q_D(QSGTextEdit); d->control->processEvent(event, QPointF(0, -d->yoff)); diff --git a/src/declarative/items/qsgtextedit_p.h b/src/declarative/items/qsgtextedit_p.h index fa61f03..b07292b 100644 --- a/src/declarative/items/qsgtextedit_p.h +++ b/src/declarative/items/qsgtextedit_p.h @@ -283,10 +283,10 @@ protected: void focusInEvent(QFocusEvent *event); // mouse filter? - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void mouseDoubleClickEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); void inputMethodEvent(QInputMethodEvent *e); virtual void itemChange(ItemChange, const ItemChangeData &); diff --git a/src/declarative/items/qsgtextinput.cpp b/src/declarative/items/qsgtextinput.cpp index f6b8ecd..a7c1a12 100644 --- a/src/declarative/items/qsgtextinput.cpp +++ b/src/declarative/items/qsgtextinput.cpp @@ -48,13 +48,16 @@ #include #include -#include +#include #include #include #include #include #include +#include +#include + QT_BEGIN_NAMESPACE DEFINE_BOOL_CONFIG_OPTION(qmlDisableDistanceField, QML_DISABLE_DISTANCEFIELD) @@ -1079,13 +1082,13 @@ void QSGTextInput::inputMethodEvent(QInputMethodEvent *ev) emit inputMethodComposingChanged(); } -void QSGTextInput::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +void QSGTextInput::mouseDoubleClickEvent(QMouseEvent *event) { Q_D(QSGTextInput); - if (d->sendMouseEventToInputContext(event, QEvent::MouseButtonDblClick)) + if (d->sendMouseEventToInputContext(event)) return; if (d->selectByMouse) { - int cursor = d->xToPos(event->pos().x()); + int cursor = d->xToPos(event->localPos().x()); d->control->selectWordAtPos(cursor); event->setAccepted(true); } else { @@ -1093,10 +1096,10 @@ void QSGTextInput::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) } } -void QSGTextInput::mousePressEvent(QGraphicsSceneMouseEvent *event) +void QSGTextInput::mousePressEvent(QMouseEvent *event) { Q_D(QSGTextInput); - if (d->sendMouseEventToInputContext(event, QEvent::MouseButtonPress)) + if (d->sendMouseEventToInputContext(event)) return; if(d->focusOnPress){ bool hadActiveFocus = hasActiveFocus(); @@ -1115,40 +1118,40 @@ void QSGTextInput::mousePressEvent(QGraphicsSceneMouseEvent *event) if (d->selectByMouse) { setKeepMouseGrab(false); d->selectPressed = true; - d->pressPos = event->pos(); + d->pressPos = event->localPos(); } bool mark = (event->modifiers() & Qt::ShiftModifier) && d->selectByMouse; - int cursor = d->xToPos(event->pos().x()); + int cursor = d->xToPos(event->localPos().x()); d->control->moveCursor(cursor, mark); event->setAccepted(true); } -void QSGTextInput::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +void QSGTextInput::mouseMoveEvent(QMouseEvent *event) { Q_D(QSGTextInput); - if (d->sendMouseEventToInputContext(event, QEvent::MouseMove)) + if (d->sendMouseEventToInputContext(event)) return; if (d->selectPressed) { - if (qAbs(int(event->pos().x() - d->pressPos.x())) > QApplication::startDragDistance()) + if (qAbs(int(event->localPos().x() - d->pressPos.x())) > QApplication::startDragDistance()) setKeepMouseGrab(true); - moveCursorSelection(d->xToPos(event->pos().x()), d->mouseSelectionMode); + moveCursorSelection(d->xToPos(event->localPos().x()), d->mouseSelectionMode); event->setAccepted(true); } else { QSGImplicitSizeItem::mouseMoveEvent(event); } } -void QSGTextInput::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void QSGTextInput::mouseReleaseEvent(QMouseEvent *event) { Q_D(QSGTextInput); - if (d->sendMouseEventToInputContext(event, QEvent::MouseButtonRelease)) + if (d->sendMouseEventToInputContext(event)) return; if (d->selectPressed) { d->selectPressed = false; setKeepMouseGrab(false); } if (!d->showInputPanelOnFocus) { // input panel on click - if (d->focusOnPress && !isReadOnly() && boundingRect().contains(event->pos())) { + if (d->focusOnPress && !isReadOnly() && boundingRect().contains(event->localPos())) { if (canvas() && canvas() == QGuiApplication::activeWindow()) { // ### refactor: implement virtual keyboard properly.. qDebug("QSGTextInput: virtual keyboard no implemented..."); @@ -1162,33 +1165,23 @@ void QSGTextInput::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) QSGImplicitSizeItem::mouseReleaseEvent(event); } -bool QSGTextInputPrivate::sendMouseEventToInputContext( - QGraphicsSceneMouseEvent *event, QEvent::Type eventType) +bool QSGTextInputPrivate::sendMouseEventToInputContext(QMouseEvent *event) { #if !defined QT_NO_IM - if (event->widget() && control->composeMode()) { - int tmp_cursor = xToPos(event->pos().x()); + if (control->composeMode()) { + int tmp_cursor = xToPos(event->localPos().x()); int mousePos = tmp_cursor - control->cursor(); if (mousePos < 0 || mousePos > control->preeditAreaText().length()) { mousePos = -1; // don't send move events outside the preedit area - if (eventType == QEvent::MouseMove) + if (event->type() == QEvent::MouseMove) return true; } - QInputContext *qic = event->widget()->inputContext(); - if (qic) { - QMouseEvent mouseEvent( - eventType, - event->widget()->mapFromGlobal(event->screenPos()), - event->screenPos(), - event->button(), - event->buttons(), - event->modifiers()); + QPlatformInputContext *ic = QGuiApplicationPrivate::platformIntegration()->inputContext(); + if (ic) // may be causing reset() in some input methods - qic->mouseHandler(mousePos, &mouseEvent); - event->setAccepted(mouseEvent.isAccepted()); - } + ic->mouseHandler(mousePos, event); if (!control->preeditAreaText().isEmpty()) return true; } @@ -1216,10 +1209,10 @@ bool QSGTextInput::event(QEvent* ev) case QEvent::KeyPress: case QEvent::KeyRelease://###Should the control be doing anything with release? case QEvent::InputMethod: - case QEvent::GraphicsSceneMousePress: - case QEvent::GraphicsSceneMouseMove: - case QEvent::GraphicsSceneMouseRelease: - case QEvent::GraphicsSceneMouseDoubleClick: + case QEvent::MouseButtonPress: + case QEvent::MouseMove: + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: break; default: handled = d->control->processEvent(ev); diff --git a/src/declarative/items/qsgtextinput_p.h b/src/declarative/items/qsgtextinput_p.h index f5ac50e..6addc94 100644 --- a/src/declarative/items/qsgtextinput_p.h +++ b/src/declarative/items/qsgtextinput_p.h @@ -249,10 +249,10 @@ protected: virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void mouseDoubleClickEvent(QMouseEvent *event); bool sceneEvent(QEvent *event); void keyPressEvent(QKeyEvent* ev); void inputMethodEvent(QInputMethodEvent *); diff --git a/src/declarative/items/qsgtextinput_p_p.h b/src/declarative/items/qsgtextinput_p_p.h index 0d1f21b..49680ce 100644 --- a/src/declarative/items/qsgtextinput_p_p.h +++ b/src/declarative/items/qsgtextinput_p_p.h @@ -121,7 +121,7 @@ public: bool setHAlign(QSGTextInput::HAlignment, bool forceAlign = false); void mirrorChange(); int calculateTextWidth(); - bool sendMouseEventToInputContext(QGraphicsSceneMouseEvent *event, QEvent::Type eventType); + bool sendMouseEventToInputContext(QMouseEvent *event); void updateInputMethodHints(); void hideCursor(); void showCursor();