diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-02-17 16:27:11 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-02-26 22:02:20 +0100 |
commit | e5e969c00c35f43f00309fc03b96e296c935f176 (patch) | |
tree | 36d6236343f9688862626813762215455662f37d /src/gui/kernel | |
parent | 75c0ffaf6d2b92cdf26092e01acdd5af4afeac97 (diff) |
Prepare QGuiAction::checked property for declarative use
Make the order checkable and checked are set in insignificant, by
storing ignored checked value for un-checkable actions.
Also gives checkable its own changed signal.
Change-Id: If03db7c92481a542b6220604860abddb322bb517
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/gui/kernel')
-rw-r--r-- | src/gui/kernel/qguiaction.cpp | 14 | ||||
-rw-r--r-- | src/gui/kernel/qguiaction.h | 5 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/gui/kernel/qguiaction.cpp b/src/gui/kernel/qguiaction.cpp index dc5d3808b8..84750194b6 100644 --- a/src/gui/kernel/qguiaction.cpp +++ b/src/gui/kernel/qguiaction.cpp @@ -802,8 +802,12 @@ void QGuiAction::setCheckable(bool b) return; d->checkable = b; - d->checked = false; + QPointer<QGuiAction> guard(this); d->sendDataChanged(); + if (guard) + emit checkableChanged(b); + if (guard && d->checked) + emit toggled(b); } bool QGuiAction::isCheckable() const @@ -839,11 +843,13 @@ void QGuiAction::toggle() void QGuiAction::setChecked(bool b) { Q_D(QGuiAction); - if (!d->checkable || d->checked == b) + if (d->checked == b) return; - QPointer<QGuiAction> guard(this); d->checked = b; + if (!d->checkable) + return; + QPointer<QGuiAction> guard(this); d->sendDataChanged(); if (guard) emit toggled(b); @@ -852,7 +858,7 @@ void QGuiAction::setChecked(bool b) bool QGuiAction::isChecked() const { Q_D(const QGuiAction); - return d->checked; + return d->checked && d->checkable; } /*! diff --git a/src/gui/kernel/qguiaction.h b/src/gui/kernel/qguiaction.h index f717821120..1306c3cf94 100644 --- a/src/gui/kernel/qguiaction.h +++ b/src/gui/kernel/qguiaction.h @@ -61,7 +61,7 @@ class Q_GUI_EXPORT QGuiAction : public QObject Q_OBJECT Q_DECLARE_PRIVATE(QGuiAction) - Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY changed) + Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY checkableChanged FINAL) Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY toggled) Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged RESET resetEnabled FINAL) Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY changed) @@ -181,7 +181,8 @@ public Q_SLOTS: Q_SIGNALS: void changed(); - void enabledChanged(bool changed); + void enabledChanged(bool enabled); + void checkableChanged(bool checkable); void triggered(bool checked = false); void hovered(); void toggled(bool); |