fix(node): prevent recursive tab resize crash
This commit is contained in:
parent
1e7edcb8b7
commit
aba93d6d0b
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
- **08-21 / Unreleased / Blender 多视图与剖切 v2**:以 `blender.scene.author@v2` 直接替换 v1,目标节点为 Blender 5.2 LTS;`rotary_kiln` 一次建模后可连续渲染等轴测、侧视、窑头、窑尾、纵向剖切和横截面,完整工程保持未剖切状态;固定等轴测预览外,其他选定 PNG 可动态自动回传,GLB 排除仅供剖切渲染的辅助几何。专业软件提交工具改为区分缺失参数与合法空数组,允许 Blender 这类无输入、无额外导出请求的纯生成任务进入合同校验;90 项 Blender/合同/Job/Node/预览专项 unittest、.NET build、独立 adapter 打包和 Blender 3.6.12 兼容烟测通过,全量 698 项仍仅 3 个既有数据库集成模块因显式测试库缺少 `users` 表未通过(另跳过 4 项),目标节点 5.2 真机验收待部署后执行,未连接或迁移生产数据库。
|
||||
|
||||
- **08-21 / Unreleased / Windows Node 软件地址选择、Origin 检测与自适应界面**:专业软件保留一层带边界的独立配置行和通栏只读地址框,Origin、ANSYS、Blender 均可手选位置。Origin 自动检测由单一 COM 路径扩展为 COM、卸载注册表和标准目录回退,手选的 `Origin*.exe` 同时用于 Worker 版本识别,COM 执行健康仍由 probe 独立校验。主窗口移除固定宽度居中容器和普通内容卡片边框,改为单层全宽页面;页签宽度跟随窗口调整,软件状态与操作分行并允许按钮自然换行,能力概览按软件与能力名称归并旧、新 adapter 的重复文案。Windows Node 22 项源码 unittest、.NET build 与 diff 检查通过,无 DB、schema、HTTP API、依赖或运行方式变化。
|
||||
- **08-21 / Unreleased / Windows Node 软件地址选择、Origin 检测与自适应界面**:专业软件保留一层带边界的独立配置行和通栏只读地址框,Origin、ANSYS、Blender 均可手选位置。Origin 自动检测由单一 COM 路径扩展为 COM、卸载注册表和标准目录回退,手选的 `Origin*.exe` 同时用于 Worker 版本识别,COM 执行健康仍由 probe 独立校验。主窗口移除固定宽度居中容器和普通内容卡片边框,改为单层全宽页面;页签使用 WinForms 内置 `FillToRight` 模式跟随窗口调整,避免手工尺寸回调递归触发布局栈溢出;软件状态与操作分行并允许按钮自然换行,能力概览按软件与能力名称归并旧、新 adapter 的重复文案。Windows Node 23 项源码 unittest、.NET build、启动烟测与 diff 检查通过,无 DB、schema、HTTP API、依赖或运行方式变化。
|
||||
|
||||
- **08-20 / Unreleased / Windows Node 专业软件独立配置与 runtime 安装**:主窗口新增 Origin、ANSYS Mechanical 2024 R2、Blender 软件卡,分别显示应用位置来源和受管 runtime 状态;三种软件均可由 UI 选择自定义位置,清除后按各自的环境变量、COM、卸载注册表、PATH 或标准目录自动检测。每个软件可单独创建或更新隔离的 Python 3.12 runtime,安装只使用内置 runtime 定义与固定 requirements,拒绝活动任务期间替换,并先在临时目录完成后再切换;配置后的路径由 Host 作为固定子进程环境传给 Worker,任务请求仍不能提供路径或命令。移除重复承担软件安装和开机启动的统一 BAT,发布包直接运行 EXE,当前账号的开机启动也完全由 UI 管理;全新节点默认使用可写的 `%LocalAppData%` 数据根目录,已有 `%ProgramData%` 节点原位兼容。
|
||||
|
||||
|
|
|
|||
|
|
@ -204,11 +204,11 @@ class WindowsNodeSourceTests(unittest.TestCase):
|
|||
self.assertIn('AddTab(tabs, "专业软件")', form)
|
||||
self.assertIn('AddTab(tabs, "本机任务")', form)
|
||||
self.assertIn('AddTab(tabs, "运行设置")', form)
|
||||
self.assertIn("SizeMode = TabSizeMode.Fixed", form)
|
||||
self.assertIn("SizeMode = TabSizeMode.FillToRight", form)
|
||||
self.assertIn("new NavigationTabControl", form)
|
||||
self.assertIn("DrawMode = TabDrawMode.OwnerDrawFixed", form)
|
||||
self.assertIn("Appearance = TabAppearance.FlatButtons", form)
|
||||
self.assertIn("Math.Clamp(ClientSize.Width / TabCount, 96, 140)", form)
|
||||
self.assertNotIn("protected override void OnResize", form)
|
||||
self.assertIn("tab.Controls.Add(content)", form)
|
||||
self.assertIn("CreateSubsectionTitle(\"能力概览\")", form)
|
||||
self.assertIn("panel.SetColumnSpan(path, 2)", form)
|
||||
|
|
|
|||
|
|
@ -129,9 +129,8 @@ internal sealed class ConfigurationForm : Form
|
|||
Dock = DockStyle.Fill,
|
||||
Margin = new Padding(0),
|
||||
Font = new Font("Microsoft YaHei UI", 9, FontStyle.Bold),
|
||||
ItemSize = new Size(128, 38),
|
||||
Padding = new Point(14, 6),
|
||||
SizeMode = TabSizeMode.Fixed,
|
||||
SizeMode = TabSizeMode.FillToRight,
|
||||
};
|
||||
var overviewPage = AddTab(tabs, "节点概览");
|
||||
var softwarePage = AddTab(tabs, "专业软件");
|
||||
|
|
@ -1353,16 +1352,6 @@ internal sealed class ConfigurationForm : Form
|
|||
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
|
||||
}
|
||||
|
||||
protected override void OnResize(EventArgs eventArgs)
|
||||
{
|
||||
base.OnResize(eventArgs);
|
||||
if (TabCount == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ItemSize = new Size(Math.Clamp(ClientSize.Width / TabCount, 96, 140), 38);
|
||||
}
|
||||
|
||||
protected override void OnDrawItem(DrawItemEventArgs eventArgs)
|
||||
{
|
||||
var selected = eventArgs.Index == SelectedIndex;
|
||||
|
|
|
|||
Loading…
Reference in New Issue