fix(ui): 选区截取面板空白真正根因、拖拽指示线层序、新建分组修复、避让动画更顺
一、选区截取面板「条目区与按钮之间的空白」(连续三轮未修好的那个) 根因不是内容区几何,而是**底部固定区高度算了两行**:footerHeight 用 `buttonHeight * 2 + 6 + pad` 预留,而布局把「截取为新信号 / 原始信号截取」 两个按钮并排画在同一行 ⇒ 内容区下边界与按钮上边界之间空出一整行。 改为按一行算(两处:高度算式分支 + 布局几何分支同步修改)。 数值核对(scale=1.25、1 条可见信号):GAP 53.8px → 8.8px(= 一个 pad 的预期留白)。 二、拖拽插入指示线不再盖住被拖条目 PaintSignalDragGhost 的绘制顺序改为「插入指示线 → 阴影 → 幽灵行 → 描边」, 指示线始终位于跟随鼠标的那部分之下。 三、「移动到…」二级菜单 * 条目文案改为「组号 | 组名」(不再是括号形式)。 * 修复「新建分组」点了没反应:DataSet::AddGroup 拒收「无信号且无时间轴」的空分组, 旧实现「先建空组再搬信号」必然在建组那一步失败。新增 DataSet::MoveSignalToNewGroup 把建组 + 搬运时间轴 + 搬运信号做成原子操作(失败回滚)。 * TabConfig::RemapAfterSignalMove 在目标分组是新建时自行扩展 m_visible (调用方不再先 SyncToDataSet —— 那次同步会按旧下标清理引用)。 * Application::MoveSignalCore 增加 newGroupName 参数并返回 bool,避免失败仍报"已移动"。 四、信号拖拽避让动画更流畅 * 插值系数按真实帧间隔计算:1 - exp(-dt/22ms),dt 夹在 1~60ms,帧间隔抖动时不再忽快忽慢。 * 鼠标移动事件里也推进一次插值,快速拖动时让位效果跟得上指针。 验证:删 .o 全量重编译零 error / 零 warning,产物 875,008 B(< 1MB 预警阈值)。 本轮未占用鼠标/键盘/屏幕,未运行任何 GUI 探针;面板空白改为纯数值算式核对。 规则已同步到 Documents/agent_mem.md(含"改面板几何必须数值验证"的教训条目)。
This commit is contained in:
1 parent
97b361dedd
commit
328a3b3b59
10 files changed
+259
-75
No files matched your search
@@ -233,7 +233,7 @@ namespace jdi
|
||||
items.push_back(cloneAdjusted);
|
||||
|
||||
// 「移动到…」二级菜单(用户 2026-11-03 要求,位置在「仅显示该信号」**之上**):
|
||||
// 条目为「分组 N(组名)」+ 当前所在分组打勾;末尾分割线之下是「新建分组」。
|
||||
// 条目为「组号 | 组名」+ 当前所在分组打勾;末尾分割线之下是「新建分组」。
|
||||
// 结构与信号名右侧 GX 徽标点击后的「所属网格」菜单保持一致,但**没有标题行**,
|
||||
// 且底部动作换成「新建分组」(新建分组后把信号移进去)。
|
||||
MenuItem moveMenu;
|
||||
@@ -248,7 +248,9 @@ namespace jdi
|
||||
continue;
|
||||
}
|
||||
MenuItem entry;
|
||||
entry.label = L"分组 " + std::to_wstring(index + 1) + L"(" + group->name + L")";
|
||||
// ⚠️ 显示形式为「组号 + 竖线 + 组名」(用户 2026-11-03 明确要求),
|
||||
// **不要**用括号把组名括起来(旧实现 `分组 1(名称)` 已被要求改掉)。
|
||||
entry.label = std::to_wstring(index + 1) + L" | " + group->name;
|
||||
entry.id = CMD_GROUP_MOVE_BASE + static_cast<int>(index);
|
||||
entry.checked = (static_cast<int>(index) == ref.groupIndex);
|
||||
moveMenu.submenu.push_back(entry);
|
||||
|
||||
Reference in new issue
Block a user