diff options
| author | blasty <blasty@local> | 2026-07-24 00:27:40 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-07-24 00:27:40 +0200 |
| commit | 6408a778effae4247d58c12b5f2bba9e688aab5f (patch) | |
| tree | 61913783ab3f1426021bfb42ac549531d75a3246 /server/patch_server.py | |
| parent | nav: snap an xref-into-pseudocode jump to the line that holds the symbol (diff) | |
| download | ida-tui-6408a778effae4247d58c12b5f2bba9e688aab5f.tar.gz ida-tui-6408a778effae4247d58c12b5f2bba9e688aab5f.tar.xz ida-tui-6408a778effae4247d58c12b5f2bba9e688aab5f.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 'server/patch_server.py')
0 files changed, 0 insertions, 0 deletions
