]> git.sesse.net Git - kdenlive/commitdiff
Highlight ruler cursor on mouseover: http://kdenlive.org/mantis/view.php?id=2786
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 23 Oct 2012 22:38:50 +0000 (00:38 +0200)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 23 Oct 2012 22:38:50 +0000 (00:38 +0200)
src/customruler.cpp
src/customruler.h
src/smallruler.cpp
src/smallruler.h

index 1a32d778cd223dbd84a25a155b0d7b3a2729ed98..824856653f1cca9e1a66c9e3e9f42840e67a41fd 100644 (file)
@@ -59,7 +59,8 @@ CustomRuler::CustomRuler(Timecode tc, CustomTrackView *parent) :
         m_lastSeekPosition(SEEK_INACTIVE),
         m_clickedGuide(-1),
         m_rate(-1),
-        m_mouseMove(NO_MOVE)
+        m_mouseMove(NO_MOVE),
+        m_cursorColor(palette().text())
 {
     setFont(KGlobalSettings::toolBarFont());
     QFontMetricsF fontMetrics(font());
@@ -216,7 +217,17 @@ void CustomRuler::mouseMoveEvent(QMouseEvent * event)
         update(min * m_factor - m_offset - 2, 0, (max - min) * m_factor + 4, height());
 
     } else {
-        int pos = (int)((event->x() + offset()));
+        int pos = (int)((event->x() + m_offset));
+       if (m_cursorColor == palette().text() && qAbs(pos - m_view->cursorPos() * m_factor) < 7) {
+           // Mouse is over cursor
+           m_cursorColor = palette().highlight();
+           update(m_view->cursorPos() * m_factor - m_offset - 10, 0, 20, height());
+       }
+       else if (m_cursorColor == palette().highlight() && qAbs(pos - m_view->cursorPos() * m_factor) >= 7) {
+           m_cursorColor = palette().text();
+           update(m_view->cursorPos() * m_factor - m_offset - 10, 0, 20, height());
+       }
+       
         if (event->y() <= 10) setCursor(Qt::ArrowCursor);
         else if (qAbs(pos - m_zoneStart * m_factor) < 4) {
             setCursor(KCursor("left_side", Qt::SizeHorCursor));
@@ -239,6 +250,16 @@ void CustomRuler::mouseMoveEvent(QMouseEvent * event)
 }
 
 
+// virtual
+void CustomRuler::leaveEvent(QEvent * event)
+{
+    QWidget::leaveEvent(event);
+    if (m_cursorColor == palette().highlight()) {
+       m_cursorColor = palette().text();
+       update();
+    }
+}
+
 // virtual
 void CustomRuler::wheelEvent(QWheelEvent * e)
 {
@@ -282,7 +303,7 @@ void CustomRuler::slotCursorMoved(int oldpos, int newpos)
            max = qMax(max, m_lastSeekPosition);
        }
     }
-    update(min * m_factor - offset() - 6, BIG_MARK_X, (max - min) * m_factor + 14, MAX_HEIGHT - BIG_MARK_X);
+    update(min * m_factor - m_offset - 6, BIG_MARK_X, (max - min) * m_factor + 14, MAX_HEIGHT - BIG_MARK_X);
 }
 
 void CustomRuler::updateRuler()
@@ -461,7 +482,7 @@ void CustomRuler::paintEvent(QPaintEvent *e)
     const int value  =  m_view->cursorPos() * m_factor - m_offset;
     QPolygon pa(3);
     pa.setPoints(3, value - 6, BIG_MARK_X, value + 6, BIG_MARK_X, value, MAX_HEIGHT - 1);
-    p.setBrush(palette().text());
+    p.setBrush(m_cursorColor);
     p.setPen(Qt::NoPen);
     p.drawPolygon(pa);
     
index da91fb6bb93f89e29018b38ddbae3d2ee375877e..abdc5944eef98479ba7c088e5f30a50dd0172da7 100644 (file)
@@ -57,6 +57,7 @@ protected:
     virtual void mousePressEvent(QMouseEvent * event);
     virtual void mouseReleaseEvent(QMouseEvent * event);
     virtual void mouseMoveEvent(QMouseEvent * event);
+    virtual void leaveEvent(QEvent * event);
 
 private:
     Timecode m_timecode;
@@ -64,8 +65,6 @@ private:
     int m_zoneStart;
     int m_zoneEnd;
     int m_duration;
-    QColor m_bgColor;
-    QColor m_cursorColor;
     QColor m_zoneColor;
     double m_textSpacing;
     double m_factor;
@@ -83,6 +82,7 @@ private:
     int m_startRate;
     MOUSE_MOVE m_mouseMove;
     QMenu *m_goMenu;
+    QBrush m_cursorColor;
 
 
 public slots:
index 0cf185b05a76c7eaccb4d8128ac5db60f5c3b46c..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;
@@ -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) {
@@ -236,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);
 
index 6080ca2ec05344105dac5c1de26d1132ef747fac..5e0a5736b1b63540a4cd4d566516b805287aee9e 100644 (file)
@@ -47,6 +47,7 @@ public:
 protected:
     virtual void paintEvent(QPaintEvent *e);
     virtual void resizeEvent(QResizeEvent *);
+    virtual void leaveEvent(QEvent * event);
 
 private:
     int m_cursorPosition;
@@ -63,6 +64,7 @@ private:
     MonitorManager *m_manager;
     Render *m_render;
     int m_lastSeekPosition;
+    QBrush m_cursorColor;
     void updatePixmap();
 
 public slots: