L4: re-home dock-panel buttons into three zones

Top toolbar = capture+placement, bottom toolbar = Design-View verbs, footer = narrow Arrange|Design toggle + count + Tail button + set-apart Prune. New pure footer_bar module; Tail is now a real kit button.
This commit is contained in:
2026-07-26 22:42:56 -04:00
parent 7dd9de14df
commit 8f4a84ac79
7 changed files with 817 additions and 278 deletions
+21 -1
View File
@@ -370,6 +370,21 @@ target_include_directories(component_geometry PUBLIC src)
add_library(action_bar STATIC src/action_bar.cpp)
target_include_directories(action_bar PUBLIC src)
# ---------------------------------------------------------------------------
# 2p) Pure footer_bar layout — NO REAPER, NO SWELL, NO LICE. The Phase L (L4)
# dock-panel button-layout enhancement's footer LEFT group: the narrowed
# [Arrange|Design] mode toggle, its compact per-mode count label, and the Tail
# button, laid out left-to-right with greedy right-reserve suppression (the RIGHT
# Prune button stays owned by prune_button). Point -> Toggle/Tail/None hit-test.
# Split out so the footer's new multi-affordance row math is unit-tested outside
# the DAW; the bank_panel L1-kit draw + tail-cycle/mode-activate dispatch are
# DAW-verified. Reuses prune_button's FooterRect input type. Mirror of action_bar /
# mode_switch / prune_button.
# ---------------------------------------------------------------------------
add_library(footer_bar STATIC src/footer_bar.cpp)
target_include_directories(footer_bar PUBLIC src)
target_link_libraries(footer_bar PUBLIC prune_button)
# ---------------------------------------------------------------------------
# 3) Standalone tests for the pure modules (run without launching REAPER).
# ---------------------------------------------------------------------------
@@ -484,6 +499,10 @@ add_executable(action_bar_tests tests/test_action_bar.cpp)
target_link_libraries(action_bar_tests PRIVATE action_bar)
add_test(NAME action_bar_tests COMMAND action_bar_tests)
add_executable(footer_bar_tests tests/test_footer_bar.cpp)
target_link_libraries(footer_bar_tests PRIVATE footer_bar)
add_test(NAME footer_bar_tests COMMAND footer_bar_tests)
# ---------------------------------------------------------------------------
# 4) The REAPER extension — a loadable module (dlopen'd by REAPER, not linked).
# ---------------------------------------------------------------------------
@@ -528,8 +547,9 @@ add_library(reaper_reasampler MODULE
src/owned_manifest.cpp
src/drag_out_win.cpp
src/action_bar.cpp
src/footer_bar.cpp
)
target_link_libraries(reaper_reasampler PRIVATE bank_model capture_paths peaks bank_grid mode_switch tab_strip view_mode_model insert_plan render_settings batch_capture tail_control realtime_record bank_book wav_trim owned_manifest prune_reconcile prune_button app_version provenance action_buttons drag_out theme component_geometry action_bar)
target_link_libraries(reaper_reasampler PRIVATE bank_model capture_paths peaks bank_grid mode_switch tab_strip view_mode_model insert_plan render_settings batch_capture tail_control realtime_record bank_book wav_trim owned_manifest prune_reconcile prune_button app_version provenance action_buttons drag_out theme component_geometry action_bar footer_bar)
target_include_directories(reaper_reasampler PRIVATE ${SDK_INC} ${WDL_INC})
# OUTPUT_NAME is channel-derived (Phase V, V4): "reaper_reasampler" (stable, default) or
# "reaper_reasampler_beta" (beta). REAPER dlopen's any reaper_* module, so both channels'