aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickmousearea.cpp
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@jollamobile.com>2014-07-11 14:10:49 +1000
committerMartin Jones <martin.jones@jollamobile.com>2014-07-16 07:54:58 +0200
commit112efda64ba24e7d9255a36065223e9800a50c21 (patch)
treec35446169d49b7ab4d4bf9a21b983cbc251206a5 /src/quick/items/qquickmousearea.cpp
parent427bee6cb616d515ae04bc47193e35e19e1b519e (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.cpp30
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());