diff options
author | Martin Jones <martin.jones@jollamobile.com> | 2014-07-11 14:10:49 +1000 |
---|---|---|
committer | Martin Jones <martin.jones@jollamobile.com> | 2014-07-16 07:54:58 +0200 |
commit | 112efda64ba24e7d9255a36065223e9800a50c21 (patch) | |
tree | c35446169d49b7ab4d4bf9a21b983cbc251206a5 /src/quick/items/qquickmousearea.cpp | |
parent | 427bee6cb616d515ae04bc47193e35e19e1b519e (diff) |
Add containsPress property to MouseArea
It is very common to use pressed and containsMouse properties
together to highlight a pressed item, e.g.
property bool highlighted: pressed && containsMouse
The containsPress property allows simplification and optimization of
user code.
[ChangeLog][QtQuick] Add containsPress property to MouseArea
Task-number: QTBUG-40130
Change-Id: Ie286d431154eb37a99e57e4cf881d68d7cbbe31d
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
Diffstat (limited to 'src/quick/items/qquickmousearea.cpp')
-rw-r--r-- | src/quick/items/qquickmousearea.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp index 2bb9158d51..d0c362456f 100644 --- a/src/quick/items/qquickmousearea.cpp +++ b/src/quick/items/qquickmousearea.cpp @@ -860,6 +860,7 @@ void QQuickMouseArea::ungrabMouse() emit canceled(); emit pressedChanged(); + emit containsPressChanged(); emit pressedButtonsChanged(); if (d->hovered && !isUnderMouse()) { @@ -917,6 +918,7 @@ bool QQuickMouseArea::sendMouseEvent(QMouseEvent *event) ungrabMouse(); emit canceled(); emit pressedChanged(); + emit containsPressChanged(); if (d->hovered) { d->hovered = false; emit hoveredChanged(); @@ -1062,6 +1064,24 @@ bool QQuickMouseArea::pressed() const return d->pressed; } +/*! + \qmlproperty bool QtQuick::MouseArea::containsPress + \since 5.4 + This is a convenience property equivalent to \c {pressed && containsMouse}, + i.e. it holds whether any of the \l acceptedButtons are currently pressed + and the mouse is currently within the MouseArea. + + This property is particularly useful for highlighting an item while the mouse + is pressed within its bounds. + + \sa pressed, containsMouse +*/ +bool QQuickMouseArea::containsPress() const +{ + Q_D(const QQuickMouseArea); + return d->pressed && d->hovered; +} + void QQuickMouseArea::setHovered(bool h) { Q_D(QQuickMouseArea); @@ -1069,6 +1089,8 @@ void QQuickMouseArea::setHovered(bool h) d->hovered = h; emit hoveredChanged(); d->hovered ? emit entered() : emit exited(); + if (d->pressed) + emit containsPressChanged(); } } @@ -1128,15 +1150,19 @@ bool QQuickMouseArea::setPressed(Qt::MouseButton button, bool p) emit mouseXChanged(&me); me.setPosition(d->lastPos); emit mouseYChanged(&me); - if (!oldPressed) + if (!oldPressed) { emit pressedChanged(); + emit containsPressChanged(); + } emit pressedButtonsChanged(); } else { d->pressed &= ~button; emit released(&me); me.setPosition(d->lastPos); - if (!d->pressed) + if (!d->pressed) { emit pressedChanged(); + emit containsPressChanged(); + } emit pressedButtonsChanged(); if (isclick && !d->longPress && !d->doubleClick){ me.setAccepted(d->isClickConnected()); |