diff --git a/src/playlist/playlistview.cpp b/src/playlist/playlistview.cpp index 629d94874..590b8bdef 100644 --- a/src/playlist/playlistview.cpp +++ b/src/playlist/playlistview.cpp @@ -841,6 +841,10 @@ void PlaylistView::mousePressEvent(QMouseEvent* event) { // Update only this item rating playlist_->RateSong(playlist_->proxy()->mapToSource(index), new_rating); } + } else if (event->button() == Qt::XButton1 && index.isValid()) { + app_->player()->Previous(); + } else if (event->button() == Qt::XButton2 && index.isValid()) { + app_->player()->Next(); } else { QTreeView::mousePressEvent(event); } diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index dfc747d85..de62186d8 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -612,6 +612,10 @@ MainWindow::MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd, connect(ui_->track_slider, SIGNAL(SeekBackward()), app_->player(), SLOT(SeekBackward())); + connect(ui_->track_slider, SIGNAL(Previous()), app_->player(), + SLOT(Previous())); + connect(ui_->track_slider, SIGNAL(Next()), app_->player(), SLOT(Next())); + // Library connections connect(library_view_->view(), SIGNAL(AddToPlaylistSignal(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); diff --git a/src/widgets/trackslider.cpp b/src/widgets/trackslider.cpp index 4a0ccd2fa..2cc258352 100644 --- a/src/widgets/trackslider.cpp +++ b/src/widgets/trackslider.cpp @@ -49,6 +49,8 @@ TrackSlider::TrackSlider(QWidget* parent) connect(ui_->slider, SIGNAL(valueChanged(int)), SLOT(ValueMaybeChanged(int))); connect(ui_->slider, SIGNAL(SeekForward()), SIGNAL(SeekForward())); connect(ui_->slider, SIGNAL(SeekBackward()), SIGNAL(SeekBackward())); + connect(ui_->slider, SIGNAL(Previous()), SIGNAL(Previous())); + connect(ui_->slider, SIGNAL(Next()), SIGNAL(Next())); connect(ui_->remaining, SIGNAL(Clicked()), SLOT(ToggleTimeDisplay())); } diff --git a/src/widgets/trackslider.h b/src/widgets/trackslider.h index 409d119c6..233b7e89e 100644 --- a/src/widgets/trackslider.h +++ b/src/widgets/trackslider.h @@ -57,6 +57,8 @@ signals: void SeekForward(); void SeekBackward(); + void Next(); + void Previous(); private slots: void ValueMaybeChanged(int value); diff --git a/src/widgets/tracksliderslider.cpp b/src/widgets/tracksliderslider.cpp index 517074338..a4730f184 100644 --- a/src/widgets/tracksliderslider.cpp +++ b/src/widgets/tracksliderslider.cpp @@ -61,6 +61,12 @@ void TrackSliderSlider::mousePressEvent(QMouseEvent* e) { void TrackSliderSlider::mouseReleaseEvent(QMouseEvent* e) { QSlider::mouseReleaseEvent(e); + if (e->button() == Qt::XButton1) { + emit Previous(); + } else if (e->button() == Qt::XButton2) { + emit Next(); + } + e->accept(); } void TrackSliderSlider::mouseMoveEvent(QMouseEvent* e) { diff --git a/src/widgets/tracksliderslider.h b/src/widgets/tracksliderslider.h index 6340ce651..0601dc43b 100644 --- a/src/widgets/tracksliderslider.h +++ b/src/widgets/tracksliderslider.h @@ -32,6 +32,8 @@ class TrackSliderSlider : public QSlider { signals: void SeekForward(); void SeekBackward(); + void Previous(); + void Next(); protected: void mousePressEvent(QMouseEvent* e);