From 57c56eb8dad141ab62c0936e00cb57f5ef4376ef Mon Sep 17 00:00:00 2001 From: Ilia Malakhov Date: Mon, 10 Nov 2025 11:43:53 +0100 Subject: [PATCH] IJPL-215635 fix: update separators in the processes popup when the user closes analyzing banner GitOrigin-RevId: 21117e2dd3d969f1a4bb1facfee83b4fcc45aefe --- .../impl/status/AnalyzingBannerDecorator.kt | 4 +-- .../openapi/wm/impl/status/ProcessPopup.java | 5 +++- .../wm/impl/status/SeparatorDecorator.kt | 27 ++++++++++--------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/AnalyzingBannerDecorator.kt b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/AnalyzingBannerDecorator.kt index 053507d6c2d8..8438f6356ef3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/AnalyzingBannerDecorator.kt +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/AnalyzingBannerDecorator.kt @@ -15,13 +15,13 @@ import java.awt.Component import javax.swing.JPanel // Places analyzing progress indicator on top, adds a banner under it -internal class AnalyzingBannerDecorator(private val panel: JPanel, revalidatePanel: Runnable) { +internal class AnalyzingBannerDecorator(private val panel: JPanel, onBannerClose: Runnable) { // component of analyzing progress, // placed above banner private var analyzingComponent: Component? = null - private val banner: Component = createBanner(revalidatePanel) + private val banner: Component = createBanner(onBannerClose) fun indicatorAdded(indicator: ProgressComponent) { diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ProcessPopup.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ProcessPopup.java index a03c7b7b2e87..67d4fdbcfd99 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ProcessPopup.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ProcessPopup.java @@ -55,7 +55,10 @@ final class ProcessPopup { } myTasksFinishedDecorator = new TasksFinishedDecorator(myIndicatorPanel); - myAnalyzingBannerDecorator = new AnalyzingBannerDecorator(myIndicatorPanel, () -> revalidateAll()); + myAnalyzingBannerDecorator = new AnalyzingBannerDecorator(myIndicatorPanel, () -> { + SeparatorDecorator.placeSeparators(myIndicatorPanel); + revalidateAll(); + }); mySeparatorDecorator = new SeparatorDecorator(myIndicatorPanel); myContentPanel = new JBScrollPane(myIndicatorPanel, VERTICAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER); diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/SeparatorDecorator.kt b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/SeparatorDecorator.kt index 57f23a948b44..bede492121b2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/SeparatorDecorator.kt +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/SeparatorDecorator.kt @@ -14,28 +14,31 @@ import javax.swing.JPanel */ internal class SeparatorDecorator(private val panel: JPanel) { fun indicatorAdded() { - placeSeparators() + placeSeparators(panel) } fun indicatorRemoved() { - placeSeparators() + placeSeparators(panel) } fun handlePopupClose() { - placeSeparators() + placeSeparators(panel) } - private fun placeSeparators() { - var previousComponentIsIndicator = false + companion object { + @JvmStatic + fun placeSeparators(panel: JPanel) { + var previousComponentIsIndicator = false - for (component in panel.components) { - if (isProgressIndicator(component)) { - component.updateSeparator(isShown = previousComponentIsIndicator) - previousComponentIsIndicator = true - } - else { - previousComponentIsIndicator = false + for (component in panel.components) { + if (isProgressIndicator(component)) { + component.updateSeparator(isShown = previousComponentIsIndicator) + previousComponentIsIndicator = true + } + else { + previousComponentIsIndicator = false + } } } }