]> git.sesse.net Git - kdenlive/blobdiff - src/monitor.cpp
Fix play / pause: http://kdenlive.org/mantis/view.php?id=2317
[kdenlive] / src / monitor.cpp
index 02a9d92178e064c5042f6b2431f67c13afcca86c..0d19d03a166b55a2c1dcd2a3c955d785b155cb84 100644 (file)
@@ -202,7 +202,7 @@ Monitor::Monitor(Kdenlive::MONITORID id, MonitorManager *manager, QString profil
     m_toolbar->addWidget(spacer);
     m_timePos = new TimecodeDisplay(m_monitorManager->timecode(), this);
     m_toolbar->addWidget(m_timePos);
-    connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek()));
+    connect(m_timePos, SIGNAL(timeCodeEditingFinished()), this, SLOT(slotSeek()));
     m_toolbar->setMaximumHeight(s * 1.5);
     layout->addWidget(m_toolbar);
 }
@@ -673,8 +673,20 @@ void Monitor::slotRewind(double speed)
     slotActivateMonitor();
     if (speed == 0) {
         double currentspeed = render->playSpeed();
-        if (currentspeed >= 0) render->play(-2);
-        else render->play(currentspeed * 2);
+       if (currentspeed >= 0) render->play(-1);
+       else switch((int) currentspeed) {
+           case -1:
+               render->play(-2);
+               break;
+           case -2:
+               render->play(-3);
+               break;
+           case -3:
+               render->play(-5);
+               break;
+           default:
+               render->play(-8);
+       }
     } else render->play(speed);
     //m_playAction->setChecked(true);
     m_playAction->setIcon(m_pauseIcon);
@@ -685,8 +697,20 @@ void Monitor::slotForward(double speed)
     slotActivateMonitor();
     if (speed == 0) {
         double currentspeed = render->playSpeed();
-        if (currentspeed <= 1) render->play(2);
-        else render->play(currentspeed * 2);
+       if (currentspeed <= 0) render->play(1);
+        else switch((int) currentspeed) {
+           case 1:
+               render->play(2);
+               break;
+           case 2:
+               render->play(3);
+               break;
+           case 3:
+               render->play(5);
+               break;
+           default:
+               render->play(8);
+       }
     } else render->play(speed);
     //m_playAction->setChecked(true);
     m_playAction->setIcon(m_pauseIcon);
@@ -780,12 +804,13 @@ void Monitor::slotPlay()
 {
     if (render == NULL) return;
     slotActivateMonitor();
-    if (render->playSpeed() == 0.0) {
+    if (render->isPlaying()) {
+       m_playAction->setIcon(m_playIcon);
+        render->switchPlay(false);
+    }
+    else {
         m_playAction->setIcon(m_pauseIcon);
         render->switchPlay(true);
-    } else {
-        m_playAction->setIcon(m_playIcon);
-        render->switchPlay(false);
     }
     m_ruler->refreshRuler();
 }