From 009d4c4ded79172e9d47ec780a462618946b403a Mon Sep 17 00:00:00 2001 From: Konstantin Nisht Date: Wed, 14 May 2025 10:39:59 +0200 Subject: [PATCH] [ui] IJPL-182690: Allow manually run animations GitOrigin-RevId: 24bad228810ebeabfa03dbe905e6b1d86d8593ec --- .../src/com/intellij/util/ui/AnimatedIcon.java | 6 ++++++ .../platform-api/src/com/intellij/util/ui/Animator.kt | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/platform/platform-api/src/com/intellij/util/ui/AnimatedIcon.java b/platform/platform-api/src/com/intellij/util/ui/AnimatedIcon.java index 2fc52f4b9746..8df8a01ff2a9 100644 --- a/platform/platform-api/src/com/intellij/util/ui/AnimatedIcon.java +++ b/platform/platform-api/src/com/intellij/util/ui/AnimatedIcon.java @@ -5,6 +5,7 @@ import com.intellij.openapi.Disposable; import com.intellij.util.ui.update.Activatable; import com.intellij.util.ui.update.UiNotifyConnector; import kotlinx.coroutines.CoroutineScope; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; @@ -95,6 +96,11 @@ public class AnimatedIcon extends JComponent implements Disposable { isPaintPassive = paintPassive; } + @ApiStatus.Internal + public void tickAnimation() { + animator.forceTick(); + } + private boolean ensureAnimation(boolean running) { var isShowing = isShowing(); var animatorShouldBeRunning = running && isShowing; diff --git a/platform/platform-api/src/com/intellij/util/ui/Animator.kt b/platform/platform-api/src/com/intellij/util/ui/Animator.kt index 1e96e340820b..c804d7a88bf5 100644 --- a/platform/platform-api/src/com/intellij/util/ui/Animator.kt +++ b/platform/platform-api/src/com/intellij/util/ui/Animator.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.util.Disposer import com.intellij.util.ReflectionUtil import com.intellij.util.SingleAlarm import kotlinx.coroutines.* +import org.jetbrains.annotations.ApiStatus import org.jetbrains.annotations.ApiStatus.Obsolete import org.jetbrains.annotations.NonNls import java.awt.GraphicsEnvironment @@ -58,6 +59,14 @@ abstract class Animator @JvmOverloads constructor( } } + /** + * This operation is used for manual processing of animation in cases when IDE event queue is unavailable + */ + @ApiStatus.Internal + fun forceTick() { + onTick() + } + private fun onTick() { if (isDisposed) { return