aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/declarative/text/textselection/textselection.qml81
-rw-r--r--src/declarative/declarative.pro2
-rw-r--r--src/declarative/items/qsgcanvas.cpp174
-rw-r--r--src/declarative/items/qsgcanvas_p.h12
-rw-r--r--src/declarative/items/qsgflickable.cpp85
-rw-r--r--src/declarative/items/qsgflickable_p.h8
-rw-r--r--src/declarative/items/qsgflickable_p_p.h10
-rw-r--r--src/declarative/items/qsgitem.cpp18
-rw-r--r--src/declarative/items/qsgitem.h10
-rw-r--r--src/declarative/items/qsgitem_p.h2
-rw-r--r--src/declarative/items/qsgmousearea.cpp78
-rw-r--r--src/declarative/items/qsgmousearea_p.h10
-rw-r--r--src/declarative/items/qsgmousearea_p_p.h5
-rw-r--r--src/declarative/items/qsgpathview.cpp55
-rw-r--r--src/declarative/items/qsgpathview_p.h8
-rw-r--r--src/declarative/items/qsgpathview_p_p.h6
-rw-r--r--src/declarative/items/qsgpincharea.cpp41
-rw-r--r--src/declarative/items/qsgpincharea_p.h8
-rw-r--r--src/declarative/items/qsgtext.cpp12
-rw-r--r--src/declarative/items/qsgtext_p.h4
-rw-r--r--src/declarative/items/qsgtextedit.cpp12
-rw-r--r--src/declarative/items/qsgtextedit_p.h8
-rw-r--r--src/declarative/items/qsgtextinput.cpp65
-rw-r--r--src/declarative/items/qsgtextinput_p.h8
-rw-r--r--src/declarative/items/qsgtextinput_p_p.h2
25 files changed, 240 insertions, 484 deletions
diff --git a/examples/declarative/text/textselection/textselection.qml b/examples/declarative/text/textselection/textselection.qml
index 4b51f4ea53..a25d0df621 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 {
+"<p><b>Click inside the selection</b> to cut/copy/paste/cancel selection."
+"<p>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.x+flick.contentX+h.width && y>=h.y+flick.contentY && y<h.y+flick.contentY+h.height
- }
-
- onPressed: {
- if (editor.state == "selection") {
- if (hitHandle(startHandle,mouse.x+x,mouse.y+y)) {
- drag = "start"
- flick.interactive = false
- } else if (hitHandle(endHandle,mouse.x+x,mouse.y+y)) {
- drag = "end"
- flick.interactive = false
- } else {
- var pos = edit.positionAt(mouse.x+x,mouse.y+y);
- if (pos >= 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 d0a3f01148..78717c9254 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 9f55c400ce..f97028a3fc 100644
--- a/src/declarative/items/qsgcanvas.cpp
+++ b/src/declarative/items/qsgcanvas.cpp
@@ -56,7 +56,7 @@
#include <private/qabstractanimation_p.h>
#include <QtGui/qpainter.h>
-#include <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtGui/qmatrix4x4.h>
#include <QtCore/qvarlengtharray.h>
#include <QtCore/qabstractanimation.h>
@@ -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<QTouchEvent::TouchPoint> &touchPoints, const QTransform &transform)
{
for (int i=0; i<touchPoints.count(); i++) {
@@ -494,74 +481,6 @@ void QSGCanvasPrivate::transformTouchPoints(QList<QTouchEvent::TouchPoint> &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<QFocusEvent *>(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<QGraphicsSceneMouseEvent *>(e);
+ QMouseEvent *se = static_cast<QMouseEvent *>(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 e5347f53ae..6915bffa04 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<QTouchEvent::TouchPoint> &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<QTouchEvent::TouchPoint> &, QSet<int> *,
QHash<QSGItem *, QList<QTouchEvent::TouchPoint> > *);
diff --git a/src/declarative/items/qsgflickable.cpp b/src/declarative/items/qsgflickable.cpp
index e63698eca7..92554f8e79 100644
--- a/src/declarative/items/qsgflickable.cpp
+++ b/src/declarative/items/qsgflickable.cpp
@@ -45,7 +45,7 @@
#include "qsgcanvas_p.h"
#include <QtDeclarative/qdeclarativeinfo.h>
-#include <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtWidgets/qapplication.h>
#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<QGraphicsSceneMouseEvent *>(e));
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseMove:
+ case QEvent::MouseButtonRelease:
+ return sendMouseEvent(static_cast<QMouseEvent *>(e));
default:
break;
}
diff --git a/src/declarative/items/qsgflickable_p.h b/src/declarative/items/qsgflickable_p.h
index 7f12e8a63e..14f5232cd8 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 9e854af62a..3ac6d87864 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> *, QObject *);
diff --git a/src/declarative/items/qsgitem.cpp b/src/declarative/items/qsgitem.cpp
index a7797630c0..c7df26dc0c 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 02a7a33ed8..bff32e3f65 100644
--- a/src/declarative/items/qsgitem.h
+++ b/src/declarative/items/qsgitem.h
@@ -48,7 +48,7 @@
#include <QtCore/QObject>
#include <QtCore/QList>
-#include <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtGui/qfont.h>
#include <QtWidgets/qaction.h>
@@ -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 a3acb973db..294edc0da4 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 7d86d2e248..547df313d2 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 <QtWidgets/qgraphicssceneevent.h>
-#include <QtWidgets/qapplication.h>
+#include <QtGui/qevent.h>
+#include <QtGui/qguiapplication.h>
#include <float.h>
@@ -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<QGraphicsSceneMouseEvent *>(e));
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseMove:
+ case QEvent::MouseButtonRelease:
+ return sendMouseEvent(static_cast<QMouseEvent *>(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 ff3863c3bb..c7d3cb79f1 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 ff531c627c..2ec1eda3f7 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 <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtCore/qbasictimer.h>
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 2c3e3cee71..d37f7101a1 100644
--- a/src/declarative/items/qsgpathview.cpp
+++ b/src/declarative/items/qsgpathview.cpp
@@ -48,7 +48,7 @@
#include <private/qlistmodelinterface_p.h>
#include <QtGui/qevent.h>
-#include <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtWidgets/qapplication.h>
#include <QtCore/qmath.h>
#include <math.h>
@@ -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<QGraphicsSceneMouseEvent *>(e));
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseMove:
+ case QEvent::MouseButtonRelease:
+ return sendMouseEvent(static_cast<QMouseEvent *>(e));
default:
break;
}
diff --git a/src/declarative/items/qsgpathview_p.h b/src/declarative/items/qsgpathview_p.h
index a271e323cd..fa00294c0b 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 1575c6c1ca..30bb74a984 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 54c32e5025..6d89414cd0 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 <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtWidgets/qapplication.h>
#include <float.h>
@@ -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<QGraphicsSceneMouseEvent *>(e));
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseMove:
+ case QEvent::MouseButtonRelease:
+ return sendMouseEvent(static_cast<QMouseEvent *>(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 95a1d7a946..f27bddb193 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 bac0be969b..da34cc6d56 100644
--- a/src/declarative/items/qsgtext.cpp
+++ b/src/declarative/items/qsgtext.cpp
@@ -50,7 +50,7 @@
#include <private/qsgtexture_p.h>
#include <QtDeclarative/qdeclarativeinfo.h>
-#include <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtGui/qabstracttextdocumentlayout.h>
#include <QtGui/qpainter.h>
#include <QtGui/qtextdocument.h>
@@ -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 4a4b0192b4..725eeb27c4 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 cf861684fa..6b9e4436a7 100644
--- a/src/declarative/items/qsgtextedit.cpp
+++ b/src/declarative/items/qsgtextedit.cpp
@@ -48,7 +48,7 @@
#include <QtDeclarative/qdeclarativeinfo.h>
#include <QtWidgets/qapplication.h>
-#include <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtGui/qpainter.h>
#include <QtGui/qtextobject.h>
#include <QtCore/qmath.h>
@@ -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 fa61f03f7f..b07292b296 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 f6b8ecd436..a7c1a122bb 100644
--- a/src/declarative/items/qsgtextinput.cpp
+++ b/src/declarative/items/qsgtextinput.cpp
@@ -48,13 +48,16 @@
#include <private/qsgdistancefieldglyphcache_p.h>
#include <QtDeclarative/qdeclarativeinfo.h>
-#include <QtWidgets/qgraphicssceneevent.h>
+#include <QtGui/qevent.h>
#include <QtWidgets/qinputcontext.h>
#include <QTextBoundaryFinder>
#include <qstyle.h>
#include <qsgtextnode_p.h>
#include <qsgsimplerectnode.h>
+#include <QtGui/qplatforminputcontext_qpa.h>
+#include <private/qguiapplication_p.h>
+
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 f5ac50e8e1..6addc94bbb 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 0d1f21b54c..49680ced6d 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();