[vlc-devel] [PATCH] qt: Convert seek slider wheel events to actions
Hugo Beauzée-Luyssen
hugo at beauzee.fr
Thu Mar 8 15:06:21 CET 2018
Fix #19790
This will also make it easier to make the jump size configurable
---
modules/gui/qt/components/controller.cpp | 2 +-
modules/gui/qt/dialogs/toolbar.cpp | 2 +-
modules/gui/qt/util/input_slider.cpp | 15 ++++++++-------
modules/gui/qt/util/input_slider.hpp | 4 +++-
4 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/modules/gui/qt/components/controller.cpp b/modules/gui/qt/components/controller.cpp
index e679206df8..0ed1c65aeb 100644
--- a/modules/gui/qt/components/controller.cpp
+++ b/modules/gui/qt/components/controller.cpp
@@ -350,7 +350,7 @@ QWidget *AbstractController::createWidget( buttonType_e button, int options )
}
break;
case INPUT_SLIDER: {
- SeekSlider *slider = new SeekSlider( Qt::Horizontal, NULL, !b_shiny );
+ SeekSlider *slider = new SeekSlider( p_intf, Qt::Horizontal, NULL, !b_shiny );
SeekPoints *chapters = new SeekPoints( this, p_intf );
CONNECT( THEMIM->getIM(), chapterChanged( bool ), chapters, update() );
slider->setChapters( chapters );
diff --git a/modules/gui/qt/dialogs/toolbar.cpp b/modules/gui/qt/dialogs/toolbar.cpp
index b71dfe5d97..58a90f7c5b 100644
--- a/modules/gui/qt/dialogs/toolbar.cpp
+++ b/modules/gui/qt/dialogs/toolbar.cpp
@@ -463,7 +463,7 @@ WidgetListing::WidgetListing( intf_thread_t *p_intf, QWidget *_parent )
break;
case INPUT_SLIDER:
{
- SeekSlider *slider = new SeekSlider( Qt::Horizontal, this );
+ SeekSlider *slider = new SeekSlider( p_intf, Qt::Horizontal, this );
widget = slider;
}
widgetItem->setText( qtr("Time Slider") );
diff --git a/modules/gui/qt/util/input_slider.cpp b/modules/gui/qt/util/input_slider.cpp
index f76a784617..b612354832 100644
--- a/modules/gui/qt/util/input_slider.cpp
+++ b/modules/gui/qt/util/input_slider.cpp
@@ -35,6 +35,8 @@
#include "input_manager.hpp"
#include "imagehelper.hpp"
+#include <vlc_actions.h>
+
#include <QPaintEvent>
#include <QPainter>
#include <QBitmap>
@@ -63,8 +65,8 @@ namespace {
int const FADEOUT_DELAY = 2000;
}
-SeekSlider::SeekSlider( Qt::Orientation q, QWidget *_parent, bool _static )
- : QSlider( q, _parent ), b_classic( _static ), animLoading( NULL )
+SeekSlider::SeekSlider( intf_thread_t *p_intf, Qt::Orientation q, QWidget *_parent, bool _static )
+ : QSlider( q, _parent ), p_intf( p_intf ), b_classic( _static ), animLoading( NULL )
{
isSliding = false;
isJumping = false;
@@ -401,11 +403,10 @@ void SeekSlider::wheelEvent( QWheelEvent *event )
/* Don't do anything if we are for somehow reason sliding */
if( !isSliding && isEnabled() )
{
- setValue( value() + event->delta() / 12 ); /* 12 = 8 * 15 / 10
- Since delta is in 1/8 of ° and mouse have steps of 15 °
- and that our slider is in 0.1% and we want one step to be a 1%
- increment of position */
- emit sliderDragged( value() / static_cast<float>( maximum() ) );
+ if ( event->delta() > 0 )
+ var_SetInteger( p_intf->obj.libvlc, "key-action", ACTIONID_JUMP_BACKWARD_SHORT );
+ else
+ var_SetInteger( p_intf->obj.libvlc, "key-action", ACTIONID_JUMP_FORWARD_SHORT );
}
event->accept();
}
diff --git a/modules/gui/qt/util/input_slider.hpp b/modules/gui/qt/util/input_slider.hpp
index 2c593603b4..aad65ce4d4 100644
--- a/modules/gui/qt/util/input_slider.hpp
+++ b/modules/gui/qt/util/input_slider.hpp
@@ -55,7 +55,8 @@ class SeekSlider : public QSlider
Q_PROPERTY(qreal handleOpacity READ handleOpacity WRITE setHandleOpacity)
Q_PROPERTY(qreal loadingProperty READ loading WRITE setLoading)
public:
- SeekSlider( Qt::Orientation q, QWidget *_parent = 0, bool _classic = false );
+ SeekSlider( intf_thread_t *p_intf, Qt::Orientation q, QWidget *_parent = 0,
+ bool _classic = false );
virtual ~SeekSlider();
void setChapters( SeekPoints * );
@@ -84,6 +85,7 @@ protected:
int getValueFromXPos( int );
private:
+ intf_thread_t *p_intf;
bool isSliding; /* Whether we are currently sliding by user action */
bool isJumping; /* if we requested a jump to another chapter */
int inputLength; /* InputLength that can change */
--
2.11.0
More information about the vlc-devel
mailing list