fix: marker click properly restores settings without cursor clear race
Emit marker_clicked before seek, and use a flag to prevent _on_cursor_changed from immediately clearing the overwrite state and settings that were just restored. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -645,8 +645,10 @@ class TimelineWidget(QWidget):
|
|||||||
for (frac, output_path) in self._hover_cache:
|
for (frac, output_path) in self._hover_cache:
|
||||||
if abs(x - frac * w) <= 6:
|
if abs(x - frac * w) <= 6:
|
||||||
t = frac * self._duration
|
t = frac * self._duration
|
||||||
self._seek(x)
|
# Emit marker_clicked BEFORE seek so the handler can set
|
||||||
|
# _overwrite_path before _on_cursor_changed clears it.
|
||||||
self.marker_clicked.emit(t, output_path)
|
self.marker_clicked.emit(t, output_path)
|
||||||
|
self._seek(x)
|
||||||
return
|
return
|
||||||
self._seek(event.position().x())
|
self._seek(event.position().x())
|
||||||
|
|
||||||
@@ -1248,6 +1250,7 @@ class MainWindow(QMainWindow):
|
|||||||
self._export_worker: ExportWorker | None = None
|
self._export_worker: ExportWorker | None = None
|
||||||
self._last_export_path: str = ""
|
self._last_export_path: str = ""
|
||||||
self._overwrite_path: str = "" # set when a marker is selected for re-export
|
self._overwrite_path: str = "" # set when a marker is selected for re-export
|
||||||
|
self._marker_just_clicked: bool = False
|
||||||
self._mask_worker: MaskWorker | None = None
|
self._mask_worker: MaskWorker | None = None
|
||||||
self._db_worker: _DBWorker | None = None
|
self._db_worker: _DBWorker | None = None
|
||||||
self._frame_grabber: FrameGrabber | None = None
|
self._frame_grabber: FrameGrabber | None = None
|
||||||
@@ -1617,6 +1620,7 @@ class MainWindow(QMainWindow):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _on_marker_clicked(self, start_time: float, output_path: str) -> None:
|
def _on_marker_clicked(self, start_time: float, output_path: str) -> None:
|
||||||
|
self._marker_just_clicked = True
|
||||||
self._overwrite_path = output_path
|
self._overwrite_path = output_path
|
||||||
self._lbl_next.setText(f"↺ {os.path.basename(output_path)}")
|
self._lbl_next.setText(f"↺ {os.path.basename(output_path)}")
|
||||||
self._btn_delete.setEnabled(True)
|
self._btn_delete.setEnabled(True)
|
||||||
@@ -1752,12 +1756,13 @@ class MainWindow(QMainWindow):
|
|||||||
self._cursor = t
|
self._cursor = t
|
||||||
self._lbl_cursor.setText(f"cursor: {format_time(t)}")
|
self._lbl_cursor.setText(f"cursor: {format_time(t)}")
|
||||||
self._preview_timer.start()
|
self._preview_timer.start()
|
||||||
if self._overwrite_path:
|
if self._overwrite_path and not self._marker_just_clicked:
|
||||||
self._overwrite_path = ""
|
self._overwrite_path = ""
|
||||||
self._update_next_label()
|
self._update_next_label()
|
||||||
if not self._last_export_path:
|
if not self._last_export_path:
|
||||||
self._btn_delete.setEnabled(False)
|
self._btn_delete.setEnabled(False)
|
||||||
self._btn_delete.setText("Delete")
|
self._btn_delete.setText("Delete")
|
||||||
|
self._marker_just_clicked = False
|
||||||
if self._mpv.is_playing():
|
if self._mpv.is_playing():
|
||||||
self._mpv.play_loop(t, t + self._clip_span)
|
self._mpv.play_loop(t, t + self._clip_span)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user