aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-07-24 15:48:19 +0200
committerblasty <blasty@local>2026-07-24 15:48:19 +0200
commit4975a92c338819b43cb6647d7bbb9197c5772f32 (patch)
treed36a08551940cc25643bab5867d741e1862e8007 /tests
parenthex: click to place the byte cursor (hex + ascii panes) (diff)
downloadida-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.py9
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)