From: <j-...@us...> - 2009-08-29 00:38:33
|
Revision: 3852 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3852&view=rev Author: j-b-m Date: 2009-08-29 00:38:25 +0000 (Sat, 29 Aug 2009) Log Message: ----------- improve keyframe grabbing in timeline Modified Paths: -------------- trunk/kdenlive/src/abstractclipitem.cpp trunk/kdenlive/src/abstractclipitem.h trunk/kdenlive/src/clipitem.cpp trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/abstractclipitem.cpp =================================================================== --- trunk/kdenlive/src/abstractclipitem.cpp 2009-08-29 00:09:52 UTC (rev 3851) +++ trunk/kdenlive/src/abstractclipitem.cpp 2009-08-29 00:38:25 UTC (rev 3852) @@ -245,9 +245,9 @@ } } -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 @@ 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; Modified: trunk/kdenlive/src/abstractclipitem.h =================================================================== --- trunk/kdenlive/src/abstractclipitem.h 2009-08-29 00:09:52 UTC (rev 3851) +++ trunk/kdenlive/src/abstractclipitem.h 2009-08-29 00:38:25 UTC (rev 3852) @@ -74,7 +74,7 @@ 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); }; Modified: trunk/kdenlive/src/clipitem.cpp =================================================================== --- trunk/kdenlive/src/clipitem.cpp 2009-08-29 00:09:52 UTC (rev 3851) +++ trunk/kdenlive/src/clipitem.cpp 2009-08-29 00:38:25 UTC (rev 3852) @@ -848,14 +848,13 @@ 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; Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-08-29 00:09:52 UTC (rev 3851) +++ trunk/kdenlive/src/customtrackview.cpp 2009-08-29 00:38:25 UTC (rev 3852) @@ -3970,6 +3970,7 @@ 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()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |