Do not trigger actions disabled directly or on group level

Only allow actions disabled due not being visible to trigger, when
enabled is not true.

This matches QQuickAction behavior, and doesn't apppear to affect QtGui
or QtWidgets.

Change-Id: I1a00b80213598ef1560be4c9ee9e65cd6fa6d760
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This commit is contained in:
Allan Sandfeld Jensen 2020-02-19 12:30:13 +01:00 committed by Shawn Rutledge
parent 8ccae33a81
commit 96eea43d3b

View File

@ -1112,9 +1112,12 @@ void QAction::setData(const QVariant &data)
void QAction::activate(ActionEvent event) void QAction::activate(ActionEvent event)
{ {
Q_D(QAction); Q_D(QAction);
if(event == Trigger) { if (event == Trigger) {
// Ignore even explicit triggers when explicitly disabled
if ((d->explicitEnabled && !d->explicitEnabledValue) || (d->group && !d->group->isEnabled()))
return;
QPointer<QObject> guard = this; QPointer<QObject> guard = this;
if(d->checkable) { if (d->checkable) {
// the checked action of an exclusive group may not be unchecked // the checked action of an exclusive group may not be unchecked
if (d->checked && (d->group if (d->checked && (d->group
&& d->group->exclusionPolicy() == QActionGroup::ExclusionPolicy::Exclusive && d->group->exclusionPolicy() == QActionGroup::ExclusionPolicy::Exclusive