From 9a2d188dadad39f0626243177d8238e8a4850845 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 13 May 2016 13:51:00 +0200 Subject: [PATCH] use app invokeLater in toolwindow CommandProcessor to avoid transaction assertions (EA-82213) --- .../intellij/openapi/wm/impl/CommandProcessor.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/CommandProcessor.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/CommandProcessor.java index 746030e68abd..3ba78f7e7f8e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/CommandProcessor.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/CommandProcessor.java @@ -81,13 +81,16 @@ public final class CommandProcessor implements Runnable { final boolean queueNext = myCommandCount > 0; Application application = ApplicationManager.getApplication(); ModalityState modalityState = Registry.is("ide.perProjectModality") ? ModalityState.defaultModalityState() : ModalityState.NON_MODAL; - application.getInvokator().invokeLater(command, modalityState, expire == null ? application.getDisposed() : expire).doWhenDone(new Runnable() { - public void run() { + application.invokeLater(() -> { + try { + command.run(); + } + finally { if (queueNext) { - CommandProcessor.this.run(); + this.run(); } } - }); + }, modalityState, expire == null ? application.getDisposed() : expire); } }