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:
@@ -4297,7 +4297,7 @@ class AudioEditorDialog(QDialog):
|
|||||||
proc.deleteLater()
|
proc.deleteLater()
|
||||||
self._btn_play.setText("▶ Play")
|
self._btn_play.setText("▶ Play")
|
||||||
|
|
||||||
def closeEvent(self, ev) -> None:
|
def _cleanup(self) -> None:
|
||||||
self._stop_play()
|
self._stop_play()
|
||||||
for _t in list(self._temps):
|
for _t in list(self._temps):
|
||||||
try:
|
try:
|
||||||
@@ -4305,8 +4305,15 @@ class AudioEditorDialog(QDialog):
|
|||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
self._temps.clear()
|
self._temps.clear()
|
||||||
|
|
||||||
|
def closeEvent(self, ev) -> None:
|
||||||
|
self._cleanup()
|
||||||
super().closeEvent(ev)
|
super().closeEvent(ev)
|
||||||
|
|
||||||
|
def reject(self) -> None:
|
||||||
|
self._cleanup()
|
||||||
|
super().reject()
|
||||||
|
|
||||||
def _on_save_as(self):
|
def _on_save_as(self):
|
||||||
path, _sel = QFileDialog.getSaveFileName(
|
path, _sel = QFileDialog.getSaveFileName(
|
||||||
self, "Save edited audio", "",
|
self, "Save edited audio", "",
|
||||||
@@ -7076,6 +7083,7 @@ class MainWindow(QMainWindow):
|
|||||||
if not self._file_path:
|
if not self._file_path:
|
||||||
self._show_status("Load a video first", 3000)
|
self._show_status("Load a video first", 3000)
|
||||||
return
|
return
|
||||||
|
self._stop_audition()
|
||||||
import tempfile
|
import tempfile
|
||||||
start = self._cursor
|
start = self._cursor
|
||||||
dur = self._spn_audio_len.value()
|
dur = self._spn_audio_len.value()
|
||||||
@@ -7101,6 +7109,7 @@ class MainWindow(QMainWindow):
|
|||||||
self._merge_temps.add(tmp) # reuse the close-time temp sweep
|
self._merge_temps.add(tmp) # reuse the close-time temp sweep
|
||||||
dlg = AudioEditorDialog(tmp, parent=self)
|
dlg = AudioEditorDialog(tmp, parent=self)
|
||||||
dlg.exec()
|
dlg.exec()
|
||||||
|
dlg.deleteLater()
|
||||||
|
|
||||||
def _merge_move(self, delta: int) -> None:
|
def _merge_move(self, delta: int) -> None:
|
||||||
row = self._merge_list.currentRow()
|
row = self._merge_list.currentRow()
|
||||||
|
|||||||
@@ -749,3 +749,14 @@ def test_editor_close_cleans_temps(win, tmp_path):
|
|||||||
dlg.close()
|
dlg.close()
|
||||||
assert not t1.exists()
|
assert not t1.exists()
|
||||||
assert os.path.exists(str(src)) # _versions[0] (entry temp) is NOT swept by the editor
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user