Extract dialog workflow, bootstrap, and canvas tail helpers

This commit is contained in:
2026-06-16 12:09:53 +02:00
parent 01854f9b10
commit 3407daff08
8 changed files with 586 additions and 534 deletions

View File

@@ -83,12 +83,12 @@ Current hotspot files:
- `src/app_layout.cpp`: 1249 lines
- `src/canvas_modes.cpp`: 1798 lines
- `src/node.cpp`: 1551 lines
- `src/main.cpp`: 1117 lines
- `src/main.cpp`: 909 lines
- `src/node_panel_brush.cpp`: 1197 lines
- `src/node_stroke_preview.cpp`: 933 lines
- `src/node_canvas.cpp`: 897 lines
- `src/node_canvas.cpp`: 905 lines
- `src/app.cpp`: 502 lines
- `src/app_dialogs.cpp`: 441 lines
- `src/app_dialogs.cpp`: 142 lines
Current architecture mismatches that must be treated as real blockers:
@@ -128,7 +128,8 @@ Current architecture mismatches that must be treated as real blockers:
per-layer GL setup now also routes through
`make_legacy_canvas_draw_merge_layer_path_gl_execution(...)` even though the
remaining draw lambdas and broader node draw loop still live in
`src/node_canvas.cpp`.
`src/node_canvas.cpp`, where the post-draw/display-resolve tail now also
routes through `execute_node_canvas_draw_merge_tail(...)`.
- `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
@@ -142,7 +143,9 @@ Current architecture mismatches that must be treated as real blockers:
and the corresponding `App::dialog_*` entrypoints are thinner, while the
export/video/PPBR dialog family now also lives in
`src/app_dialogs_export.cpp` and those `App::dialog_*` entrypoints are
thinner too.
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.
- `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
@@ -171,6 +174,9 @@ Current architecture mismatches that must be treated as real blockers:
in `src/platform_windows/windows_stylus_input.cpp` instead of `src/main.cpp`,
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
`src/main.cpp`,
while `App::rec_loop()` now delegates worker-iteration orchestration into
the retained recording bridge, `App::update_rec_frames()` now delegates

View File

@@ -205,6 +205,11 @@ Current slice:
`make_node_canvas_layer_path_execution(...)` helper, which materially thins
`NodeCanvas::draw()` even though the broader draw loop still lives in
`src/node_canvas.cpp`.
- `NodeCanvas` post-draw callback assembly, smoothing-mask face execution, and
optional display resolve now also route through
`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.
Write scope:
- `src/node_stroke_preview.cpp`
@@ -343,6 +348,9 @@ Current slice:
`src/app_dialogs_export.cpp`, and the corresponding `App::dialog_*`
entrypoints are now thin call-throughs, but new/open/save/browse/resize and
retained dialog execution are still inline in `src/app_dialogs.cpp`.
- New/open/save/browse/resize workflow entrypoints now also live in
`src/app_dialogs_workflow.cpp`, and `src/app_dialogs.cpp` is down to the
remaining thin entrypoints plus layer-rename retained dialog glue.
Write scope:
- `src/app_dialogs.cpp`
@@ -448,6 +456,10 @@ Current slice:
state, now routes through `src/platform_windows/windows_vr_shell.h` instead
of staying inline in `src/main.cpp`, but broader retained Win32 shell state
is still open
- RenderDoc startup/frame capture, SHCore DPI bootstrap, Win32 error-string
conversion, `UnadjustWindowRectEx`, and GL debug pre/post callbacks now also
live in `src/platform_windows/windows_bootstrap_helpers.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