aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickaction.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-10-09 16:29:28 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-10-09 14:45:04 +0000
commitcb0519724e3d937feaa506f0ed65769347ad9de0 (patch)
tree6191605119cf8a377822d2324a3b5a3f7d92ce8b /src/quicktemplates2/qquickaction.cpp
parentfdfb0e1d1cca04645bff07fbe7cc09f72f82b0da (diff)
QQuickAction: don't uncheck the checked action of an exclusive group
The logic is adapted from QAction::activate(). Task-number: QTBUG-63674 Change-Id: I7af127ea917e40e6a8ca99c2528362cf6ad283b8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickaction.cpp')
-rw-r--r--src/quicktemplates2/qquickaction.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/quicktemplates2/qquickaction.cpp b/src/quicktemplates2/qquickaction.cpp
index fb6d7c3e..0e51daef 100644
--- a/src/quicktemplates2/qquickaction.cpp
+++ b/src/quicktemplates2/qquickaction.cpp
@@ -526,10 +526,13 @@ void QQuickAction::trigger(QObject *source)
if (!d->enabled)
return;
- if (d->checkable)
+ QPointer<QObject> guard = this;
+ // the checked action of an exclusive group cannot be unchecked
+ if (d->checkable && (!d->checked || !d->group || !d->group->isExclusive() || d->group->checkedAction() != this))
toggle(source);
- emit triggered(source);
+ if (!guard.isNull())
+ emit triggered(source);
}
bool QQuickAction::event(QEvent *event)