fix: editor cleanup on Escape/reject + stop main audition on open

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-02 18:41:41 +02:00
co-authored by Claude Opus 4.8
parent 4a34a87d37
commit d8b890d679
2 changed files with 21 additions and 1 deletions
+10 -1
View File
@@ -4297,7 +4297,7 @@ class AudioEditorDialog(QDialog):
proc.deleteLater()
self._btn_play.setText("▶ Play")
def closeEvent(self, ev) -> None:
def _cleanup(self) -> None:
self._stop_play()
for _t in list(self._temps):
try:
@@ -4305,8 +4305,15 @@ class AudioEditorDialog(QDialog):
except OSError:
pass
self._temps.clear()
def closeEvent(self, ev) -> None:
self._cleanup()
super().closeEvent(ev)
def reject(self) -> None:
self._cleanup()
super().reject()
def _on_save_as(self):
path, _sel = QFileDialog.getSaveFileName(
self, "Save edited audio", "",
@@ -7076,6 +7083,7 @@ class MainWindow(QMainWindow):
if not self._file_path:
self._show_status("Load a video first", 3000)
return
self._stop_audition()
import tempfile
start = self._cursor
dur = self._spn_audio_len.value()
@@ -7101,6 +7109,7 @@ class MainWindow(QMainWindow):
self._merge_temps.add(tmp) # reuse the close-time temp sweep
dlg = AudioEditorDialog(tmp, parent=self)
dlg.exec()
dlg.deleteLater()
def _merge_move(self, delta: int) -> None:
row = self._merge_list.currentRow()
+11
View File
@@ -749,3 +749,14 @@ def test_editor_close_cleans_temps(win, tmp_path):
dlg.close()
assert not t1.exists()
assert os.path.exists(str(src)) # _versions[0] (entry temp) is NOT swept by the editor
def test_editor_reject_cleans_temps(win, tmp_path):
import main as m
src = tmp_path / "v0.wav"; src.write_bytes(b"")
t1 = tmp_path / "t1.wav"; t1.write_bytes(b"x")
dlg = m.AudioEditorDialog(str(src), parent=win)
dlg._temps.add(str(t1))
dlg.reject() # Escape path
assert not t1.exists() # op temp swept
assert os.path.exists(str(src)) # entry temp (_versions[0]) survives