IdeKeyEventDispatcher: perform action inside a user activity (EA-82426 - assert: TransactionGuardImpl.submitTransactionAndWait)

This commit is contained in:
peter
2016-05-18 18:07:48 +02:00
parent 79cd3850ff
commit 04355fa04f
@@ -23,10 +23,7 @@ import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ex.ActionManagerEx;
import com.intellij.openapi.actionSystem.ex.ActionUtil;
import com.intellij.openapi.actionSystem.impl.PresentationFactory;
import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.application.TransactionGuard;
import com.intellij.openapi.application.*;
import com.intellij.openapi.keymap.KeyMapBundle;
import com.intellij.openapi.keymap.Keymap;
import com.intellij.openapi.keymap.KeymapManager;
@@ -60,7 +57,6 @@ import com.intellij.ui.components.JBOptionButton;
import com.intellij.ui.popup.list.ListPopupImpl;
import com.intellij.ui.speedSearch.SpeedSearchSupply;
import com.intellij.util.Alarm;
import com.intellij.util.Processor;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.KeyboardLayoutUtil;
import com.intellij.util.ui.MacUIUtil;
@@ -634,7 +630,8 @@ public final class IdeKeyEventDispatcher implements Disposable {
return true;
}
processor.performAction(e, action, actionEvent);
((TransactionGuardImpl)TransactionGuard.getInstance()).performUserActivity(
() -> processor.performAction(e, action, actionEvent));
actionManager.fireAfterActionPerformed(action, actionEvent.getDataContext(), actionEvent);
return true;
}