aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickabstractbutton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quicktemplates2/qquickabstractbutton.cpp')
-rw-r--r--src/quicktemplates2/qquickabstractbutton.cpp29
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) {