diff options
-rw-r--r-- | examples/declarative/mouseregion/mouse.qml | 6 | ||||
-rw-r--r-- | src/declarative/fx/qfxitem.cpp | 1 | ||||
-rw-r--r-- | src/declarative/fx/qfxmouseregion.cpp | 48 | ||||
-rw-r--r-- | src/declarative/fx/qfxmouseregion.h | 2 | ||||
-rw-r--r-- | src/declarative/fx/qfxmouseregion_p.h | 3 |
5 files changed, 13 insertions, 47 deletions
diff --git a/examples/declarative/mouseregion/mouse.qml b/examples/declarative/mouseregion/mouse.qml index 471874d..5ef484c 100644 --- a/examples/declarative/mouseregion/mouse.qml +++ b/examples/declarative/mouseregion/mouse.qml @@ -11,8 +11,8 @@ Rect { onClicked: { print('click (x: ' + mouse.x + ' y: ' + mouse.y + ' wasHeld: ' + mouse.wasHeld + ')') } onDoubleClicked: { print('double click (x: ' + mouse.x + ' y: ' + mouse.y + ')') } onPressAndHold: { print('press and hold') } - onExitedWhilePressed: { print('exiting while pressed') } - onReenteredWhilePressed: { print('reentering while pressed') } + onEntered: { print('entered ' + pressed) } + onExited: { print('exited ' + pressed) } anchors.fill: parent } } @@ -30,8 +30,6 @@ Rect { onClicked: { print('click' + '(wasHeld: ' + mouse.wasHeld + ')') } onDoubleClicked: { print('double click') } onPressAndHold: { print('press and hold') } - onExitedWhilePressed: { print('exiting while pressed') } - onReenteredWhilePressed: { print('reentering while pressed') } anchors.fill: parent } } diff --git a/src/declarative/fx/qfxitem.cpp b/src/declarative/fx/qfxitem.cpp index 2433a83..c15685e 100644 --- a/src/declarative/fx/qfxitem.cpp +++ b/src/declarative/fx/qfxitem.cpp @@ -2465,6 +2465,7 @@ void QFxItem::setOptions(Options options, bool set) setFlag(QGraphicsItem::ItemHasNoContents, !(d->options & HasContents)); setFiltersChildEvents(d->options & ChildMouseFilter); setFlag(QGraphicsItem::ItemAcceptsInputMethod, (d->options & AcceptsInputMethods)); + setAcceptHoverEvents(d->options & HoverEvents); if ((old & MouseFilter) != (d->options & MouseFilter)) { if (d->options & MouseFilter) diff --git a/src/declarative/fx/qfxmouseregion.cpp b/src/declarative/fx/qfxmouseregion.cpp index 38a0bd1..af16d4d 100644 --- a/src/declarative/fx/qfxmouseregion.cpp +++ b/src/declarative/fx/qfxmouseregion.cpp @@ -173,28 +173,12 @@ void QFxDrag::setYmax(int m) \qmlsignal MouseRegion::onEntered This handler is called when the mouse enters the mouse region. - - \warning This handler is not yet implemented. */ /*! \qmlsignal MouseRegion::onExited This handler is called when the mouse exists the mouse region. - - \warning This handler is not yet implemented. -*/ - -/*! - \qmlsignal MouseRegion::onReenteredWhilePressed - - This handler is called when the mouse reenters the mouse region while pressed. -*/ - -/*! - \qmlsignal MouseRegion::onExitedWhilePressed - - This handler is called when the mouse exists the mouse region while pressed. */ /*! @@ -322,10 +306,6 @@ void QFxMouseRegion::mousePressEvent(QGraphicsSceneMouseEvent *event) if (!d->absorb) QFxItem::mousePressEvent(event); else { - if (!d->inside) { - d->inside = true; - emit hoveredChanged(); - } d->longPress = false; d->saveEvent(event); d->dragX = drag()->axis().contains(QLatin1String("x")); @@ -352,17 +332,13 @@ void QFxMouseRegion::mouseMoveEvent(QGraphicsSceneMouseEvent *event) d->saveEvent(event); // ### we should skip this if these signals aren't used + // ### can GV handle this for us? const QRect &bounds = itemBoundingRect(); bool contains = bounds.contains(d->lastPos.toPoint()); - if (d->inside && !contains) { - d->inside = false; - emit hoveredChanged(); - emit exitedWhilePressed(); - } else if (!d->inside && contains) { - d->inside = true; - emit hoveredChanged(); - emit reenteredWhilePressed(); - } + if (d->hovered && !contains) + setHovered(false); + else if (!d->hovered && contains) + setHovered(true); if (drag()->target()) { if (!d->moved) { @@ -424,8 +400,6 @@ void QFxMouseRegion::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) else { d->saveEvent(event); setPressed(false); - //d->inside = false; - //emit hoveredChanged(); event->accept(); } } @@ -436,8 +410,6 @@ void QFxMouseRegion::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) if (!d->absorb) QFxItem::mouseDoubleClickEvent(event); else { - //d->inside = true; - //emit hoveredChanged(); d->saveEvent(event); setPressed(true); QFxMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, true, false); @@ -453,7 +425,6 @@ void QFxMouseRegion::hoverEnterEvent(QGraphicsSceneHoverEvent *event) QFxItem::hoverEnterEvent(event); else { setHovered(true); - emit entered(); } } @@ -464,7 +435,6 @@ void QFxMouseRegion::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) QFxItem::hoverLeaveEvent(event); else { setHovered(false); - emit exited(); } } @@ -475,7 +445,6 @@ void QFxMouseRegion::mouseUngrabEvent() // if our mouse grab has been removed (probably by Flickable), fix our // state d->pressed = false; - //d->inside = false; setKeepMouseGrab(false); emit pressedChanged(); //emit hoveredChanged(); @@ -487,7 +456,7 @@ void QFxMouseRegion::timerEvent(QTimerEvent *event) Q_D(QFxMouseRegion); if (event->timerId() == d->pressAndHoldTimer.timerId()) { d->pressAndHoldTimer.stop(); - if (d->pressed && d->dragged == false && d->inside == true) { + if (d->pressed && d->dragged == false && d->hovered == true) { d->longPress = true; QFxMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, false, d->longPress); emit pressAndHold(&me); @@ -504,7 +473,7 @@ void QFxMouseRegion::timerEvent(QTimerEvent *event) bool QFxMouseRegion::hovered() { Q_D(QFxMouseRegion); - return d->hovered || d->inside; + return d->hovered; } /*! @@ -523,13 +492,14 @@ void QFxMouseRegion::setHovered(bool h) if (d->hovered != h) { d->hovered = h; emit hoveredChanged(); + d->hovered ? emit entered() : emit exited(); } } void QFxMouseRegion::setPressed(bool p) { Q_D(QFxMouseRegion); - bool isclick = d->pressed == true && p == false && d->dragged == false && d->inside == true; + bool isclick = d->pressed == true && p == false && d->dragged == false && d->hovered == true; if (d->pressed != p) { d->pressed = p; diff --git a/src/declarative/fx/qfxmouseregion.h b/src/declarative/fx/qfxmouseregion.h index 224dd54..47929be 100644 --- a/src/declarative/fx/qfxmouseregion.h +++ b/src/declarative/fx/qfxmouseregion.h @@ -129,8 +129,6 @@ Q_SIGNALS: void doubleClicked(QFxMouseEvent *mouse); void entered(); void exited(); - void exitedWhilePressed(); - void reenteredWhilePressed(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); diff --git a/src/declarative/fx/qfxmouseregion_p.h b/src/declarative/fx/qfxmouseregion_p.h index ad0866f..a41f32a 100644 --- a/src/declarative/fx/qfxmouseregion_p.h +++ b/src/declarative/fx/qfxmouseregion_p.h @@ -66,7 +66,7 @@ class QFxMouseRegionPrivate : public QFxItemPrivate public: QFxMouseRegionPrivate() - : absorb(true), hovered(false), inside(true), pressed(false), longPress(false), drag(0) + : absorb(true), hovered(false), pressed(false), longPress(false), drag(0) { } @@ -86,7 +86,6 @@ public: bool absorb : 1; bool hovered : 1; - bool inside : 1; bool pressed : 1; bool longPress : 1; bool moved : 1; |