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>
bb10
Allan Sandfeld Jensen 2020-02-19 12:30:13 +01:00 committed by Shawn Rutledge
parent 8ccae33a81
commit 96eea43d3b
1 changed files with 5 additions and 2 deletions

View File

@ -1112,9 +1112,12 @@ void QAction::setData(const QVariant &data)
void QAction::activate(ActionEvent event)
{
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;
if(d->checkable) {
if (d->checkable) {
// the checked action of an exclusive group may not be unchecked
if (d->checked && (d->group
&& d->group->exclusionPolicy() == QActionGroup::ExclusionPolicy::Exclusive