]> git.sesse.net Git - kdenlive/commitdiff
Fix timeline scrubbing
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 1 Mar 2008 23:40:46 +0000 (23:40 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 1 Mar 2008 23:40:46 +0000 (23:40 +0000)
svn path=/branches/KDE4/; revision=1971

src/customtrackview.cpp
src/monitor.cpp
src/trackview.cpp

index 4f665eb672cf12eae24a74c694e682c01c160b50..b50d1444aa8fa75f28d943c276c78685aa348dd1 100644 (file)
@@ -142,7 +142,7 @@ void CustomTrackView::mouseMoveEvent ( QMouseEvent * event )
        break;
       }
     }
-    if (item) {
+    if (item && event->buttons() == Qt::NoButton) {
       ClipItem *clip = (ClipItem*) item;
       double size = mapToScene(QPoint(8, 0)).x();
       OPERATIONTYPE opMode = clip->operationMode(mapToScene(event->pos()), m_scale);
@@ -250,6 +250,11 @@ void CustomTrackView::mouseMoveEvent ( QMouseEvent * event )
     }
     else {
       m_moveOpMode = NONE;
+      if (event->buttons() != Qt::NoButton) 
+      {
+       setCursorPos((int) mapToScene(event->pos().x(), 0).x());
+       emit cursorMoved(cursorPos());
+      }
       if (m_visualTip) {
        if (m_animation) delete m_animation;
        m_animation = NULL;
@@ -265,7 +270,6 @@ void CustomTrackView::mouseMoveEvent ( QMouseEvent * event )
 // virtual 
 void CustomTrackView::mousePressEvent ( QMouseEvent * event )
 {
-  kDebug()<<"-- TIMELINE MSE PRESSED";
   int pos = event->x();
   if (event->modifiers() == Qt::ControlModifier) {
     setDragMode(QGraphicsView::ScrollHandDrag);
@@ -439,18 +443,18 @@ void CustomTrackView::addItem(DocClipBase *clip, QPoint pos)
 
 void CustomTrackView::dragMoveEvent(QDragMoveEvent * event) {
   event->setDropAction(Qt::IgnoreAction);
+  //kDebug()<<"+++++++++++++   DRAG MOVE, : "<<mapToScene(event->pos()).x()<<", SCAL: "<<m_scale;
   if (m_dropItem) {
     int track = (int) mapToScene(event->pos()).y()/50; //) * (m_scale * 50) + m_scale;
-     kDebug()<<"+++++++++++++   DRAG MOVE, : "<<mapToScene(event->pos()).x()<<", SCAL: "<<m_scale;
     m_dropItem->moveTo(mapToScene(event->pos()).x() / m_scale, m_scale, (track - m_dropItem->track()) * 50, track);
+    event->setDropAction(Qt::MoveAction);
+    if (event->mimeData()->hasFormat("kdenlive/producerslist")) {
+      event->acceptProposedAction();
+    }
   }
-       //if (item) {
-  event->setDropAction(Qt::MoveAction);
-  if (event->mimeData()->hasFormat("kdenlive/producerslist")) {
-    event->acceptProposedAction();
+  else {
+    QGraphicsView::dragMoveEvent(event);
   }
-  else QGraphicsView::dragMoveEvent(event);
-        //}
 }
 
 void CustomTrackView::dragLeaveEvent ( QDragLeaveEvent * event ) {
@@ -467,7 +471,7 @@ void CustomTrackView::dropEvent ( QDropEvent * event ) {
     m_commandStack->push(command);
     m_dropItem->baseClip()->addReference();
     m_document->updateClip(m_dropItem->baseClip()->getId());
-    kDebug()<<"IIIIIIIIIIIIIIIIIIIIIIII TRAX CNT: "<<m_tracksCount<<", DROP: "<<m_dropItem->track();
+    // kDebug()<<"IIIIIIIIIIIIIIIIIIIIIIII TRAX CNT: "<<m_tracksCount<<", DROP: "<<m_dropItem->track();
     m_document->renderer()->mltInsertClip(m_tracksCount - m_dropItem->track(), GenTime(m_dropItem->startPos(), m_document->fps()), m_dropItem->xml());
   }
   else QGraphicsView::dropEvent(event);  
index c893e1ca6ea7de24d93f55b63f2492ad39227bcc..877de78ae946550fdc23930a9227a1ef534babce 100644 (file)
@@ -124,6 +124,7 @@ void Monitor::slotRewindOneFrame()
   if (m_position < 1) return;
   m_position--;
   render->seekToFrame(m_position);
+  emit renderPosition(m_position);
   ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position));
 }
 
@@ -134,6 +135,7 @@ void Monitor::slotForwardOneFrame()
   if (m_position >= m_length) return;
   m_position++;
   render->seekToFrame(m_position);
+  emit renderPosition(m_position);
   ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position));
 }
 
@@ -143,7 +145,7 @@ void Monitor::seekCursor(int pos)
   int rulerPos = (int) (pos * m_scale);
   m_position = pos;
   ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos));
-  //kDebug()<<"seek: "<<pos<<", scale: "<<m_scale<<
+  kDebug()<<"seek: "<<pos<<", scale: "<<m_scale;
   m_ruler->slotNewValue(rulerPos);
 }
 
@@ -151,6 +153,8 @@ void Monitor::rendererStopped(int pos)
 {
   int rulerPos = (int) (pos * m_scale);
   m_ruler->slotNewValue(rulerPos);
+  m_position = pos;
+  ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos));
   ui.button_play->setChecked(false);
   ui.button_play->setIcon(m_playIcon);
 }
index 3ba8ef05430ea8d67dc238b9428373f75fff43ca..23ff6534778ad9f32c249212c1b33f128793d69e 100644 (file)
@@ -139,7 +139,7 @@ void TrackView::setCursorPos(int pos)
 void TrackView::moveCursorPos(int pos)
 {
   m_trackview->setCursorPos(pos * m_scale, false);
-  //m_ruler->slotNewValue(pos * FRAME_SIZE, false);
+  m_ruler->slotNewValue(pos * FRAME_SIZE, false);
 }
 
 void TrackView::slotCursorMoved(int pos, bool emitSignal)
@@ -151,10 +151,13 @@ void TrackView::slotCursorMoved(int pos, bool emitSignal)
 
 void TrackView::slotChangeZoom(int factor)
 {
+  double pos = m_trackview->cursorPos() / m_scale;
   m_ruler->setPixelPerMark(factor);
   m_scale = (double) FRAME_SIZE / m_ruler->comboScale[factor]; // m_ruler->comboScale[m_currentZoom] / 
   m_currentZoom = factor;
   m_trackview->setScale(m_scale);
+  m_trackview->setCursorPos(pos * m_scale, false);
+  m_ruler->slotNewValue(pos * FRAME_SIZE, false);
   m_trackview->centerOn(QPointF(m_trackview->cursorPos(), 50));
 }