aboutsummaryrefslogtreecommitdiffstats
path: root/docs/PROJECTS.md
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-07-25 14:04:53 +0200
committerblasty <blasty@local>2026-07-25 14:04:53 +0200
commit1f1440285d8caf995abfc49c0849f3ad3000c64e (patch)
tree43710761e57eed5a64742039669086b8d954c20f /docs/PROJECTS.md
parenttests: fix the "filter flake" and the view_toggle cascade — suite is 187/0 (diff)
downloadida-tui-1f1440285d8caf995abfc49c0849f3ad3000c64e.tar.gz
ida-tui-1f1440285d8caf995abfc49c0849f3ad3000c64e.tar.xz
ida-tui-1f1440285d8caf995abfc49c0849f3ad3000c64e.zip
exit: ask before quitting with unsaved database changes
Quitting used to be silent AND inconsistent. Single-binary mode closed the worker with save=False, so renames/types/comments were DROPPED without a word; project mode did the opposite and saved everything silently via the pool. Neither told you anything. Now 'q'/ctrl+q routes through action_quit: clean databases exit immediately, and anything unsaved raises a QuitScreen naming the affected databases with s save & quit d discard & quit Esc cancel Saving happens with an overlay up, because writing a large .i64 takes seconds and doing it during teardown would look like a hang with no UI left to explain it. _dirty_labels() covers project mode too: the active binary plus any still-resident one that was edited. Evicted binaries were already saved on the way out, so they can't be silently lost. on_unmount now distinguishes an explicit choice from an unexpected teardown: _save_on_exit is None (crash/kill -> save defensively, including single-binary mode which previously discarded), False (user chose discard, or we already saved). Verified end-to-end across two sessions on a temp copy: rename + 's' -> the rename is still there on reopen; rename + 'd' -> it is not. Plus a quit_guard scenario (clean exits immediately, dirty asks, Esc cancels). Also hardens Ctx.open(view="decomp"): F5/Tab only decompiles from a focused code pane and the listing may still be settling, so a swallowed Tab surfaced much later as "pseudocode view shows: active=listing". It now retries instead of assuming the first Tab takes. Full suite 191/0, green twice in a row.
Diffstat (limited to 'docs/PROJECTS.md')
0 files changed, 0 insertions, 0 deletions