]> git.sesse.net Git - kdenlive/blobdiff - src/customruler.cpp
Freesound: save audio file url in clip comment (for attribution)
[kdenlive] / src / customruler.cpp
index 994803b721c43d14499b2ac86a5d0ee7e11aeb83..e173297466794337bbdcb9a7ea1734baeaf6f8c9 100644 (file)
@@ -43,6 +43,7 @@ static const int LITTLE_MARK_LENGTH = (MIDDLE_MARK_LENGTH / 2);
 static const int LITTLE_MARK_X2 = LINE_END;
 static const int LITTLE_MARK_X1 = (LITTLE_MARK_X2 - LITTLE_MARK_LENGTH);
 
+static int FRAME_SIZE;
 static int LABEL_SIZE;
 static const int END_LABEL_X = 4;
 static const int END_LABEL_Y = (END_LABEL_X + LABEL_SIZE - 2);
@@ -62,16 +63,15 @@ CustomRuler::CustomRuler(Timecode tc, CustomTrackView *parent) :
         m_duration(0),
         m_offset(0),
         m_clickedGuide(-1),
+        m_rate(-1),
         m_mouseMove(NO_MOVE)
 {
     setFont(KGlobalSettings::toolBarFont());
     QFontMetricsF fontMetrics(font());
     LABEL_SIZE = fontMetrics.ascent() - 2;
+    updateFrameSize();
     m_scale = 3;
     m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
-    littleMarkDistance = FRAME_SIZE;
-    mediumMarkDistance = FRAME_SIZE * m_timecode.fps();
-    bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60;
     m_zoneStart = 0;
     m_zoneEnd = 100;
     m_contextMenu = new QMenu(this);
@@ -97,6 +97,16 @@ void CustomRuler::updateProjectFps(Timecode t)
     update();
 }
 
+void CustomRuler::updateFrameSize()
+{
+    FRAME_SIZE = m_view->getFrameWidth();
+    littleMarkDistance = FRAME_SIZE;
+    mediumMarkDistance = FRAME_SIZE * m_timecode.fps();
+    bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60;
+    updateProjectFps(m_timecode);
+    if (m_rate > 0) setPixelPerMark(m_rate);
+}
+
 void CustomRuler::slotEditGuide()
 {
     m_view->slotEditGuide(m_clickedGuide);
@@ -122,7 +132,12 @@ void CustomRuler::setZone(QPoint p)
 
 void CustomRuler::mouseReleaseEvent(QMouseEvent * /*event*/)
 {
+    if (m_moveCursor == RULER_START || m_moveCursor == RULER_END || m_moveCursor == RULER_MIDDLE) {
+        emit zoneMoved(m_zoneStart, m_zoneEnd);
+        m_view->setDocumentModified();
+    }
     m_mouseMove = NO_MOVE;
+
 }
 
 // virtual
@@ -189,8 +204,6 @@ void CustomRuler::mouseMoveEvent(QMouseEvent * event)
             m_zoneStart += move;
             m_zoneEnd += move;
         }
-        emit zoneMoved(m_zoneStart, m_zoneEnd);
-        m_view->setDocumentModified();
 
         int min = qMin(m_zoneStart, zoneStart);
         int max = qMax(m_zoneEnd, zoneEnd);