Extract layout bootstrap and thin NodeCanvas startup shells

This commit is contained in:
2026-06-16 17:57:17 +02:00
parent 0441dc4077
commit 1442c13dd7
10 changed files with 595 additions and 458 deletions

View File

@@ -80,13 +80,13 @@ What is still carrying too much live ownership:
Current hotspot files:
- `src/canvas.cpp`: 2645 lines
- `src/app_layout.cpp`: 229 lines
- `src/app_layout.cpp`: 125 lines
- `src/canvas_modes.cpp`: 1798 lines
- `src/node.cpp`: 1594 lines
- `src/main.cpp`: 390 lines
- `src/main.cpp`: 271 lines
- `src/node_panel_brush.cpp`: 1197 lines
- `src/node_stroke_preview.cpp`: 890 lines
- `src/node_canvas.cpp`: 831 lines
- `src/node_canvas.cpp`: 852 lines
- `src/app.cpp`: 502 lines
- `src/app_dialogs.cpp`: 142 lines
@@ -135,7 +135,14 @@ Current architecture mismatches that must be treated as real blockers:
`execute_legacy_canvas_draw_unmerged_node_canvas_shell(...)`, while the
broader unmerged cache/viewport/background/composite pass setup now also
routes through
`execute_legacy_canvas_draw_unmerged_node_canvas_pass(...)`.
`execute_legacy_canvas_draw_unmerged_node_canvas_pass(...)`, while
`NodeCanvas::draw()` setup, merged-pass shell, and unmerged-pass shell now
also route through `prepare_legacy_node_canvas_draw_setup(...)`,
`execute_legacy_canvas_draw_node_canvas_shell(...)`,
`execute_legacy_canvas_draw_merged_pass(...)`, and
`execute_legacy_canvas_draw_node_canvas_unmerged_pass(...)`, which
materially shortens the live `NodeCanvas::draw()` body even though the file
itself is still large.
- `app_layout.cpp` and `app_dialogs.cpp` are still mixed shell/controller files
rather than thin composition/binding surfaces, even though tools-menu binding
plus nested panels/options submenu wiring now live in
@@ -154,8 +161,9 @@ Current architecture mismatches that must be treated as real blockers:
persisted floating/docked panel-state ownership now also live in
`src/app_layout_ui_state.cpp`, while draw-toolbar binding now also lives in
`src/app_layout_draw_toolbar.cpp`, while brush-refresh now also lives in
`src/app_layout_brush.cpp`, and `src/app_layout.cpp` is now mostly
layout/bootstrap composition, while the
`src/app_layout_brush.cpp`, while layout bootstrap plus reload/load
continuation wiring now also lives in `src/app_layout_bootstrap.cpp`, and
`src/app_layout.cpp` is now mostly thin call-through entrypoints, while the
informational overlay opener family now also lives in
`src/app_dialogs_info_openers.cpp` and the corresponding `App::dialog_*`
entrypoints are thinner, while the export/video/PPBR dialog family now also
@@ -193,8 +201,9 @@ Current architecture mismatches that must be treated as real blockers:
while the retained Win32 VR/HMD shell now also routes through
`src/platform_windows/windows_vr_shell.h` instead of staying inline in
`src/main.cpp`, while RenderDoc startup/frame capture, SHCore DPI bootstrap,
Win32 error-string conversion, and the GL debug pre/post callbacks now also
live in `src/platform_windows/windows_bootstrap_helpers.cpp` instead of
Win32 error-string conversion, the GL debug pre/post callbacks, and the WMI
startup probe now also live in
`src/platform_windows/windows_bootstrap_helpers.cpp` instead of
`src/main.cpp`, while Win32 lifecycle running-state, close/shutdown
sequencing, FPS title update/wakeup posting, stylus frame update, window
preference save, and VR lifecycle wrappers now also live in

View File

@@ -235,6 +235,13 @@ Current slice:
`execute_legacy_canvas_draw_unmerged_node_canvas_pass(...)`, which removes
another coherent outer-shell block even though the broader node draw loop
still lives in `src/node_canvas.cpp`.
- `NodeCanvas::draw()` setup, merged-pass shell, and unmerged-pass shell now
also route through `prepare_legacy_node_canvas_draw_setup(...)`,
`execute_legacy_canvas_draw_node_canvas_shell(...)`,
`execute_legacy_canvas_draw_merged_pass(...)`, and
`execute_legacy_canvas_draw_node_canvas_unmerged_pass(...)`, which
materially shortens the live `NodeCanvas::draw()` body even though the file
itself is still large.
Write scope:
- `src/node_stroke_preview.cpp`
@@ -313,7 +320,7 @@ targets look like helpers under one old monolith.
Status: In Progress
Why now:
`src/app_layout.cpp` is still a 229-line mixed file that builds menus,
`src/app_layout.cpp` is still a 125-line mixed file that builds menus,
attaches callbacks, computes planner inputs, and mutates UI state directly.
Current slice:
@@ -348,6 +355,9 @@ Current slice:
layout/bootstrap composition.
- Brush-refresh now also lives in `src/app_layout_brush.cpp`, and
`src/app_layout.cpp` is down to the remaining layout/bootstrap composition.
- Layout bootstrap plus reload/load continuation wiring now also lives in
`src/app_layout_bootstrap.cpp`, and `src/app_layout.cpp` is down to thin
call-through entrypoints plus the remaining local helper pocket.
Write scope:
- `src/app_layout.cpp`
@@ -505,6 +515,9 @@ Current slice:
conversion, `UnadjustWindowRectEx`, and GL debug pre/post callbacks now also
live in `src/platform_windows/windows_bootstrap_helpers.cpp` instead of
`src/main.cpp`
- the WMI startup probe now also lives in
`src/platform_windows/windows_bootstrap_helpers.cpp` instead of
`src/main.cpp`
- Win32 lifecycle running-state, close/shutdown handling, FPS title update and
wakeup posting, stylus frame update, window preference save, and VR
lifecycle wrappers now also live in