Explorar o código

UI: Add eventFilter to media slider

When pressing the up and down arrows or moving the mouse wheel
for the media slider, the slider would move.
Clayton Groeneveld %!s(int64=3) %!d(string=hai) anos
pai
achega
fca727c191
Modificáronse 2 ficheiros con 19 adicións e 0 borrados
  1. 18 0
      UI/media-slider.cpp
  2. 1 0
      UI/media-slider.hpp

+ 18 - 0
UI/media-slider.cpp

@@ -4,6 +4,7 @@
 
 MediaSlider::MediaSlider(QWidget *parent) : SliderIgnoreScroll(parent)
 {
+	installEventFilter(this);
 	setMouseTracking(true);
 
 	QString styleName = style()->objectName();
@@ -32,3 +33,20 @@ void MediaSlider::mouseMoveEvent(QMouseEvent *event)
 	event->accept();
 	QSlider::mouseMoveEvent(event);
 }
+
+bool MediaSlider::eventFilter(QObject *obj, QEvent *event)
+{
+	if (event->type() == QEvent::KeyPress) {
+		QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
+
+		if (keyEvent->key() == Qt::Key_Up ||
+		    keyEvent->key() == Qt::Key_Down) {
+			return true;
+		}
+	}
+
+	if (event->type() == QEvent::Wheel)
+		return true;
+
+	return QSlider::eventFilter(obj, event);
+}

+ 1 - 0
UI/media-slider.hpp

@@ -14,4 +14,5 @@ signals:
 
 protected:
 	virtual void mouseMoveEvent(QMouseEvent *event) override;
+	virtual bool eventFilter(QObject *obj, QEvent *event) override;
 };