feat: waveform drag-select + wheel zoom (selection_changed/view_changed)

This commit is contained in:
2026-07-02 17:06:46 +02:00
parent 7ca894d585
commit 25fbf8142f
2 changed files with 110 additions and 0 deletions
+26
View File
@@ -414,6 +414,32 @@ def test_waveform_view_and_selection(win):
assert w.selection() is None
def test_waveform_drag_emits_selection(win):
w = win._wave
w.resize(400, 96)
w.set_view(10.0, 4.0)
w.set_selection(11.0, 13.0)
got = []
w.selection_changed.connect(lambda s, e: got.append((s, e)))
# new selection: press near t=10.5 (not on a handle), drag to t=13.5, release
w._begin_drag_at_x(w._t_to_px(10.5))
w._drag_to_x(w._t_to_px(13.5))
w._end_drag()
assert got, "selection_changed should fire on release"
s, e = w.selection()
assert 10.0 <= s < e <= 14.0
def test_waveform_zoom_emits_view(win):
w = win._wave
w.resize(400, 96)
w.set_view(10.0, 4.0)
seen = []
w.view_changed.connect(lambda s, d: seen.append((s, d)))
w._zoom_at_x(200, 0.5) # zoom in about the middle
assert seen and seen[-1][1] < 4.0
def test_audition_button_present_and_safe(win):
from PyQt6.QtWidgets import QPushButton
assert isinstance(win._btn_audio_play, QPushButton)