Problem
src/render.rs:456-1025 (570 lines) is compute_tab_bar_hit_regions, plus tab_bar_hit_bands at :20309 (89 lines). Its own doc at :574-580 states its lifespan:
"Until TUI / GTK / Win-GUI migrate to consume TabBarLayout directly, this shim is the bridge."
Win-GUI was deleted on 2026-05-11 (3e4bcff). The migration never happened. The shim is now permanent scaffolding for a condition that can no longer be met.
Separately, quadraui ships compose/tab_group.rs — TabGroupController (3,130 lines: drag, drop zones, split). vimcode references it once, and that reference is a stale doc comment at src/render.rs:9427 claiming drag is "Handled by TabGroupController" while the code actually uses vimcode's own render::TabDragState.
vimcode's parallel implementation:
src/render.rs:4873-5012 — TabDragState (~140 lines)
src/render.rs:21121-21442 — tab drop-zone (~322 lines)
History: #515 deferred full TabGroupController adoption "see quadraui#395". quadraui#395 closed the same day and no follow-up issue was ever filed — this issue is that follow-up.
Fix
- Migrate both backends to consume
TabBarLayout directly; delete compute_tab_bar_hit_regions and tab_bar_hit_bands (~659 lines).
- Adopt
TabGroupController for tab drag and drop zones; delete TabDragState and the local drop-zone code (~460 lines).
- Fix or delete the false doc comment at
src/render.rs:9427.
Ordering: the GTK tab-bar click issue earlier in this chain touches src/gtk/click.rs:434-608. Land that first; this issue assumes it has.
Acceptance
- Black-box tests required, both backends: tab click, tab close button, tab drag-to-reorder, drag-to-split drop zones.
- Per
feedback_cache_paint_layout, hit-testing must read what paint produced — never re-derive layout in the click handler.
- State in the PR that the new tests fail against unfixed
develop.
Problem
src/render.rs:456-1025(570 lines) iscompute_tab_bar_hit_regions, plustab_bar_hit_bandsat:20309(89 lines). Its own doc at:574-580states its lifespan:Win-GUI was deleted on 2026-05-11 (
3e4bcff). The migration never happened. The shim is now permanent scaffolding for a condition that can no longer be met.Separately, quadraui ships
compose/tab_group.rs—TabGroupController(3,130 lines: drag, drop zones, split). vimcode references it once, and that reference is a stale doc comment atsrc/render.rs:9427claiming drag is "Handled by TabGroupController" while the code actually uses vimcode's ownrender::TabDragState.vimcode's parallel implementation:
src/render.rs:4873-5012—TabDragState(~140 lines)src/render.rs:21121-21442— tab drop-zone (~322 lines)History: #515 deferred full
TabGroupControlleradoption "see quadraui#395". quadraui#395 closed the same day and no follow-up issue was ever filed — this issue is that follow-up.Fix
TabBarLayoutdirectly; deletecompute_tab_bar_hit_regionsandtab_bar_hit_bands(~659 lines).TabGroupControllerfor tab drag and drop zones; deleteTabDragStateand the local drop-zone code (~460 lines).src/render.rs:9427.Ordering: the GTK tab-bar click issue earlier in this chain touches
src/gtk/click.rs:434-608. Land that first; this issue assumes it has.Acceptance
feedback_cache_paint_layout, hit-testing must read what paint produced — never re-derive layout in the click handler.develop.