From 81d0f8b19a366d86fc6e88a09c8e8da73bdc3224 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sat, 1 Mar 2008 23:40:46 +0000 Subject: [PATCH] Fix timeline scrubbing svn path=/branches/KDE4/; revision=1971 --- src/customtrackview.cpp | 24 ++++++++++++++---------- src/monitor.cpp | 6 +++++- src/trackview.cpp | 5 ++++- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 4f665eb6..b50d1444 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -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, : "<pos()).x()<<", SCAL: "<pos()).y()/50; //) * (m_scale * 50) + m_scale; - kDebug()<<"+++++++++++++ DRAG MOVE, : "<pos()).x()<<", SCAL: "<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: "<track(); + // kDebug()<<"IIIIIIIIIIIIIIIIIIIIIIII TRAX CNT: "<track(); m_document->renderer()->mltInsertClip(m_tracksCount - m_dropItem->track(), GenTime(m_dropItem->startPos(), m_document->fps()), m_dropItem->xml()); } else QGraphicsView::dropEvent(event); diff --git a/src/monitor.cpp b/src/monitor.cpp index c893e1ca..877de78a 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -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: "<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); } diff --git a/src/trackview.cpp b/src/trackview.cpp index 3ba8ef05..23ff6534 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -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)); } -- 2.39.2