Move app open routing into document helper

This commit is contained in:
2026-06-16 23:37:55 +02:00
parent 6b337b2d87
commit 42bae9db16
5 changed files with 67 additions and 19 deletions

View File

@@ -84,11 +84,11 @@ Current hotspot files:
- `src/canvas_modes.cpp`: 176 lines
- `src/node.cpp`: 222 lines
- `src/main.cpp`: 130 lines
- `src/node_panel_brush.cpp`: 189 lines
- `src/node_panel_brush.cpp`: 186 lines
- `src/node_stroke_preview.cpp`: 192 lines
- `src/node_canvas.cpp`: 69 lines
- `src/app.cpp`: 113 lines
- `src/app_dialogs.cpp`: 168 lines
- `src/app.cpp`: 105 lines
- `src/app_dialogs.cpp`: 106 lines
Latest slice:
@@ -96,10 +96,21 @@ Latest slice:
`handle_legacy_node_canvas_event(...)` in
`src/legacy_canvas_tool_services.*`, leaving `src/node_canvas.cpp` as a much
thinner controller shell.
- `App::open_document()` now routes through
`src/legacy_document_open_services.cpp`, which moved the document route
classification and unsaved-project gating out of `src/app.cpp` and into the
retained document-open helper.
- `App::dialog_layer_rename()` now routes through
`open_legacy_document_layer_rename_dialog(...)` in
`src/legacy_document_layer_services.*`, which moved the remaining
overlay-open/wire/close workflow out of `src/app_dialogs.cpp`.
- The remaining low-level `NodeStrokePreview` viewport/query and texture-slot
plumbing now lives in
`src/legacy_node_stroke_preview_runtime_services.*` instead of staying
inline in `src/node_stroke_preview.cpp`.
- `NodePanelBrushPreset` global panel registration now lives in
`src/legacy_brush_preset_list_services.*` instead of staying on the live
node type as a static registry field.
- The remaining generic `Node` geometry/state pocket for `SetSize(...)`,
`SetMinSize(...)`, `SetMaxSize(...)`, and `SetPosition(const glm::vec2)` now
lives in `src/legacy_ui_node_style.*` instead of staying inline in
@@ -185,8 +196,9 @@ Current architecture mismatches that must be treated as real blockers:
lives in
`src/app_dialogs_export.cpp` and those `App::dialog_*` entrypoints are
thinner too, while new/open/save/browse/resize workflow entrypoints now also
live in `src/app_dialogs_workflow.cpp` and `src/app_dialogs.cpp` is now
mostly a thin dialog dispatch surface.
live in `src/app_dialogs_workflow.cpp`, while the layer-rename dialog open /
wire / close pocket now lives in `src/legacy_document_layer_services.*`, and
`src/app_dialogs.cpp` is now a thinner dialog dispatch surface.
- `App`, `Canvas`, `Node`, retained workers, and platform entrypoints still use
global singleton reach, raw observer pointers, retained static worker
ownership in several app families, and ad hoc mutex/condition-variable
@@ -355,7 +367,11 @@ Current architecture mismatches that must be treated as real blockers:
`src/legacy_brush_preset_panel_ui.*`
instead of staying inline in `src/node_panel_brush.cpp`, which removes the
last inline brush-panel popup close handler from the live node. The
broader preset workflow pocket still remains, while `NodeCanvas::handle_event()`
`NodePanelBrushPreset` registration/lifecycle pocket now also routes through
the preset-list helper registry instead of a node-local static vector,
which removes the remaining live preset-panel ownership glue from
`src/node_panel_brush.cpp`. The broader preset workflow pocket still remains,
while `NodeCanvas::handle_event()`
now also routes
through `execute_node_canvas_handle_event(...)`, which trims another coherent
input-routing block from `src/node_canvas.cpp` even though the file is still