From 0f174fd3be93547fca9fc4597af3e05b940d4656 Mon Sep 17 00:00:00 2001 From: Stanislav Alekseev Date: Fri, 30 Jan 2026 00:01:40 +0200 Subject: [PATCH] [editor] IJPL-221939 only wait once for animated spinner GitOrigin-RevId: e8f7cd06724600825145e41f1193c734a17a8a13 --- .../openapi/fileEditor/impl/SpinnerTabIconHolder.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/SpinnerTabIconHolder.kt b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/SpinnerTabIconHolder.kt index 8cfc57b09e93..87c99d2bab99 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/SpinnerTabIconHolder.kt +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/SpinnerTabIconHolder.kt @@ -26,6 +26,7 @@ import kotlin.time.Duration.Companion.milliseconds @OptIn(ExperimentalCoroutinesApi::class) internal class SpinnerTabIconHolder(composite: EditorComposite, private val owner: TabInfo) : TabInfoIconHolder { private val delayFromRegistry = Registry.intValue("editor.loading.spinner.delay.ms", 0).milliseconds + private val isStaticSpinner = Registry.`is`("editor.loading.spinner.static") private var icon: Icon? @@ -39,7 +40,11 @@ internal class SpinnerTabIconHolder(composite: EditorComposite, private val owne init { composite.coroutineScope.launch(CoroutineName("EditorComposite(file=${composite.file.name}.iconLoading") + ModalityState.any() .asContextElement()) out@{ - val loadingSpinnerWaiting = launch { delay(delayFromRegistry) } + val loadingSpinnerWaiting = launch { + if (!isStaticSpinner) { + delay(delayFromRegistry) + } + } val iconProcessingWaiting = launch { composite.waitForAvailable() } select { loadingSpinnerWaiting.onJoin { @@ -65,10 +70,9 @@ internal class SpinnerTabIconHolder(composite: EditorComposite, private val owne } private suspend fun setLoadingSpinner() { - if (Registry.`is`("editor.loading.spinner.static")) { + if (isStaticSpinner) { setIconImmediately(AllIcons.Ide.GrayDot) } else { - delay(delayFromRegistry) setIconImmediately(AnimatedIcon.Default.INSTANCE) } }