Extract sidebar, lifecycle shell, and canvas unmerged draw

This commit is contained in:
2026-06-16 12:23:27 +02:00
parent 3407daff08
commit acd34540e0
10 changed files with 720 additions and 530 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`: 1249 lines
- `src/app_layout.cpp`: 785 lines
- `src/canvas_modes.cpp`: 1798 lines
- `src/node.cpp`: 1551 lines
- `src/main.cpp`: 909 lines
- `src/main.cpp`: 882 lines
- `src/node_panel_brush.cpp`: 1197 lines
- `src/node_stroke_preview.cpp`: 933 lines
- `src/node_canvas.cpp`: 905 lines
- `src/node_canvas.cpp`: 910 lines
- `src/app.cpp`: 502 lines
- `src/app_dialogs.cpp`: 142 lines
@@ -138,7 +138,9 @@ Current architecture mismatches that must be treated as real blockers:
live in `src/app_layout_file_menu.cpp` and `App::init_menu_file()` is now a
thin call-through, while about-menu and layer-menu wiring now also live in
`src/app_layout_about_layer_menu.cpp` and `App::init_menu_about()` plus
`App::init_menu_layer()` are now thin call-throughs, while the informational
`App::init_menu_layer()` are now thin call-throughs, while sidebar panel
binding and popup wiring now also live in `src/app_layout_sidebar.cpp` and
`App::init_sidebar()` is now a thin call-through, 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 lives in
@@ -177,7 +179,10 @@ Current architecture mismatches that must be treated as real blockers:
`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
`src/main.cpp`,
`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
`src/platform_windows/windows_lifecycle_shell.cpp` instead of `src/main.cpp`,
while `App::rec_loop()` now delegates worker-iteration orchestration into
the retained recording bridge, `App::update_rec_frames()` now delegates
recording label refresh through that same retained recording path, and the

View File

@@ -210,6 +210,11 @@ Current slice:
`execute_node_canvas_draw_merge_tail(...)`, which trims another live tail
block from `NodeCanvas::draw()` even though the broader outer draw shell is
still inline.
- `NodeCanvas` non-`draw_merged` cache/background/layer-traversal/cache-
composite shell now also routes through
`execute_legacy_canvas_draw_unmerged_shell(...)`, which removes another
coherent orchestration block from `NodeCanvas::draw()` even though the
broader node draw loop still lives in `src/node_canvas.cpp`.
Write scope:
- `src/node_stroke_preview.cpp`
@@ -304,6 +309,10 @@ Current slice:
`src/app_layout_about_layer_menu.cpp`, and `App::init_menu_about()` plus
`App::init_menu_layer()` are now thin call-throughs, but edit/sidebar and
broader layout composition are still inline in `src/app_layout.cpp`.
- Sidebar panel binding plus popup wiring now also live in
`src/app_layout_sidebar.cpp`, and `App::init_sidebar()` is now a thin
call-through, but edit-menu wiring and broader layout composition are still
inline in `src/app_layout.cpp`.
Write scope:
- `src/app_layout.cpp`
@@ -460,6 +469,10 @@ 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`
- 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
`src/platform_windows/windows_lifecycle_shell.cpp` instead of `src/main.cpp`
- prepared-file background work now runs through an `AppRuntime`-owned worker
queue instead of a retained static worker in `src/app_events.cpp`
- canvas async import/export/save/open background work now also runs through an