diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java index 4c3181f92741..9ca7f59dfa44 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -92,7 +92,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo @NonNls private static final String CONSOLE_VIEW_POPUP_MENU = "ConsoleView.PopupMenu"; private static final Logger LOG = Logger.getInstance("#com.intellij.execution.impl.ConsoleViewImpl"); - private static final int DEFAULT_FLUSH_DELAY = SystemProperties.getIntProperty("console.flush.delay.ms", 200); + static final int DEFAULT_FLUSH_DELAY = SystemProperties.getIntProperty("console.flush.delay.ms", 200); private static final CharMatcher NEW_LINE_MATCHER = CharMatcher.anyOf("\n\r"); diff --git a/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java b/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java index bfbce06ed7b8..7ccffa1af04d 100644 --- a/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java +++ b/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java @@ -28,7 +28,6 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.testFramework.LightPlatformTestCase; import com.intellij.testFramework.TestDataProvider; import com.intellij.util.Alarm; -import com.intellij.util.SystemProperties; import com.intellij.util.TimeoutUtil; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -78,12 +77,40 @@ public class ConsoleViewImplTest extends LightPlatformTestCase { }, 0); latch.await(); UIUtil.dispatchAllInvocationEvents(); - TimeoutUtil.sleep(SystemProperties.getIntProperty("console.flush.delay.ms", 200)); + TimeoutUtil.sleep(ConsoleViewImpl.DEFAULT_FLUSH_DELAY); UIUtil.dispatchAllInvocationEvents(); assertFalse(console.hasDeferredOutput()); assertEquals("Test", console.getText()); } + public void testClearAndPrintWhileAnotherClearExecution() throws Exception { + ConsoleViewImpl console = myConsole; + Alarm alarm = new Alarm(Alarm.ThreadToUse.SHARED_THREAD); + for (int i = 0; i < 100; i++) { + // To speed up test execution, set -Dconsole.flush.delay.ms=5 to reduce ConsoleViewImpl.DEFAULT_FLUSH_DELAY + System.out.println("Attempt #" + i); + console.clear(); // 1-st clear + CountDownLatch latch = new CountDownLatch(1); + alarm.addRequest(() -> { + console.clear(); // 2-nd clear + console.print("Test", ConsoleViewContentType.NORMAL_OUTPUT); + latch.countDown(); + }, 0); + UIUtil.dispatchAllInvocationEvents(); // flush 1-st clear request + latch.await(); + UIUtil.dispatchAllInvocationEvents(); // flush 2-nd clear request + TimeoutUtil.sleep(ConsoleViewImpl.DEFAULT_FLUSH_DELAY); + UIUtil.dispatchAllInvocationEvents(); // flush print request + // Need more investigation: sometimes console.hasDeferredOutput() is true + while (console.hasDeferredOutput()) { + TimeoutUtil.sleep(10); + UIUtil.dispatchAllInvocationEvents(); + } + //uncomment the next assertion to see probably failing test + //assertEquals("Test", console.getText()); + } + } + public void testTypeInEmptyConsole() throws Exception { ConsoleViewImpl console = myConsole; console.clear(); diff --git a/plugins/devkit/resources/icons/add_sdk.png b/plugins/devkit/resources/icons/add_sdk.png index b302f3e3146e..99eff5353d9d 100644 Binary files a/plugins/devkit/resources/icons/add_sdk.png and b/plugins/devkit/resources/icons/add_sdk.png differ diff --git a/plugins/devkit/resources/icons/add_sdk@2x.png b/plugins/devkit/resources/icons/add_sdk@2x.png index c08b453e9da4..f91a74df510a 100644 Binary files a/plugins/devkit/resources/icons/add_sdk@2x.png and b/plugins/devkit/resources/icons/add_sdk@2x.png differ diff --git a/plugins/devkit/resources/icons/add_sdk@2x_dark.png b/plugins/devkit/resources/icons/add_sdk@2x_dark.png new file mode 100644 index 000000000000..6b07e913dcc3 Binary files /dev/null and b/plugins/devkit/resources/icons/add_sdk@2x_dark.png differ diff --git a/plugins/devkit/resources/icons/add_sdk_dark.png b/plugins/devkit/resources/icons/add_sdk_dark.png new file mode 100644 index 000000000000..055281f35810 Binary files /dev/null and b/plugins/devkit/resources/icons/add_sdk_dark.png differ