diff options
author | Martin Jones <martin.jones@nokia.com> | 2010-04-28 01:57:36 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2010-04-28 01:57:36 (GMT) |
commit | 3b68034fc7690afc95aba8c049b94b1c6e0f4179 (patch) | |
tree | 44bb0a8dc8d2494224bf403e74feba90a4484d8e /src/declarative/graphicsitems/qdeclarativemousearea.cpp | |
parent | ba97ea29d33acf9ab421f4d8ef5202ec83231d7e (diff) | |
download | Qt-3b68034fc7690afc95aba8c049b94b1c6e0f4179.zip Qt-3b68034fc7690afc95aba8c049b94b1c6e0f4179.tar.gz Qt-3b68034fc7690afc95aba8c049b94b1c6e0f4179.tar.bz2 |
Emit hoverChanged appropriately when Item visibility changes.
Task-number: QTBUG-10243
Diffstat (limited to 'src/declarative/graphicsitems/qdeclarativemousearea.cpp')
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativemousearea.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp index 126d041..0b9cf6e 100644 --- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp +++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp @@ -599,6 +599,23 @@ void QDeclarativeMouseArea::geometryChanged(const QRectF &newGeometry, d->lastPos = mapFromScene(d->lastScenePos); } +/*! \internal */ +QVariant QDeclarativeMouseArea::itemChange(GraphicsItemChange change, + const QVariant &value) +{ + Q_D(QDeclarativeMouseArea); + switch (change) { + case ItemVisibleHasChanged: + if (acceptHoverEvents() && d->hovered != (isVisible() && isUnderMouse())) + setHovered(!d->hovered); + break; + default: + break; + } + + return QDeclarativeItem::itemChange(change, value); +} + /*! \qmlproperty bool MouseArea::hoverEnabled This property holds whether hover events are handled. @@ -609,6 +626,22 @@ void QDeclarativeMouseArea::geometryChanged(const QRectF &newGeometry, This property affects the containsMouse property and the onEntered, onExited and onPositionChanged signals. */ +bool QDeclarativeMouseArea::hoverEnabled() const +{ + return acceptHoverEvents(); +} + +void QDeclarativeMouseArea::setHoverEnabled(bool h) +{ + Q_D(QDeclarativeMouseArea); + if (h == acceptHoverEvents()) + return; + + setAcceptHoverEvents(h); + emit hoverEnabledChanged(); + if (d->hovered != isUnderMouse()) + setHovered(!d->hovered); +} /*! \qmlproperty bool MouseArea::containsMouse |