From 48cce18d6c6c7c8b2bdcfed28d5563a77b0331da Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 10 May 2016 16:44:17 +0200 Subject: [PATCH] use up to date TransactionGuard when dispatching swing events; hopefully this will fix flaky TransactionTest --- .../src/com/intellij/ide/IdeEventQueue.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java index 3d4d06dee39a..59f4c14f09dd 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java @@ -357,7 +357,6 @@ public class IdeEventQueue extends EventQueue { boolean loaded = IdeaApplication.isLoaded(); if (loaded) { ourAppIsLoaded = true; - ourTransactionGuard = (TransactionGuardImpl)TransactionGuard.getInstance(); } return loaded; } @@ -389,7 +388,7 @@ public class IdeEventQueue extends EventQueue { myCurrentEvent = e; boolean userActivity = myIsInInputEvent || e instanceof ItemEvent; - try (AccessToken ignored = ourTransactionGuard == null ? null : ourTransactionGuard.startActivity(userActivity)) { + try (AccessToken ignored = startActivity(userActivity)) { _dispatchEvent(e, false); } catch (Throwable t) { @@ -409,6 +408,14 @@ public class IdeEventQueue extends EventQueue { } } + @Nullable + private static AccessToken startActivity(boolean userActivity) { + if (ourTransactionGuard == null && appIsLoaded()) { + ourTransactionGuard = (TransactionGuardImpl)TransactionGuard.getInstance(); + } + return ourTransactionGuard == null ? null : ourTransactionGuard.startActivity(userActivity); + } + private void processException(Throwable t) { if (!myToolkitBugsProcessor.process(t)) { PluginManager.processException(t);