You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replace src/gtk/draw.rs surface-by-surface delegation (~3,874 lines) with quadraui's declarative ScreenLayout::draw() + FrameHitMap. Today each surface is individually positioned, measured, and drawn via a separate call; the new path pushes Surface entries in z-order and calls .draw(backend) once.
Summary
Replace
src/gtk/draw.rssurface-by-surface delegation (~3,874 lines) with quadraui's declarativeScreenLayout::draw()+FrameHitMap. Today each surface is individually positioned, measured, and drawn via a separate call; the new path pushesSurfaceentries in z-order and calls.draw(backend)once.What exists in quadraui
quadraui::ScreenLayout— pushSurfaceentries (Editor, TabBar, StatusBar, Palette, ContextMenu, etc.) in back-to-front z-orderScreenLayout::draw(&self, backend: &mut dyn Backend) -> FrameHitMap— renders all surfaces, returns hit mapFrameHitMap::hit_test(x, y) -> FrameZone— highest-z zone at point (consumed by fix: dedupe terminal pane focus + selection into engine method (#429) #445)gtk_frame_demo/tui_frame_demoexamplesWhat to do
quadraui::ScreenLayoutin vimcode's GTK draw path, pushing each surface with its rect.draw(backend)instead of individualdraw_*callsFrameHitMapfor click dispatch (fix: dedupe terminal pane focus + selection into engine method (#429) #445)src/gtk/draw.rsFiles
src/gtk/draw.rs— bulk of the deletion (~3,874 lines → near-zero)src/render.rs— may need to produceSurfaceentries instead of / alongside currentScreenLayoutstructDependencies
Notes
vimcode has its own
render::ScreenLayoutstruct — naming collision withquadraui::ScreenLayout. Will need a qualified import or rename.This is issue 1 of 4 in the GTK AppShell consumption series. Should land before #445 (click dispatch migration).