aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-07-25 00:10:30 +0200
committerblasty <blasty@local>2026-07-25 00:10:30 +0200
commitec6594e9d8b147df0aaff67752c5b85a55c0971d (patch)
tree8a855dc8831ae536a1653ed4cf601fc8effea884 /tests
parentsplit-view phase 4: split-aware status, min-width gate, verified nav (diff)
downloadida-tui-ec6594e9d8b147df0aaff67752c5b85a55c0971d.tar.gz
ida-tui-ec6594e9d8b147df0aaff67752c5b85a55c0971d.tar.xz
ida-tui-ec6594e9d8b147df0aaff67752c5b85a55c0971d.zip
split: click a pane to drive it (not just Tab) + spell it out in the status
The sync direction follows the FOCUSED pane, but that was only discoverable via Tab. Add on_descendant_focus: in split, focusing a pane (Tab or a mouse click) makes it the leading/driver pane and re-syncs — so clicking into the pseudocode and cursoring around now drives the listing, matching intuition (previously a click focused the widget but left _active — and thus the sync direction — pointing at the other pane). The split status now ends with "(Tab/click: drive <other pane>)" so it's obvious. Pilot split_view: clicking the pseudocode pane makes it the driver (17/17).
Diffstat (limited to 'tests')
-rw-r--r--tests/test_scenarios.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/tests/test_scenarios.py b/tests/test_scenarios.py
index 3401645..7d9f3b7 100644
--- a/tests/test_scenarios.py
+++ b/tests/test_scenarios.py
@@ -415,6 +415,13 @@ async def s_split_view(c: Ctx):
await c.pause(0.1)
c.check("Tab again focuses the listing pane", app._active == "listing",
f"active={app._active}")
+ # a mouse click on the other pane also makes it the driver (not just Tab)
+ await c.pilot.click(DecompView, offset=(10, 5))
+ await c.pause(0.15)
+ c.check("clicking the pseudocode pane makes it the driver",
+ app._active == "decomp", f"active={app._active}")
+ await c.press("tab") # restore listing as the driver
+ await c.pause(0.1)
# navigation in split keeps BOTH panes on the (new) function
nf = c.find_func(lambda f: f.addr != app._cur.ea and f.size > 80)
if nf is not None: