From 1ceae828c58b84071aa9579d01570fbafbf46fe0 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sat, 29 Aug 2009 00:38:25 +0000 Subject: [PATCH] improve keyframe grabbing in timeline svn path=/trunk/kdenlive/; revision=3852 --- src/abstractclipitem.cpp | 6 +++--- src/abstractclipitem.h | 2 +- src/clipitem.cpp | 7 +++---- src/customtrackview.cpp | 1 + 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/abstractclipitem.cpp b/src/abstractclipitem.cpp index fd6828bc..90b0c8fc 100644 --- a/src/abstractclipitem.cpp +++ b/src/abstractclipitem.cpp @@ -245,9 +245,9 @@ void AbstractClipItem::drawKeyFrames(QPainter *painter, QRectF /*exposedRect*/) } } -int AbstractClipItem::mouseOverKeyFrames(QPointF pos) +int AbstractClipItem::mouseOverKeyFrames(QPointF pos, double maxOffset) { - QRectF br = sceneBoundingRect(); + const QRectF br = sceneBoundingRect(); double maxw = br.width() / cropDuration().frames(m_fps); double maxh = br.height() / 100.0 * m_keyframeFactor; if (m_keyframes.count() > 1) { @@ -257,7 +257,7 @@ int AbstractClipItem::mouseOverKeyFrames(QPointF pos) while (i != m_keyframes.constEnd()) { x1 = br.x() + maxw * (i.key() - cropStart().frames(m_fps)); y1 = br.bottom() - i.value() * maxh; - if (qAbs(pos.x() - x1) < 6 && qAbs(pos.y() - y1) < 6) { + if (qAbs(pos.x() - x1) < maxOffset && qAbs(pos.y() - y1) < 10) { setToolTip('[' + QString::number((GenTime(i.key(), m_fps) - cropStart()).seconds(), 'f', 2) + i18n("seconds") + ", " + QString::number(i.value(), 'f', 1) + "%]"); return i.key(); } else if (x1 > pos.x()) break; diff --git a/src/abstractclipitem.h b/src/abstractclipitem.h index f2b3afdb..47a66631 100644 --- a/src/abstractclipitem.h +++ b/src/abstractclipitem.h @@ -74,7 +74,7 @@ protected: double m_fps; //QRect visibleRect(); void drawKeyFrames(QPainter *painter, QRectF exposedRect); - int mouseOverKeyFrames(QPointF pos); + int mouseOverKeyFrames(QPointF pos, double maxOffset); virtual void mousePressEvent(QGraphicsSceneMouseEvent * event); }; diff --git a/src/clipitem.cpp b/src/clipitem.cpp index 0902037f..93470714 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -848,14 +848,13 @@ void ClipItem::paint(QPainter *painter, OPERATIONTYPE ClipItem::operationMode(QPointF pos) { if (isItemLocked()) return NONE; - + const double scale = projectScene()->scale().x(); + double maximumOffset = 6 / scale; if (isSelected() || (parentItem() && parentItem()->isSelected())) { - m_editedKeyframe = mouseOverKeyFrames(pos); + m_editedKeyframe = mouseOverKeyFrames(pos, maximumOffset); if (m_editedKeyframe != -1) return KEYFRAME; } QRectF rect = sceneBoundingRect(); - const double scale = projectScene()->scale().x(); - double maximumOffset = 6 / scale; int addtransitionOffset = 10; // Don't allow add transition if track height is very small if (rect.height() < 30) addtransitionOffset = 0; diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index b3e6d58c..5db740d3 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -3970,6 +3970,7 @@ void CustomTrackView::setScale(double scaleFactor, double verticalScale) m_animation = NULL; double verticalPos = mapToScene(QPoint(0, viewport()->height() / 2)).y(); setMatrix(matrix); + m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), m_tracksHeight * m_document->tracksCount() * verticalScale); int diff = sceneRect().width() - m_projectDuration; if (diff * matrix.m11() < 50) { if (matrix.m11() < 0.4) setSceneRect(0, 0, (m_projectDuration + 100 / matrix.m11()), sceneRect().height()); -- 2.39.2