Context
Both backends have nearly identical wrapper functions for rendering the tab bar and breadcrumb bar:
Tab bar (~35 lines TUI, ~40 lines GTK):
- Call
render::build_tab_bar_primitive()
- Compute bounds
- Call
quadraui::draw_tab_bar()
- Handle diff toolbar buttons
Breadcrumb bar (~22 lines TUI, ~40 lines GTK):
- Call
render::breadcrumbs_to_quadraui_status_bar()
- Compute bounds
- Call
quadraui::draw_status_bar()
The only backend-specific parts are coordinate conversion and measurement.
What to do
Investigate whether a thin shared dispatcher in render.rs (or a trait method) can eliminate the duplicated call sequences. The wrappers are small enough that the win is more about consistency than line count.
Current locations
- TUI:
src/tui_main/render_impl.rs:1638-1701
- GTK:
src/gtk/draw.rs:1025-1164
Priority
Low — small wrappers, minimal bug risk, but contributes to the "one place to change" goal.
Context
Both backends have nearly identical wrapper functions for rendering the tab bar and breadcrumb bar:
Tab bar (~35 lines TUI, ~40 lines GTK):
render::build_tab_bar_primitive()quadraui::draw_tab_bar()Breadcrumb bar (~22 lines TUI, ~40 lines GTK):
render::breadcrumbs_to_quadraui_status_bar()quadraui::draw_status_bar()The only backend-specific parts are coordinate conversion and measurement.
What to do
Investigate whether a thin shared dispatcher in render.rs (or a trait method) can eliminate the duplicated call sequences. The wrappers are small enough that the win is more about consistency than line count.
Current locations
src/tui_main/render_impl.rs:1638-1701src/gtk/draw.rs:1025-1164Priority
Low — small wrappers, minimal bug risk, but contributes to the "one place to change" goal.