修复列表内联编辑(组名/信号名)看不到插入符与选区;把 UI 基础层迁入 Components/Shared
1) 行位图缓存键漏了插入符与选区:信号列表整行走 PaintRowCached,RowCacheKey
在编辑态只混合“是否编辑 + 文本” ⇒ 左右方向键与鼠标框选虽然改变了 TextEdit
状态(caret/anchor),键却不变 ⇒ 贴回旧位图。表现就是“无法部分选择、
鼠标框选无反应、光标不动”,而绘图区的光标时间输入(无行缓存)一直正常。
修法:GROUP_TITLE / SIGNAL_NAME 两个分支编辑态把 Caret / SelectionBegin /
SelectionEnd 一并 mix 进键;新增 SignalPanel::EditFieldFont() 统一
绘制(uiSmall / ui)与鼠标命中、插入符换算所用字体。
2) Theme / PaintUtil / TextEdit / PopupMenu / ColorPickerPopup 由
Utilities/{Inc,Src} git mv 到 Components/Shared/{Inc,Src}:
Utilities 只保留纯数据/逻辑模块(DataModel、DataTable、各 *Loader、MatH5、
Utf8Util),Shared 成为自洽的 UI 基础层(Theme → PaintUtil → UiControls →
PopupMenu / ColorPickerPopup)。依赖方向仍是 Components → Shared → Utilities;
PaintUtil 一并迁移是因为它依赖 Theme(否则构成 Utilities → Shared 反向依赖)。
Makefile 无需改动(include 平铺,两个目录都已在搜索路径),但需清理 Build/*
里对应的旧 .o/.d。
验证(全部离屏,不占用鼠标/键盘/屏幕):
- 新增 .preflight/editcheck 20/20;A/B 修复前 6 项如实失败(键不变 + 屏幕不重绘);
- 既有 .preflight/check 137/137;
- make release / make debug 零警告。
This commit is contained in:
1 parent
f44f8021e3
commit
1e50494c41
15 files changed
+93
-4
No files matched your search
@@ -1077,6 +1077,14 @@ namespace jdi
|
||||
*/
|
||||
gd::RectF EditFieldRect();
|
||||
|
||||
/**
|
||||
* @brief 当前输入框绘制与命中/插入符换算所使用的字体。
|
||||
* @return 字体句柄(分组名用 `uiSmall`,其余用 `ui`)。
|
||||
* @note ⚠️ 绘制(`PaintGroupRow` / `PaintSignalRow`)与鼠标定位(`UiEditOffsetAt`)
|
||||
* **必须使用同一个字体**,否则点哪儿插入符就落到哪儿这个不变量会被破坏。
|
||||
*/
|
||||
HFONT EditFieldFont() const;
|
||||
|
||||
/**
|
||||
* @brief 计算「筛选信号」输入框的内容矩形(编辑与显示共用,保证不跳动)。
|
||||
* @return 内容矩形。
|
||||
|
||||
Reference in new issue
Block a user