From 53e532e52b55456f46f2c051d653cc293f03ce89 Mon Sep 17 00:00:00 2001 From: Stanislav Alekseev Date: Thu, 19 Feb 2026 17:54:15 +0200 Subject: [PATCH] [editor] IJPL-233066 disable smooth caret blinking in RDP sessions (cherry picked from commit 807ea3b9101170427d36a19d1c9fa1b7b9c3b79e) IJ-CR-192627 GitOrigin-RevId: f85872c18b956f3c50e545e7089203ea5deaed76 --- .../openapi/editor/impl/EditorCaretRepaintService.kt | 9 ++++++--- .../com/intellij/openapi/editor/impl/EditorImpl.java | 10 +++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorCaretRepaintService.kt b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorCaretRepaintService.kt index 7f02310e044f..db0baa96d8fc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorCaretRepaintService.kt +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorCaretRepaintService.kt @@ -73,11 +73,14 @@ internal class EditorCaretRepaintService(coroutineScope: CoroutineScope) { check(actionRequests.tryEmit(Unit)) } + private fun shouldUseNormalBlinking(editor: EditorImpl) = + editor.shouldDisableAnimations() || !editor.settings.isSmoothCaretBlinking + private suspend fun blink(editor: EditorImpl) { - if (editor.settings.isSmoothCaretBlinking) { - blinkSmooth(editor) - } else { + if (shouldUseNormalBlinking(editor)) { blinkNormal(editor) + } else { + blinkSmooth(editor) } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index c1ca5e6be8e9..a33af0fca453 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -3355,13 +3355,17 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } } + boolean shouldDisableAnimations() { + return Registry.is("ui.simplified", false) || + PowerSaveMode.isEnabled() || + RemoteDesktopService.isRemoteSession(); + } + private boolean shouldSetCursorPositionImmediately() { return !getSettings().isAnimatedCaret() || gainedFocus.getAndSet(false) || myMouseIsInDrag || - Registry.is("ui.simplified", false) || - PowerSaveMode.isEnabled() || - RemoteDesktopService.isRemoteSession(); + shouldDisableAnimations(); } private void setCursorPosition() {