import com.intellij.openapi.project.IndexNotReadyException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
+import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.ObjectUtils;
import com.intellij.util.PausesStat;
}
final boolean enabledBeforeUpdate = presentation.isEnabled();
- final boolean notAllowed = dumbMode && !action.isDumbAware() || (isInModalContext && !action.isEnabledInModalContext());
+ final boolean notAllowed = dumbMode && !action.isDumbAware() || (Registry.is("actionSystem.honor.modal.context") && isInModalContext && !action.isEnabledInModalContext());
if (insidePerformDumbAwareUpdate++ == 0) {
ActionPauses.STAT.started();
import com.intellij.openapi.actionSystem.ex.AnActionListener;
import com.intellij.openapi.actionSystem.ex.CustomComponentAction;
import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.application.impl.LaterInvocator;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.keymap.ex.KeymapManagerEx;
import com.intellij.openapi.ui.popup.*;
List<AnAction> newVisibleActions = ContainerUtil.newArrayListWithCapacity(myVisibleActions.size());
DataContext dataContext = getDataContext();
- Utils.expandActionGroup(false, myActionGroup, newVisibleActions, myPresentationFactory, dataContext,
+ Utils.expandActionGroup(LaterInvocator.isInModalContext(), myActionGroup, newVisibleActions, myPresentationFactory, dataContext,
myPlace, myActionManager, transparentOnly);
if (forced || !newVisibleActions.equals(myVisibleActions)) {
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ex.ActionUtil;
import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.application.impl.LaterInvocator;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.DumbService;
actionManager,
0
);
- if (!doUpdate(false, group, e, presentation)) return;
+ if (!doUpdate(isInModalContext, group, e, presentation)) return;
if (!presentation.isVisible()) { // don't process invisible groups
return;
if (!component.isShowing()) return;
DataContext context1 = DataManager.getInstance().getDataContext();
- expandActionGroup(false, group, new ArrayList<>(), presentationFactory, context1, place, ActionManager.getInstance());
+ expandActionGroup(LaterInvocator.isInModalContext(), group, new ArrayList<>(), presentationFactory, context1, place, ActionManager.getInstance());
for (Component each : children) {
if (each instanceof ActionMenuItem) {
processor.createEvent(e, myContext.getDataContext(), ActionPlaces.MAIN_MENU, presentation, ActionManager.getInstance());
try (AccessToken ignored = ProhibitAWTEvents.start("update")) {
- ActionUtil.performDumbAwareUpdate(false, action, actionEvent, true);
+ ActionUtil.performDumbAwareUpdate(LaterInvocator.isInModalContext(), action, actionEvent, true);
}
if (dumb && !action.isDumbAware()) {
new AnActionEvent(null, DataManager.getInstance().getDataContext(myComponent), myActionPlace, presentation,
ActionManager.getInstance(), 0);
actionEvent.setInjectedContext(action.isInInjectedContext());
- ActionUtil.performDumbAwareUpdate(false, action, actionEvent, false);
+ ActionUtil.performDumbAwareUpdate(LaterInvocator.isInModalContext(), action, actionEvent, false);
return presentation;
}
actionSystem.secondKeystrokeAutoPopupEnabled=false
actionSystem.secondKeystrokePopupTimeout=500
actionSystem.win.suppressAlt=true
+actionSystem.honor.modal.context=false
actionSystem.win.suppressAlt.new=true
actionSystem.win.suppressAlt.new.description=Enables another approach to consume Alt which may move focus to main menu (Windows L&F only).