radioapp/radiowidgets/src/radiofrequencystrip.cpp
changeset 32 189d20c34778
parent 28 075425b8d9a4
child 33 11b6825f0862
--- a/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Fri Jun 11 13:38:32 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Wed Jun 23 18:12:57 2010 +0300
@@ -336,9 +336,11 @@
     emit manualSeekChanged( mManualSeekMode );
 
     if ( mManualSeekMode ) {
+        grabMouse();
         hideButtons();
         mManualSeekTimerId = startTimer( MANUALSEEK_SIGNAL_DELAY );
     } else {
+        ungrabMouse();
         showButtons();
         killTimer( mManualSeekTimerId );
         mManualSeekTimerId = 0;
@@ -389,10 +391,8 @@
 /*!
  * \reimp
  */
-void RadioFrequencyStrip::scrollPosChanged( QPointF newPosition )
+void RadioFrequencyStrip::scrollPosChanged()
 {
-    Q_UNUSED( newPosition );
-
     if ( mManualSeekMode ) {
         const int pos = selectorPos();
         const uint frequency = mPositions.value( pos );
@@ -408,7 +408,7 @@
  */
 void RadioFrequencyStrip::resizeEvent ( QGraphicsSceneResizeEvent* event )
 {
-    LOG_METHOD_ENTER;
+    LOG_METHOD;
     RadioStripBase::resizeEvent( event );
 
     const qreal height = event->newSize().height();
@@ -457,7 +457,12 @@
     RadioStripBase::mousePressEvent( event );
 
     mManualSeekTimer->stop();
-    if ( !mManualSeekMode ) {
+    if ( mManualSeekMode ) {
+        const bool insideStrip = rect().contains( event->pos() );
+        if ( !insideStrip ) {
+            toggleManualSeek();
+        }
+    } else {
         mManualSeekTimer->start( MANUALSEEK_START_TIMEOUT );
     }
 }