aboutsummaryrefslogtreecommitdiffstats
path: root/experiments/bench_ops.py
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-08-09 23:16:54 +0200
committerblasty <blasty@local>2026-08-09 23:16:54 +0200
commit0717de70acb7ff9d2b57044853b68a921a73b2a6 (patch)
treeda498d8a594c932611f32c4c24c77d6a79e43e05 /experiments/bench_ops.py
parentREADME: drop the Docs section (diff)
downloadida-tui-0717de70acb7ff9d2b57044853b68a921a73b2a6.tar.gz
ida-tui-0717de70acb7ff9d2b57044853b68a921a73b2a6.tar.xz
ida-tui-0717de70acb7ff9d2b57044853b68a921a73b2a6.zip
PgUp/PgDn page the list overlays, not just the code views
The help screen has always advertised 'PgDn / PgUp - page down / up', but only the four code views implemented it. In the palettes the keys did nothing at all: those screens focus a filter Input, so the OptionList's own pageup/pagedown bindings never fire -- every key goes to the Input, and an unhandled one is silently dropped. Adds OptionListNav, a mixin carrying the forwarding actions, and puts the six Input+OptionList overlays on it: symbols, search, strings, registers, load options, projects. They already held six BYTE-IDENTICAL copies of action_cursor_down/up, so this removes more than it adds. Paging delegates to the widget's own action_page_up/down instead of moving by a guessed N: those know the live viewport height, skip disabled options and clamp at both ends -- and it keeps the forwarded panes behaving exactly like the ones that page natively. Two panes deliberately stay off the mixin: * XrefsScreen focuses its list, so Textual already pages it. Now covered by a test so nobody 'fixes' it into double-stepping. * StructEditor binds ctrl+n to 'new type', so it cannot take NAV_BINDINGS; it gets page actions through its existing filter-focused guard instead. BINDINGS do not merge from a plain mixin (Textual only merges them from DOMNode subclasses), so every screen splats *NAV_BINDINGS explicitly -- the same trap SearchMixin documents. Tests gate on scrollable_content_region.height >= 1 first: paging is geometry, and before layout the page size is 0, so every check would pass against a no-op. Verified by removing the bindings again -- 3 checks fail with highlighted=0, which is the exact silent failure being fixed. Full gate: 1040 passed, 0 failed.
Diffstat (limited to 'experiments/bench_ops.py')
0 files changed, 0 insertions, 0 deletions