aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-04-10 14:25:29 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-04-18 08:37:57 +0000
commit626977958873752c264604d93cc3564f46aab731 (patch)
tree3f84d95c1578b222348a28122017ba977911df40 /src
parent9976eec9ef53f5f987d778820cb9b64fe7cec290 (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.cpp36
-rw-r--r--src/quicktemplates2/qquickaction_p.h3
-rw-r--r--src/quicktemplates2/qquickaction_p_p.h3
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;