From: <tt...@us...> - 2011-02-21 17:11:11
|
Revision: 5446 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5446&view=rev Author: ttill Date: 2011-02-21 17:11:05 +0000 (Mon, 21 Feb 2011) Log Message: ----------- rotoscoping: - fix keyframe deletion - allow to add/remove keyframes with double click in the keyframe timeline Modified Paths: -------------- trunk/kdenlive/src/onmonitoritems/rotoscoping/splineitem.cpp trunk/kdenlive/src/rotoscoping/rotowidget.cpp trunk/kdenlive/src/simplekeyframes/simpletimelinewidget.cpp trunk/kdenlive/src/simplekeyframes/simpletimelinewidget.h Modified: trunk/kdenlive/src/onmonitoritems/rotoscoping/splineitem.cpp =================================================================== --- trunk/kdenlive/src/onmonitoritems/rotoscoping/splineitem.cpp 2011-02-21 16:05:48 UTC (rev 5445) +++ trunk/kdenlive/src/onmonitoritems/rotoscoping/splineitem.cpp 2011-02-21 17:11:05 UTC (rev 5446) @@ -55,7 +55,7 @@ SplineItem::SplineItem(const QList< BPoint >& points, QGraphicsItem* parent, QGraphicsScene *scene) : QGraphicsPathItem(parent, scene), - m_closed(false), + m_closed(true), m_editing(false) { QPen framepen(Qt::SolidLine); @@ -113,7 +113,7 @@ m_closed = false; grabMouse(); return; - } else { + } else if (!m_closed) { ungrabMouse(); m_closed = true; } Modified: trunk/kdenlive/src/rotoscoping/rotowidget.cpp =================================================================== --- trunk/kdenlive/src/rotoscoping/rotowidget.cpp 2011-02-21 16:05:48 UTC (rev 5445) +++ trunk/kdenlive/src/rotoscoping/rotowidget.cpp 2011-02-21 17:11:05 UTC (rev 5446) @@ -270,12 +270,15 @@ if (!m_data.canConvert(QVariant::Map) || m_data.toMap().count() < 2) return; - m_data.toMap().remove(QString::number(pos - m_in).rightJustified(qRound(log10((double)m_out)), '0')); + QMap<QString, QVariant> map = m_data.toMap(); + map.remove(QString::number(pos + m_in).rightJustified(qRound(log10((double)m_out)), '0')); + m_data = QVariant(map); if (m_data.toMap().count() == 1) m_data = m_data.toMap().begin().value(); slotPositionChanged(m_keyframeWidget->getPosition(), false); + emit valueChanged(); } void RotoWidget::slotMoveKeyframe(int oldPos, int newPos) Modified: trunk/kdenlive/src/simplekeyframes/simpletimelinewidget.cpp =================================================================== --- trunk/kdenlive/src/simplekeyframes/simpletimelinewidget.cpp 2011-02-21 16:05:48 UTC (rev 5445) +++ trunk/kdenlive/src/simplekeyframes/simpletimelinewidget.cpp 2011-02-21 17:11:05 UTC (rev 5446) @@ -199,6 +199,29 @@ } } +void SimpleTimelineWidget::mouseDoubleClickEvent(QMouseEvent* event) +{ + if (event->button() == Qt::LeftButton && event->y() < m_lineHeight) { + int pos = qBound(0, (int)(event->x() / m_scale), m_duration); + foreach(const int &keyframe, m_keyframes) { + if (qAbs(keyframe - pos) < 5) { + m_keyframes.removeAll(keyframe); + if (keyframe == m_currentKeyframe) + m_currentKeyframe = m_currentKeyframeOriginal = -1; + emit keyframeRemoved(keyframe); + return; + } + } + + // add new keyframe + m_keyframes.append(pos); + qSort(m_keyframes); + emit keyframeAdded(pos); + } else { + QWidget::mouseDoubleClickEvent(event); + } +} + void SimpleTimelineWidget::wheelEvent(QWheelEvent* event) { int change = event->delta() < 0 ? -1 : 1; Modified: trunk/kdenlive/src/simplekeyframes/simpletimelinewidget.h =================================================================== --- trunk/kdenlive/src/simplekeyframes/simpletimelinewidget.h 2011-02-21 16:05:48 UTC (rev 5445) +++ trunk/kdenlive/src/simplekeyframes/simpletimelinewidget.h 2011-02-21 17:11:05 UTC (rev 5446) @@ -44,7 +44,7 @@ virtual void mousePressEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); - //virtual void mouseDoubleClickEvent(QMouseEvent *event); + virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void wheelEvent(QWheelEvent *event); private: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |