diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-04-10 14:25:29 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-04-18 08:37:57 +0000 |
commit | 626977958873752c264604d93cc3564f46aab731 (patch) | |
tree | 3f84d95c1578b222348a28122017ba977911df40 /src | |
parent | 9976eec9ef53f5f987d778820cb9b64fe7cec290 (diff) |
QQuickAction: keep track whether explicitly enabled
An enabled ActionGroup enables all its actions, except those explicitly
disabled.
Change-Id: I917dbb1d382bbb2e254a20933b13af8adfe8faa4
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/quicktemplates2/qquickaction.cpp | 36 | ||||
-rw-r--r-- | src/quicktemplates2/qquickaction_p.h | 3 | ||||
-rw-r--r-- | src/quicktemplates2/qquickaction_p_p.h | 3 |
3 files changed, 32 insertions, 10 deletions
diff --git a/src/quicktemplates2/qquickaction.cpp b/src/quicktemplates2/qquickaction.cpp index cdc7336e..06035455 100644 --- a/src/quicktemplates2/qquickaction.cpp +++ b/src/quicktemplates2/qquickaction.cpp @@ -171,7 +171,8 @@ void QQuickActionPrivate::ShortcutEntry::setEnabled(bool enabled) } QQuickActionPrivate::QQuickActionPrivate() - : enabled(true), + : explicitEnabled(false), + enabled(true), checked(false), checkable(false), icon(nullptr), @@ -204,6 +205,21 @@ void QQuickActionPrivate::setShortcut(const QVariant &var) emit q->shortcutChanged(keySequence); } +void QQuickActionPrivate::setEnabled(bool enable) +{ + Q_Q(QQuickAction); + if (enabled == enable) + return; + + enabled = enable; + + defaultShortcutEntry->setEnabled(enable); + for (QQuickActionPrivate::ShortcutEntry *entry : qAsConst(shortcutEntries)) + entry->setEnabled(enable); + + emit q->enabledChanged(enable); +} + bool QQuickActionPrivate::watchItem(QQuickItem *item) { Q_Q(QQuickAction); @@ -381,16 +397,18 @@ bool QQuickAction::isEnabled() const void QQuickAction::setEnabled(bool enabled) { Q_D(QQuickAction); - if (d->enabled == enabled) - return; - - d->enabled = enabled; + d->explicitEnabled = true; + d->setEnabled(enabled); +} - d->defaultShortcutEntry->setEnabled(enabled); - for (QQuickActionPrivate::ShortcutEntry *entry : qAsConst(d->shortcutEntries)) - entry->setEnabled(enabled); +void QQuickAction::resetEnabled() +{ + Q_D(QQuickAction); + if (!d->explicitEnabled) + return; - emit enabledChanged(enabled); + d->explicitEnabled = false; + d->setEnabled(true); } /*! diff --git a/src/quicktemplates2/qquickaction_p.h b/src/quicktemplates2/qquickaction_p.h index 3f16b4e7..d47b847e 100644 --- a/src/quicktemplates2/qquickaction_p.h +++ b/src/quicktemplates2/qquickaction_p.h @@ -63,7 +63,7 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickAction : public QObject Q_OBJECT Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged FINAL) Q_PROPERTY(QQuickIcon *icon READ icon CONSTANT FINAL) - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL) + Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged RESET resetEnabled FINAL) Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY checkedChanged FINAL) Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY checkableChanged FINAL) Q_PRIVATE_PROPERTY(QQuickAction::d_func(), QVariant shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged FINAL) @@ -79,6 +79,7 @@ public: bool isEnabled() const; void setEnabled(bool enabled); + void resetEnabled(); bool isChecked() const; void setChecked(bool checked); diff --git a/src/quicktemplates2/qquickaction_p_p.h b/src/quicktemplates2/qquickaction_p_p.h index 4e1c89c2..754de3d5 100644 --- a/src/quicktemplates2/qquickaction_p_p.h +++ b/src/quicktemplates2/qquickaction_p_p.h @@ -74,6 +74,8 @@ public: QVariant shortcut() const; void setShortcut(const QVariant &shortcut); + void setEnabled(bool enable); + bool watchItem(QQuickItem *item); bool unwatchItem(QQuickItem *item); @@ -107,6 +109,7 @@ public: ShortcutEntry *findShortcutEntry(QObject *target) const; void updateDefaultShortcutEntry(); + bool explicitEnabled; bool enabled; bool checked; bool checkable; |