输入框鼠标编辑、图例省略、信号跨视图共享选择与网格菜单布局修复

- 输入框:支持鼠标左键点击定位插入符、拖拽框选区域,并且不再限制字符长度
- 输入框:长文本使用 ETO_CLIPPED 裁剪绘制,避免字符溢出到编辑区域之外
- 图例:信号名称超过 200px 时省略号截断,不再挤压标尺区域
- 选中状态从 TabConfig 迁移到 DataSet,切换视图后信号选中状态保持一致
- 网格右键菜单:Y 轴最大值/最小值直接显示当前值,点击后原位置弹出内联编辑框
- 标尺数值改为绘制在图例下层,不再因避让图例而隐藏
- 移除已无用的 LegendBandRect,新增共享的编辑框布局与命中检测工具
- .gitignore 忽略 TestData 测试数据目录
This commit is contained in:
DeepSeek V4.1 Flash committed 2026-09-30 17:10:23 +08:00
1 parent e3744f3eff
commit 12b3531485
19 files changed
+790 -186

No files matched your search

+32
View File
@@ -144,6 +144,37 @@ namespace jdi
*/
bool DeselectToEnd();
/**
* @brief 把插入符定位到指定偏移(单击输入框内时使用),并清除选区。
* @param [IN] offset 目标偏移(内部会夹到合法范围)。
* @return 光标或选区发生变化返回 true。
*/
bool PlaceCaret(std::size_t offset);
/**
* @brief 开始鼠标拖拽框选:把锚点与插入符都放在给定偏移。
* @param [IN] offset 起始偏移。
*/
void BeginDrag(std::size_t offset);
/**
* @brief 拖拽过程中更新插入符(锚点保持不变 → 形成选区)。
* @param [IN] offset 当前偏移。
* @return 光标或选区发生变化返回 true。
*/
bool UpdateDrag(std::size_t offset);
/**
* @brief 结束鼠标拖拽。
*/
void EndDrag() { m_dragging = false; }
/**
* @brief 判断是否正在鼠标拖拽框选。
* @return 正在拖拽返回 true。
*/
bool Dragging() const { return m_dragging; }
/**
* @brief 复制当前内容到剪贴板(存在选区时只复制选区)。
* @param [IN] owner 剪贴板所有者窗口句柄,允许为空。
@@ -204,6 +235,7 @@ namespace jdi
bool m_active = false; /**< 是否处于编辑状态。 */
bool m_fresh = false; /**< 是否处于“首次输入整体替换”状态。 */
bool m_dragging = false; /**< 是否正在鼠标拖拽框选。 */
std::wstring m_text; /**< 当前文本。 */
std::size_t m_caret = 0; /**< 光标位置。 */
std::size_t m_anchor = 0; /**< 选区锚点。 */