From b67e17c2fa1b4ddfacfe01181594876260b25e2a Mon Sep 17 00:00:00 2001 From: fanlusky <1730976608@qq.com> Date: Tue, 16 Jun 2026 22:13:51 +0800 Subject: [PATCH] Fix block caret during horizontal navigation --- ui/README.md | 1 + ui/src/tsf/TextLayout.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/ui/README.md b/ui/README.md index ca2e9b14..bf807955 100644 --- a/ui/README.md +++ b/ui/README.md @@ -83,6 +83,7 @@ - 单行 `TextBox` 现在支持基于光标位置的横向自动滚动:当文本向右溢出时,左右箭头、输入插入、删除和鼠标定位都会自动把当前 caret 滚动到可见区域 - 修复了单行 `TextBox` 启用横向滚动后 preedit 组合下划线未跟随文本一起偏移的问题,输入法预编辑样式现已恢复正常显示 - 继续修正了单行 `TextBox` 的横向滚动回收逻辑:当末尾删除文本导致内容变短时,会及时收回多余的右侧滚动量,避免随后输入法预编辑时视图突然跳到最右端 +- 修复了 `TextBox` 用左右方向键移动时中间位置 caret 被绘制成整字符方块的问题:插入光标现在在整行范围内都会保持细竖线样式 ## 构建 diff --git a/ui/src/tsf/TextLayout.cpp b/ui/src/tsf/TextLayout.cpp index 72a3d0a9..7f921dec 100644 --- a/ui/src/tsf/TextLayout.cpp +++ b/ui/src/tsf/TextLayout.cpp @@ -497,6 +497,7 @@ BOOL CTextLayout::RectFromCharPosDipsRaw(UINT nPos, D2D1_RECT_F *prc) } *prc = _prgLines[i].prgCharInfo[nPos - _prgLines[i].nPos].rc; + prc->right = prc->left; return TRUE; }