Skip to content

Commit ad45a96

Browse files
qtui: Implement wheelEvent for TimeSlider (#90)
Allows seeking with the mouse wheel by placing the cursor over the TimeSlider. This feature is already available in GTK mode. Co-authored-by: SimonP <[email protected]>
1 parent 3fc8dca commit ad45a96

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/qtui/time_slider.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,19 @@ TimeSlider::TimeSlider(QWidget * parent)
9696
start_stop();
9797
}
9898

99+
void TimeSlider::wheelEvent(QWheelEvent *event)
100+
{
101+
m_scroll_delta += event->angleDelta().y();
102+
103+
/* we want discrete steps here */
104+
int steps = m_scroll_delta / 120;
105+
if (steps != 0)
106+
{
107+
m_scroll_delta -= 120 * steps;
108+
aud_drct_seek(aud_drct_get_time() + steps * aud_get_int("step_size") * 1000);
109+
}
110+
}
111+
99112
void TimeSlider::set_label(int time, int length)
100113
{
101114
QString text;

src/qtui/time_slider.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ class TimeSlider : public QSlider
4444

4545
TimeSliderLabel * label() { return m_label; }
4646

47+
protected:
48+
void wheelEvent(QWheelEvent *event);
49+
4750
private:
4851
void set_label(int time, int length);
4952

@@ -55,6 +58,8 @@ class TimeSlider : public QSlider
5558

5659
TimeSliderLabel * m_label;
5760

61+
int m_scroll_delta = 0;
62+
5863
const Timer<TimeSlider> m_timer{TimerRate::Hz4, this, &TimeSlider::update};
5964

6065
const HookReceiver<TimeSlider> hook1{"playback ready", this,

0 commit comments

Comments
 (0)