信号 X 按钮移至行尾并统一抬起响应,光标读数补秒单位,图例悬停高亮信号,去除筛选框内圈

1. 信号条目的「移除」X 按钮移到最右端
   - 与分组行关闭 X 同尺寸(18)、同右边距(同一列)、同行内垂直居中,描边宽度也统一。
   - 网格编号 GX 徽标让位到 X 左侧,二者恒在列表最右侧;名称可用宽度改按实际徽标是否显示计算,
     不再白留一段空间。

2. 所有 X 关闭按钮由"按下即响应"改为"左键抬起才响应"
   - 与常见的可取消按钮一致:按下只记录目标,按住后移开鼠标再松开视为放弃。
   - 覆盖文件分组 X、信号 X、筛选框清空 X、标签页 X 与实验性功能面板 X。
   - 筛选框的清空 X 在编辑态下走的是宿主的 EDIT_FIELD 分支(OnEditMouseDown/OnEditMouseUp),
     非编辑态才走面板的按下/抬起分支,两条路径都已改造。
   - 标签页 X 原先只要求"抬起时仍在同一标签内",现收紧为"仍在 X 上"。
   - PlotView::OnLButtonUp 增加横坐标参数以便判定抬起位置。

3. 时间光标读数补上 s 后缀
   - 新增 FormatCursorTime,标签宽度测量与文字绘制同时使用,避免文字被裁掉;
     内联编辑仍使用不带单位的秒值。

4. 鼠标悬停网格图例时高亮对应信号
   - 除图例条目的半高亮外,对命中信号绘制与"鼠标贴近曲线"相同的光晕,
     便于确认该条目对应哪条曲线。

5. 筛选信号输入框编辑态不再出现内圈
   - 把输入框绘制拆分为"底板+边框"与"仅内容"两部分;筛选框外框已自绘,
     编辑态改用仅内容版本,空内容时不再套一层多余的圆角内框;
     有输入时的清空 X 不受影响。
This commit is contained in:
DeepSeek V4.1 Flash committed 2026-10-10 11:30:07 +08:00
1 parent a1e30985b8
commit d3c83237f1
8 files changed
+252 -72

No files matched your search

+14 -4
View File
@@ -220,7 +220,7 @@ namespace jdi
* @brief 编辑态下松开鼠标左键:结束拖拽框选。
* @return 之前处于拖拽中返回 true。
*/
bool OnEditMouseUp();
bool OnEditMouseUp(int x, int y);
/**
* @brief 获取指定信号的显示外观(只读,全局共享)。
@@ -405,10 +405,10 @@ namespace jdi
gd::RectF SignalBadgeRect(int row) const;
/**
* @brief 计算信号行左侧「移除该信号」✕ 按钮的矩形。
* @brief 计算信号行右侧「移除该信号」✕ 按钮的矩形。
*
* 位置就信号行空着的折叠三角列,并与所属分组行的复选框**同一列**(左边界对齐),
* 因此始终位于复选框前方且与其垂直对齐。
* 位于信号条目的**最右端**,尺寸、样式与右边距与分组行的关闭 ✕ 完全一致,
* 并与它们在同一行内垂直居中(因此视觉上垂直对齐);网格徽标会让位到它的左侧。
*
* @param [IN] row 行下标。
* @return 按钮矩形;非信号行时返回空矩形。
@@ -641,6 +641,16 @@ namespace jdi
SignalRef m_pendingLaneRef; /**< 待弹出菜单的目标信号。 */
bool m_pendingColorPicker = false; /**< 左键抬起时是否弹出拾色器。 */
/**
* @brief 待确认的「关闭类」按钮(✕)。
*
* 关闭类按钮统一改为**左键抬起**时生效:按下只记录目标,抬起时若指针仍在同一个
* ✕ 上才真正执行;按住后移开再松开视为放弃(与常见"可取消按钮"交互一致)。
*/
RowPart m_pendingClosePart = RowPart::NONE; /**< 待确认的 ✕ 所在行内区域(CLOSE / REMOVE_SIGNAL)。 */
int m_pendingCloseRow = -1; /**< 待确认的 ✕ 所在行下标。 */
bool m_pendingFilterClear = false; /**< 待确认的筛选框清空 ✕。 */
bool m_layoutDirty = false; /**< 是否需要重新布局。 */
SignalRef m_menuTargetSignal; /**< 菜单操作的目标信号。 */