]> git.sesse.net Git - kdenlive/blobdiff - src/smallruler.cpp
Correctly reload clip on force full luma:
[kdenlive] / src / smallruler.cpp
index ae0901814bb81752811acedc02ffe2b4d4523151..24a016dd30ee2d2aeac4ef09a3199ca34d7c55ff 100644 (file)
@@ -39,6 +39,7 @@ SmallRuler::SmallRuler(MonitorManager *manager, Render *render, QWidget *parent)
         ,m_manager(manager)
        ,m_render(render)
        ,m_lastSeekPosition(SEEK_INACTIVE)
+       ,m_cursorColor(palette().text())
 {
     m_zoneStart = 10;
     m_zoneEnd = 60;
@@ -106,7 +107,7 @@ void SmallRuler::setZone(int start, int end)
     updatePixmap();
 }
 
-void SmallRuler::setMarkers(QList < int > list)
+void SmallRuler::setMarkers(QList < CommentedTime > list)
 {
     m_markers = list;
     updatePixmap();
@@ -135,10 +136,20 @@ void SmallRuler::mousePressEvent(QMouseEvent * event)
     }
 }
 
+// virtual
+void SmallRuler::leaveEvent(QEvent * event)
+{
+    QWidget::leaveEvent(event);
+    if (m_cursorColor == palette().highlight()) {
+       m_cursorColor = palette().text();
+       update();
+    }
+}
 
 // virtual
 void SmallRuler::mouseMoveEvent(QMouseEvent * event)
 {
+    QWidget::mouseMoveEvent(event);
     const int pos = event->x() / m_scale;
     if (event->buttons() & Qt::LeftButton) {
        m_render->seekToFrame(pos);
@@ -146,6 +157,15 @@ void SmallRuler::mouseMoveEvent(QMouseEvent * event)
        update();
     }
     else {
+       if (m_cursorColor == palette().text() && qAbs(pos - m_cursorFramePosition) * m_scale < 7) {
+           // Mouse is over cursor
+           m_cursorColor = palette().highlight();
+           update();
+       }
+       else if (m_cursorColor == palette().highlight() && qAbs(pos - m_cursorFramePosition) * m_scale >= 7) {
+           m_cursorColor = palette().text();
+           update();
+       }
         if (qAbs((pos - m_zoneStart) * m_scale) < 4) {
             setToolTip(i18n("Zone start: %1", m_manager->timecode().getTimecodeFromFrames(m_zoneStart)));
         } else if (qAbs((pos - m_zoneEnd) * m_scale) < 4) {
@@ -164,9 +184,6 @@ void SmallRuler::refreshRuler()
 
 bool SmallRuler::slotNewValue(int value)
 {
-    if (m_render->requestedSeekPosition != SEEK_INACTIVE) {
-       m_lastSeekPosition = m_render->requestedSeekPosition;
-    }
     if (value == m_cursorFramePosition) return false;
     if (value == m_lastSeekPosition) m_lastSeekPosition = SEEK_INACTIVE;
     m_cursorFramePosition = value;
@@ -216,9 +233,10 @@ void SmallRuler::updatePixmap()
     }
     // draw markers
     if (!m_markers.isEmpty()) {
-        p.setPen(Qt::red);
         for (int i = 0; i < m_markers.count(); i++) {
-            p.drawLine(m_markers.at(i) * m_scale, 0, m_markers.at(i) * m_scale, 9);
+           int pos = m_markers.at(i).time().frames(m_manager->timecode().fps()) * m_scale;
+           p.setPen(CommentedTime::markerColor(m_markers.at(i).markerType()));
+            p.drawLine(pos, 0, pos, 9);
         }
     }
     p.end();
@@ -238,7 +256,7 @@ void SmallRuler::paintEvent(QPaintEvent *e)
     // draw pointer
     QPolygon pa(3);
     pa.setPoints(3, cursorPos - 6, 10, cursorPos + 6, 10, cursorPos/*+0*/, 4);
-    p.setBrush(palette().text());
+    p.setBrush(m_cursorColor);
     p.setPen(Qt::NoPen);
     p.drawPolygon(pa);