Problem to solve / 要解决的问题
由于现在很多窗口都是固定死的,但实际上在 IDEA 里面,可以将对应的窗口上下左右移动,而且还支持并排动态


Proposed solution / 建议方案
面板 resize 已经存在,sidebar 宽度、上下 Pane 的高度也有状态和持久化。需要从“固定 Split View”升级到“动态 Layout Tree”。
核心上不是修改 frame,而是维护一棵 Layout Tree。叶子节点表示具体 Pane,中间节点表示水平或垂直 Split,并保存 split ratio。用户拖动 Tool Window 时进行 drop-zone hit testing,确定目标节点和停靠方向,然后对布局树进行插入、删除和重组,由 SwiftUI 根据新的树重新构建界面。
技术点主要是Drag & Drop + Hit Testing + Layout Tree + Split Layout + State Persistence。
Target platform / 目标平台
macOS
Area / 模块
Editor / 编辑器
Priority / 优先级
P0 / 立即处理:已严重影响使用体验,核心流程受阻或无法正常使用
Alternatives considered / 已考虑的替代方案
No response
Additional context / 补充信息
No response
Checklist / 提交前检查
Problem to solve / 要解决的问题
由于现在很多窗口都是固定死的,但实际上在 IDEA 里面,可以将对应的窗口上下左右移动,而且还支持并排动态


Proposed solution / 建议方案
面板 resize 已经存在,sidebar 宽度、上下 Pane 的高度也有状态和持久化。需要从“固定 Split View”升级到“动态 Layout Tree”。
核心上不是修改 frame,而是维护一棵 Layout Tree。叶子节点表示具体 Pane,中间节点表示水平或垂直 Split,并保存 split ratio。用户拖动 Tool Window 时进行 drop-zone hit testing,确定目标节点和停靠方向,然后对布局树进行插入、删除和重组,由 SwiftUI 根据新的树重新构建界面。
技术点主要是Drag & Drop + Hit Testing + Layout Tree + Split Layout + State Persistence。
Target platform / 目标平台
macOS
Area / 模块
Editor / 编辑器
Priority / 优先级
P0 / 立即处理:已严重影响使用体验,核心流程受阻或无法正常使用
Alternatives considered / 已考虑的替代方案
No response
Additional context / 补充信息
No response
Checklist / 提交前检查