[editor] IJPL-221939 only wait once for animated spinner

GitOrigin-RevId: e8f7cd06724600825145e41f1193c734a17a8a13
This commit is contained in:
Stanislav Alekseev
2026-01-30 14:09:01 +00:00
committed by intellij-monorepo-bot
parent 4bd9ed87a5
commit 0f174fd3be
@@ -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)
}
}