diff options
| author | blasty <blasty@local> | 2026-07-24 15:48:19 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-07-24 15:48:19 +0200 |
| commit | 4975a92c338819b43cb6647d7bbb9197c5772f32 (patch) | |
| tree | d36a08551940cc25643bab5867d741e1862e8007 /tests | |
| parent | hex: click to place the byte cursor (hex + ascii panes) (diff) | |
| download | ida-tui-4975a92c338819b43cb6647d7bbb9197c5772f32.tar.gz ida-tui-4975a92c338819b43cb6647d7bbb9197c5772f32.tar.xz ida-tui-4975a92c338819b43cb6647d7bbb9197c5772f32.zip | |
hex: cursor follows the scroll (stays visible on wheel/scrollbar)
Override watch_scroll_y so a viewport scroll drags the byte cursor along: when
the rounded scroll changes, clamp the cursor's row into the visible range
[top, top+height) keeping its column, so it rides the nearest edge instead of
being left off-screen. No feedback loop -- key-nav's _scroll_to_cursor already
puts the cursor in view (clamp is then a no-op), and HexView.Moved only updates
the status line. Pairs with the click-to-place support.
Pilot `hex` scenario updated: after a scroll the cursor must now be within the
visible rows (was: asserted it stayed put). 9/9 hex checks pass.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_scenarios.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/tests/test_scenarios.py b/tests/test_scenarios.py index 92c6315..4731a16 100644 --- a/tests/test_scenarios.py +++ b/tests/test_scenarios.py @@ -511,12 +511,13 @@ async def s_hex(c: Ctx): await c.type(hex(rng[0])) await c.press("enter") await c.wait(lambda: hx.cursor_va() == rng[0], 10) - hx.scroll_to(y=40, animate=False) # wheel-style scroll: viewport only + hx.scroll_to(y=40, animate=False) # wheel-style scroll await c.pause(0.15) top = round(hx.scroll_offset.y) - c.check("hex viewport scrolls without dragging the cursor along", - top >= 20 and (hx.cursor // 16) < top, - f"top={top} cursor_row={hx.cursor // 16}") + height = hx._visible_height() + c.check("hex cursor follows the scroll (stays visible)", + top >= 20 and top <= (hx.cursor // 16) < top + height, + f"top={top} cursor_row={hx.cursor // 16} height={height}") PAD = 1 # HexView { padding: 0 1 } -> content is inset one col await c.pilot.click(HexView, offset=(PAD + 19 + 3 * 3, 5)) # hex byte 3, row 5 await c.pause(0.1) |
