Extract edit menu and Windows/bootstrap preview seams

This commit is contained in:
2026-06-16 12:53:49 +02:00
parent 184f662493
commit cb9d06c6dc
12 changed files with 493 additions and 409 deletions

View File

@@ -80,12 +80,12 @@ What is still carrying too much live ownership:
Current hotspot files:
- `src/canvas.cpp`: 2645 lines
- `src/app_layout.cpp`: 743 lines
- `src/app_layout.cpp`: 717 lines
- `src/canvas_modes.cpp`: 1798 lines
- `src/node.cpp`: 1594 lines
- `src/main.cpp`: 1098 lines
- `src/main.cpp`: 847 lines
- `src/node_panel_brush.cpp`: 1197 lines
- `src/node_stroke_preview.cpp`: 933 lines
- `src/node_stroke_preview.cpp`: 948 lines
- `src/node_canvas.cpp`: 910 lines
- `src/app.cpp`: 502 lines
- `src/app_dialogs.cpp`: 142 lines
@@ -142,7 +142,9 @@ Current architecture mismatches that must be treated as real blockers:
binding and popup wiring now also live in `src/app_layout_sidebar.cpp` and
`App::init_sidebar()` is now a thin call-through, while main-toolbar binding
now also lives in `src/app_layout_main_toolbar.cpp` and
`App::init_toolbar_main()` is now a thin call-through, while the
`App::init_toolbar_main()` is now a thin call-through, while edit-menu
binding now also lives in `src/app_layout_edit_menu.cpp` and
`App::init_menu_edit()` 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
@@ -186,12 +188,12 @@ Current architecture mismatches that must be treated as real blockers:
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 the Win32 startup/window/bootstrap path in `src/main.cpp` now also
routes through named local helper functions for runtime-data discovery,
startup-state initialization, window creation, pixel-format setup, GL loader
init, runtime-info logging, and core-context upgrade sequencing even though
that state still needs to move into platform-owned modules for the file to
shrink materially,
while the Win32 startup/window/bootstrap path now also lives under
`src/platform_windows/windows_bootstrap_helpers.*` for runtime-data
discovery, startup-state initialization, window creation, pixel-format
setup, GL loader init, runtime-info logging, and core-context upgrade
sequencing, which materially thins `src/main.cpp` even though broader window
procedure and retained shell flow still remain there,
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
@@ -207,7 +209,10 @@ Current architecture mismatches that must be treated as real blockers:
document-IO cluster now lives in `src/legacy_canvas_document_io_services.cpp`
and `NodeStrokePreview` render-target setup plus immediate-pass sequencing
now route through retained preview execution helpers, even though the bridge
still owns worker-side readback flow and encoder-state label reads, while
still owns worker-side readback flow and encoder-state label reads, while the
main live-pass request assembly and framebuffer-copy setup now also route
through `src/legacy_node_stroke_preview_execution_services.h`, even though
broader preview-pass orchestration still lives in `src/node_stroke_preview.cpp`, while
`Node` child attach/detach/reorder operations now route through named local
helpers in `src/node.cpp`, which makes the scene-graph mutation paths easier
to reason about without yet reducing the file or moving ownership into

View File

@@ -148,6 +148,11 @@ Current slice:
target setup was removed from `render_to_image()` and the queued worker path,
but the preview node still owns broader live-pass state and thread-facing
orchestration.
- `NodeStrokePreview` main live-pass request assembly and preview framebuffer-
copy setup now also route through
`legacy_node_stroke_preview_execution_services.h`, which trims another
coherent pass-setup block from `src/node_stroke_preview.cpp`, but broader
preview-pass orchestration is still inline.
- `NodeCanvas` merged-path per-plane merged-texture draw execution now also
routes through `execute_legacy_canvas_draw_merge_layer_texture(...)`.
- `NodeCanvas` merged-path and non-blend checkerboard background setup now also
@@ -293,7 +298,7 @@ targets look like helpers under one old monolith.
Status: In Progress
Why now:
`src/app_layout.cpp` is still a 743-line mixed file that builds menus,
`src/app_layout.cpp` is still a 717-line mixed file that builds menus,
attaches callbacks, computes planner inputs, and mutates UI state directly.
Current slice:
@@ -316,6 +321,10 @@ Current slice:
- Main-toolbar binding now also lives in `src/app_layout_main_toolbar.cpp`,
and `App::init_toolbar_main()` is now a thin call-through, but edit-menu
wiring and broader layout composition are still inline in `src/app_layout.cpp`.
- Edit-menu binding now also lives in `src/app_layout_edit_menu.cpp`, and
`App::init_menu_edit()` is now a thin call-through, but draw-toolbar,
brush-refresh, and broader layout composition are still inline in
`src/app_layout.cpp`.
Write scope:
- `src/app_layout.cpp`
@@ -476,12 +485,12 @@ Current slice:
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`
- `main.cpp` startup/window/bootstrap flow now also routes through named local
helpers for runtime-data discovery, startup-state initialization, window
creation, pixel-format setup, GL loader init, runtime-info logging, and
core-context upgrade sequencing, but the retained Win32 shell still needs
those helpers moved into platform-owned modules before the file materially
shrinks
- Win32 startup/window/bootstrap flow now also lives in
`src/platform_windows/windows_bootstrap_helpers.*` for runtime-data
discovery, startup-state initialization, window creation, pixel-format
setup, GL loader init, runtime-info logging, and core-context upgrade
sequencing, which materially thins `src/main.cpp`, but the retained Win32
window procedure and broader shell flow are still open
- 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