Problem
GTK backend uses native gtk4::PopoverMenu for explorer, tab, and editor right-click context menus instead of the quadraui ContextMenu primitive. This means:
- ~200 lines of GTK-specific GIO action wiring in
src/gtk/mod.rs (show_explorer_context_menu, handle_tab_right_click, show_action_menu_popover)
engine.handle_context_menu_key() is dead code on GTK — j/k nav and disabled-item skipping don't work
- Cross-backend coverage table claims ContextMenu ✅/✅ but explorer/tab menus are actually native popovers
TUI already uses the engine ContextMenuState → quadraui ContextMenu path with full keyboard nav.
Current GTK flow
- Right-click →
engine.open_*_context_menu() to build items
- Clone items, immediately
engine.close_context_menu()
- Build native
PopoverMenu with GIO SimpleAction wiring
- Native popover handles keyboard/mouse
Target flow
- Right-click →
engine.open_*_context_menu() (same)
- GTK renders via quadraui
ContextMenu primitive (quadraui GTK rasteriser already exists)
- Keyboard via
engine.handle_context_menu_key() (same as TUI)
Files to change
src/gtk/mod.rs: remove show_explorer_context_menu (~100 lines), handle_tab_right_click (~80 lines), native popover wiring; render engine's context_menu through quadraui primitive instead
src/gtk/mod.rs: remove build_gio_menu_from_engine_items helper if it becomes unused
Context
Discovered during backend dedup audit (Session 373, #379). Quadraui confirms the GTK ContextMenu rasteriser is fully implemented (quadraui#175).
Problem
GTK backend uses native
gtk4::PopoverMenufor explorer, tab, and editor right-click context menus instead of the quadrauiContextMenuprimitive. This means:src/gtk/mod.rs(show_explorer_context_menu,handle_tab_right_click,show_action_menu_popover)engine.handle_context_menu_key()is dead code on GTK — j/k nav and disabled-item skipping don't workTUI already uses the engine
ContextMenuState→ quadrauiContextMenupath with full keyboard nav.Current GTK flow
engine.open_*_context_menu()to build itemsengine.close_context_menu()PopoverMenuwith GIOSimpleActionwiringTarget flow
engine.open_*_context_menu()(same)ContextMenuprimitive (quadraui GTK rasteriser already exists)engine.handle_context_menu_key()(same as TUI)Files to change
src/gtk/mod.rs: removeshow_explorer_context_menu(~100 lines),handle_tab_right_click(~80 lines), native popover wiring; render engine'scontext_menuthrough quadraui primitive insteadsrc/gtk/mod.rs: removebuild_gio_menu_from_engine_itemshelper if it becomes unusedContext
Discovered during backend dedup audit (Session 373, #379). Quadraui confirms the GTK ContextMenu rasteriser is fully implemented (quadraui#175).