diff options
| author | blasty <peter@haxx.in> | 2026-07-24 00:27:40 +0200 |
|---|---|---|
| committer | blasty <peter@haxx.in> | 2026-07-24 00:27:40 +0200 |
| commit | 04c2547d6376363b96fab8040ee8753fc42d7d7f (patch) | |
| tree | 86d525c0a4297e0db2658e39005aeee3254a2e5d /idatui/launch.py | |
| parent | nav: snap an xref-into-pseudocode jump to the line that holds the symbol (diff) | |
| download | ida-tui-04c2547d6376363b96fab8040ee8753fc42d7d7f.tar.gz ida-tui-04c2547d6376363b96fab8040ee8753fc42d7d7f.tar.xz ida-tui-04c2547d6376363b96fab8040ee8753fc42d7d7f.zip | |
ux: block with a "finding xrefs…" overlay while gathering xrefs
Gathering xrefs (xrefs_to + function_of over every site) runs in a worker, so the
UI stayed live and a second 'x' (or other action) fired into a half-finished
operation — duplicate requests, dialogs stacking, generally confusing behavior.
Add a small blocking BusyScreen modal shown the instant 'x' is pressed:
* re-entry guard (_xref_active) ignores a second 'x' while one gather is in
flight, and the modal captures input anyway;
* _present_xrefs dismisses it and opens the dialog when results are ready;
* Esc cancels — a worker that finishes after the cancel won't pop a stale dialog
(the _xref_active flag gates it);
* every exit path clears it (no-subject case, and a try/except around the
worker's slow calls) so it can't get stuck.
Verified: 1st 'x' -> BusyScreen (xref_active=True); 2nd 'x' ignored (stack
unchanged); results -> dialog + busy gone; Esc -> cancelled, no late dialog.
follow_xrefs/xref_labels/decomp_nav/decomp_follow_self/view_toggle/disasm_nav/
search/mouse/listing_view/continuous_view/func_banners/startup green.
Diffstat (limited to 'idatui/launch.py')
0 files changed, 0 insertions, 0 deletions
