diff options
Diffstat (limited to 'src/quicktemplates2/qquickabstractbutton.cpp')
-rw-r--r-- | src/quicktemplates2/qquickabstractbutton.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp index 75854d04..67fa7704 100644 --- a/src/quicktemplates2/qquickabstractbutton.cpp +++ b/src/quicktemplates2/qquickabstractbutton.cpp @@ -330,6 +330,8 @@ void QQuickAbstractButton::setPressed(bool isPressed) \qmlproperty bool QtQuick.Controls::AbstractButton::checked This property holds whether the button is checked. + + \sa checkable */ bool QQuickAbstractButton::isChecked() const { @@ -352,11 +354,21 @@ void QQuickAbstractButton::setChecked(bool checked) emit checkedChanged(); } -// We define these in QQuickAbstractButton without exposing checkable as a -// property, and instead expose it as a property in QQuickButton. -// QQuickRadioButton, QQuickSwitch and QQuickCheckBox are checkable by default, -// but if we removed the checkable code from here, they'd each have to -// duplicate it. +/*! + \qmlproperty bool QtQuick.Controls::AbstractButton::checkable + + This property holds whether the button is checkable. + + A checkable button toggles between checked (on) and unchecked (off) when + the user clicks on it or presses the space bar while the button has active + focus. + + Setting \l checked to \c true forces this property to \c true. + + The default value is \c false. + + \sa checked +*/ bool QQuickAbstractButton::isCheckable() const { Q_D(const QQuickAbstractButton); @@ -372,6 +384,7 @@ void QQuickAbstractButton::setCheckable(bool checkable) d->checkable = checkable; setAccessibleProperty("checkable", checkable); checkableChange(); + emit checkableChanged(); } /*! @@ -474,8 +487,8 @@ void QQuickAbstractButton::keyPressEvent(QKeyEvent *event) Q_D(QQuickAbstractButton); QQuickControl::keyPressEvent(event); if (event->key() == Qt::Key_Space) { - setPressed(true); d->pressPoint = QPoint(qRound(width() / 2), qRound(height() / 2)); + setPressed(true); if (d->autoRepeat) { d->startRepeatDelay(); @@ -506,8 +519,8 @@ void QQuickAbstractButton::mousePressEvent(QMouseEvent *event) { Q_D(QQuickAbstractButton); QQuickControl::mousePressEvent(event); - setPressed(true); d->pressPoint = event->pos(); + setPressed(true); emit pressed(); @@ -540,7 +553,7 @@ void QQuickAbstractButton::mouseReleaseEvent(QMouseEvent *event) bool wasPressed = d->pressed; setPressed(false); - if (d->keepPressed || contains(event->pos())) + if (!d->wasHeld && (d->keepPressed || contains(event->pos()))) nextCheckState(); if (wasPressed) { |