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 handle_mouse_click_msg (~1,228 lines) and handle_mouse_drag_msg (~333 lines) with FrameHitMap::hit_test() for zone detection, then per-surface hit_test() methods for fine-grained resolution. Today vimcode manually computes pixel regions for every clickable surface; the new path gets zone identity from the cached FrameHitMap that ScreenLayout::draw() produces.
What exists in quadraui
FrameHitMap::hit_test(x, y) -> FrameZone — identifies which surface (Editor, TabBar, Palette, ContextMenu, etc.) contains the point
Per-surface hit-test methods already used by vimcode: CompletionsLayout::hit_test(), ContextMenuLayout::hit_test(), TerminalSplitLayout::hit_test(), EditorLayout::hit_test(), TabBarLayout::hit_test(), PaletteLayout::hit_test()
ShellContext::in_sidebar(x, y) / in_main(x, y) for panel zone detection
This is issue 4 of 4 in the GTK AppShell consumption series. Depends on #446. Much of the per-surface hit-test wiring already exists from the hit-test dedup sweep (Sessions 379-380); this issue consolidates the top-level zone detection layer.
Summary
Replace
handle_mouse_click_msg(~1,228 lines) andhandle_mouse_drag_msg(~333 lines) withFrameHitMap::hit_test()for zone detection, then per-surfacehit_test()methods for fine-grained resolution. Today vimcode manually computes pixel regions for every clickable surface; the new path gets zone identity from the cached FrameHitMap thatScreenLayout::draw()produces.What exists in quadraui
FrameHitMap::hit_test(x, y) -> FrameZone— identifies which surface (Editor, TabBar, Palette, ContextMenu, etc.) contains the pointCompletionsLayout::hit_test(),ContextMenuLayout::hit_test(),TerminalSplitLayout::hit_test(),EditorLayout::hit_test(),TabBarLayout::hit_test(),PaletteLayout::hit_test()ShellContext::in_sidebar(x, y)/in_main(x, y)for panel zone detectionWhat to do
FrameHitMapreturned byScreenLayout::draw()(Migrate GTK draw wiring to quadraui ScreenLayout::draw() #446)hit_map.hit_test(x, y)to get theFrameZoneFrameZonevariants to route to existing engine click handlershandle_mouse_click_msg(~1,228 lines)handle_mouse_drag_msg(~333 lines)Files
src/gtk/click.rs— simplify to FrameHitMap dispatchsrc/gtk/mod.rs— deletehandle_mouse_click_msg,handle_mouse_drag_msgDependencies
Notes
This is issue 4 of 4 in the GTK AppShell consumption series. Depends on #446. Much of the per-surface hit-test wiring already exists from the hit-test dedup sweep (Sessions 379-380); this issue consolidates the top-level zone detection layer.