summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-02-17 16:27:11 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-02-26 22:02:20 +0100
commite5e969c00c35f43f00309fc03b96e296c935f176 (patch)
tree36d6236343f9688862626813762215455662f37d /src/gui/kernel
parent75c0ffaf6d2b92cdf26092e01acdd5af4afeac97 (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.cpp14
-rw-r--r--src/gui/kernel/qguiaction.h5
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);