]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/util/directslider.hpp
Fix duration slider. Patch by Hannes Domani
[vlc] / modules / gui / qt4 / util / directslider.hpp
index c363d9fb21a739601fc1aa408548a01b36c2503c..d6ea43dcf9f7902fa8507c64fda565d8b83dd371 100644 (file)
 class DirectSlider : public QSlider
 {
 public:
-DirectSlider( QWidget *_parent ) : QSlider( _parent ) {};
-DirectSlider( Qt::Orientation q,QWidget *_parent ) : QSlider( q,_parent )
+    DirectSlider( QWidget *_parent ) : QSlider( _parent ) {};
+    DirectSlider( Qt::Orientation q,QWidget *_parent ) : QSlider( q,_parent )
     {};
     virtual ~DirectSlider()   {};
 
     void mousePressEvent(QMouseEvent* event)
     {
-        if(event->button() == Qt::LeftButton)
+        if( event->button() != Qt::LeftButton && event->button() != Qt::MidButton )
         {
-#ifdef WIN32
-            int width1 = qobject_cast<QWidget*>(parent())->sizeHint().width() -
-                     2 * qobject_cast<QWidget*>(parent())->layout()->margin();
-#else
-            int width1 = width();
-#endif
-            int pos = (int)(minimum() + 
-                          (double)(event->x())/width1*(maximum()-minimum()) );
-            setSliderPosition( pos );
-            QSlider::mousePressEvent(event);
+            QSlider::mousePressEvent( event );
+            return;
         }
+
+        QMouseEvent newEvent( event->type(), event->pos(), event->globalPos(),
+                Qt::MouseButton( event->button() ^ Qt::LeftButton ^ Qt::MidButton ),
+                Qt::MouseButtons( event->buttons() ^ Qt::LeftButton ^ Qt::MidButton ),
+                event->modifiers() );
+        QSlider::mousePressEvent( &newEvent );
     }
 };
 #endif