fix: let lock mode scrub audio timeline playhead

This commit is contained in:
2026-07-04 20:40:28 +02:00
parent 6cfac8baa9
commit 36fc1b9591
2 changed files with 39 additions and 1 deletions
+36
View File
@@ -371,6 +371,42 @@ def test_timeline_audio_hover_cursor_state(win):
assert tl._audio_hit_at_x(tl._time_to_x(12.0)) == "create"
def test_timeline_audio_mode_lock_click_scrubs_playhead_not_region(win):
from PyQt6.QtCore import QEvent, QPointF, Qt
from PyQt6.QtGui import QMouseEvent
tl = win._timeline
tl._duration = 20.0
tl._view_start = 0.0
tl._view_span = 20.0
tl.resize(400, tl.height() or 80)
tl.set_audio_mode(True)
tl.set_audio_region(4.0, 8.0)
tl.set_cursor(4.0)
tl._locked = True
got_seek = []
got_audio = []
tl.seek_changed.connect(lambda t: got_seek.append(t))
tl.audio_region_changed.connect(lambda s, e: got_audio.append((s, e)))
x = tl._time_to_x(12.0)
y = tl._SCROLLBAR_H + tl._RULER_H + 20
press = QMouseEvent(
QEvent.Type.MouseButtonPress, QPointF(x, y),
Qt.MouseButton.LeftButton, Qt.MouseButton.LeftButton,
Qt.KeyboardModifier.NoModifier)
release = QMouseEvent(
QEvent.Type.MouseButtonRelease, QPointF(x, y),
Qt.MouseButton.LeftButton, Qt.MouseButton.NoButton,
Qt.KeyboardModifier.NoModifier)
tl.mousePressEvent(press)
tl.mouseReleaseEvent(release)
assert abs((tl._play_pos or 0.0) - 12.0) < 0.1
assert tl._audio_region == (4.0, 8.0)
assert not got_audio
assert got_seek and abs(got_seek[-1] - 12.0) < 0.1
def test_timeline_audio_mode_follows_deck(win):
win._control_deck.setCurrentWidget(win._tab_audio)
assert win._timeline._audio_mode is True