fix: keep editor playback active on playhead changes
This commit is contained in:
@@ -4508,6 +4508,9 @@ class AudioEditorDialog(QDialog):
|
||||
if not checked:
|
||||
self._stop_play()
|
||||
return
|
||||
self._play_from_playhead()
|
||||
|
||||
def _play_from_playhead(self) -> None:
|
||||
play_t = self._playhead_secs()
|
||||
se = self._selection_secs()
|
||||
if se is not None and se[0] <= play_t <= se[1]:
|
||||
@@ -4539,7 +4542,7 @@ class AudioEditorDialog(QDialog):
|
||||
end: float | None = None,
|
||||
loop: bool = False) -> None:
|
||||
from PyQt6.QtCore import QProcess
|
||||
self._stop_play()
|
||||
self._stop_play(reset_button=False)
|
||||
self._play_proc = QProcess(self)
|
||||
self._play_proc.finished.connect(self._on_play_finished)
|
||||
self._play_proc.errorOccurred.connect(self._on_play_error)
|
||||
@@ -4570,7 +4573,7 @@ class AudioEditorDialog(QDialog):
|
||||
|
||||
def _on_wave_playhead_changed(self, t: float) -> None:
|
||||
if self._play_proc is not None:
|
||||
self._stop_play()
|
||||
self._play_from_playhead()
|
||||
|
||||
def _playhead_secs(self) -> float:
|
||||
t = self._wave.playhead()
|
||||
@@ -4623,7 +4626,7 @@ class AudioEditorDialog(QDialog):
|
||||
self._btn_play.setChecked(False)
|
||||
self._btn_play.blockSignals(False)
|
||||
|
||||
def _stop_play(self) -> None:
|
||||
def _stop_play(self, reset_button: bool = True) -> None:
|
||||
proc = self._play_proc
|
||||
self._play_proc = None
|
||||
self._playhead_timer.stop()
|
||||
@@ -4636,8 +4639,9 @@ class AudioEditorDialog(QDialog):
|
||||
proc.kill()
|
||||
proc.waitForFinished(100)
|
||||
proc.deleteLater()
|
||||
self._btn_play.setText("▶ Play")
|
||||
if self._btn_play.isChecked():
|
||||
if reset_button:
|
||||
self._btn_play.setText("▶ Play")
|
||||
if reset_button and self._btn_play.isChecked():
|
||||
self._btn_play.blockSignals(True)
|
||||
self._btn_play.setChecked(False)
|
||||
self._btn_play.blockSignals(False)
|
||||
|
||||
Reference in New Issue
Block a user