aboutsummaryrefslogtreecommitdiffstats
path: root/idatui/rpc.py
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-07-23 17:23:16 +0200
committerblasty <blasty@local>2026-07-23 17:23:16 +0200
commit0c097f543a0fd1437189796e69484992604cf8ca (patch)
treed6531de3dc4d4f842d941f7b748d15ec1ca1bc29 /idatui/rpc.py
parentlisting: F5/Tab decompiles the function under the cursor (IDA-style) — step 2 (diff)
downloadida-tui-0c097f543a0fd1437189796e69484992604cf8ca.tar.gz
ida-tui-0c097f543a0fd1437189796e69484992604cf8ca.tar.xz
ida-tui-0c097f543a0fd1437189796e69484992604cf8ca.zip
unify: the continuous listing is the one code view; deprecate DisasmView
Full IDA-style unification. The function-bounded DisasmView is gone from the UI: navigation opens ONE continuous segment listing (functions+data+undefined interleaved) at the target; F5/Tab decompiles the function under the cursor and back. The listing gained the opcode column (Head.raw, 'o' toggle) so rendering matches disasm. Routing: _do_navigate/_open_function/_open_entry target the listing; _show_active drops disasm; _active in {listing,decomp,hex}; _pref=listing. Decomp is a per-function toggle with a listing fallback on failure. Edits reload in place (_reload_active_code); bump_names() drops the listing cache so renames refresh. Listing 'n' is symbol-aware. ListingModel gains cached_line/lines shims; Head.label. DisasmView removed from compose/handlers; rpc updated. DisasmModel kept (domain/test_domain). Tests migrated (c.dis->ListingView; open(decomp) F5s; xref/search re-pointed). Per-scenario green across view_toggle/rename/follow_xrefs/xref_labels/decomp_*/ search/mouse/startup/continuous_view (30/1, 1 cold-decompile flake).
Diffstat (limited to 'idatui/rpc.py')
-rw-r--r--idatui/rpc.py6
1 files changed, 2 insertions, 4 deletions
diff --git a/idatui/rpc.py b/idatui/rpc.py
index 5836057..908a26c 100644
--- a/idatui/rpc.py
+++ b/idatui/rpc.py
@@ -28,7 +28,7 @@ from typing import Any
from rich.console import Console
from ._sync import drain, settle
-from .app import DecompView, DisasmView, HexView, ListingView
+from .app import DecompView, HexView, ListingView
PROTO_VERSION = 1
TYPE_DELAY_MS = 35 # default per-char delay for high-level typed ops (aesthetic)
@@ -94,9 +94,7 @@ def _active_widget(app):
"""The currently *shown* code widget (mirrors app._active)."""
if app._active == "hex":
return app.query_one(HexView)
- if app._active == "disasm":
- return app.query_one(DisasmView)
- if app._active == "listing":
+ if app._active in ("listing", "disasm"):
return app.query_one(ListingView)
return app.query_one(DecompView)