+ event->accept();
+ return;
+ }
+ if (m_movingKeyframe) {
+ if (!m_dragStart.isNull()) {
+ if ((event->pos() - m_dragStart).manhattanLength() < QApplication::startDragDistance()) return;
+ m_dragStart = QPoint();
+ m_geom->remove(m_movingItem.frame());
+ for (int i = 0; i < m_extraGeometries.count(); i++)
+ m_extraGeometries[i]->remove(m_movingItem.frame());
+ }
+ int pos = qBound(0, (int)(event->x() / m_scale), frameLength);
+ if (KdenliveSettings::snaptopoints() && qAbs(pos - m_position) < 5) pos = m_position;
+ m_movingItem.frame(pos);
+ for (int i = 0; i < m_extraMovingItems.count(); i++) {
+ m_extraMovingItems[i]->frame(pos);
+ }
+ update();
+ return;
+ }
+ m_position = event->x() / m_scale;
+ m_position = qMax(0, m_position);
+ m_position = qMin(frameLength, m_position);
+ emit positionChanged(m_position);
+ update();
+}
+
+void KeyframeHelper::mouseDoubleClickEvent(QMouseEvent * event)
+{
+ if (m_geom != NULL && event->button() == Qt::LeftButton) {
+ // check if we want to move a keyframe
+ int mousePos = qMax((int)(event->x() / m_scale - 5), 0);
+ Mlt::GeometryItem item;
+ if (m_geom->next_key(&item, mousePos) == 0 && item.frame() - mousePos < 10) {
+ // There is already a keyframe close to mouse click
+ emit removeKeyframe(item.frame());
+ return;
+ }
+ // add new keyframe
+ emit addKeyframe((int)(event->x() / m_scale));
+ }