From e72c2c8b6093aee77515e7e0bfbf232f83426321 Mon Sep 17 00:00:00 2001 From: fanlusky <1730976608@qq.com> Date: Tue, 16 Jun 2026 22:30:04 +0800 Subject: [PATCH] Prevent TextBox jitter during caret blink --- ui/README.md | 1 + ui/src/tsf/TextEditor.cpp | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/README.md b/ui/README.md index dcaf97f4..ceed8db7 100644 --- a/ui/README.md +++ b/ui/README.md @@ -87,6 +87,7 @@ - 微调了 `TextBox` caret 的绘制位置:插入光标现在以字符边界为中心绘制,不会再明显压到后一个字上 - 继续微调了 `TextBox` caret 的视觉位置:在保持字符边界对齐的前提下,插入光标额外轻微向左偏移,和后一个字之间会留出更自然的呼吸感 - 修正了单行 `TextBox` 在文本溢出时按左箭头的横向滚动行为:现在会优先让 caret 正常向左移动,只有文本整体变短时才回收多余的右侧滚动量 +- 修复了单行 `TextBox` 在文本溢出时 caret 闪烁导致整段文本左右抖动的问题:纯 blink 重绘不再重复触发布局更新和滚动校正 ## 构建 diff --git a/ui/src/tsf/TextEditor.cpp b/ui/src/tsf/TextEditor.cpp index 32d99385..51cc715f 100644 --- a/ui/src/tsf/TextEditor.cpp +++ b/ui/src/tsf/TextEditor.cpp @@ -259,7 +259,6 @@ void CTextEditor::Render(ID2D1HwndRenderTarget *pRenderTarget) return; } - UpdateLayout(); _layout.Render(pRenderTarget, GetTextBuffer(), GetTextLength(), _nSelStart, _nSelEnd, _pCompositionRenderInfo, _nCompositionRenderInfo); }