From b2df7711494a9414ecfaad3b1fa1cefe3a34aca2 Mon Sep 17 00:00:00 2001 From: Joel Holdsworth Date: Tue, 15 Jul 2008 18:36:43 +0100 Subject: [PATCH] Converted mouse chevron to use pixels not time values --- src/gui/widgets/timeline-widget.cpp | 2 +- src/gui/widgets/timeline/timeline-ruler.cpp | 35 +++++++++------------ src/gui/widgets/timeline/timeline-ruler.hpp | 11 +++++-- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/gui/widgets/timeline-widget.cpp b/src/gui/widgets/timeline-widget.cpp index 38210a29d..f7b5db81b 100644 --- a/src/gui/widgets/timeline-widget.cpp +++ b/src/gui/widgets/timeline-widget.cpp @@ -210,7 +210,7 @@ TimelineWidget::zoom_view(int point, int zoom_size) void TimelineWidget::on_mouse_move_in_body(int x, int y) { - ruler.set_mouse_chevron_time(x * timeScale + timeOffset); + ruler.set_mouse_chevron_offset(x); } } // namespace widgets diff --git a/src/gui/widgets/timeline/timeline-ruler.cpp b/src/gui/widgets/timeline/timeline-ruler.cpp index 3033ba58d..44cf4e307 100644 --- a/src/gui/widgets/timeline/timeline-ruler.cpp +++ b/src/gui/widgets/timeline/timeline-ruler.cpp @@ -43,16 +43,15 @@ namespace timeline { TimelineRuler::TimelineRuler() : Glib::ObjectBase("TimelineRuler"), - timeOffset(0), + timeOffset(-1), timeScale(1), - mouseChevronTime(0), + mouseChevronOffset(0), annotationHorzMargin(0), annotationVertMargin(0), majorTickHeight(0), minorLongTickHeight(0), minorShortTickHeight(0), - minDivisionWidth(100), - mouseChevronSize(0) + minDivisionWidth(100) { // Install style properties register_styles(); @@ -60,10 +59,7 @@ TimelineRuler::TimelineRuler() : void TimelineRuler::set_time_offset(gavl_time_t time_offset) -{ - // Keep the chevron position lined up - mouseChevronTime += time_offset - timeOffset; - +{ timeOffset = time_offset; rulerImage.clear(); queue_draw(); @@ -73,20 +69,15 @@ void TimelineRuler::set_time_scale(int64_t time_scale) { REQUIRE(time_scale > 0); - - // Keep the chevron position lined up - mouseChevronTime = - (time_scale * (mouseChevronTime - timeOffset)) / timeScale + timeOffset; - timeScale = time_scale; rulerImage.clear(); queue_draw(); } void -TimelineRuler::set_mouse_chevron_time(gavl_time_t time) +TimelineRuler::set_mouse_chevron_offset(int offset) { - mouseChevronTime = time; + mouseChevronOffset = offset; queue_draw(); } @@ -152,7 +143,7 @@ TimelineRuler::on_motion_notify_event(GdkEventMotion *event) { REQUIRE(event != NULL); - set_mouse_chevron_time(event->x * timeScale + timeOffset); + set_mouse_chevron_offset(event->x); return true; } @@ -256,16 +247,20 @@ TimelineRuler::draw_mouse_chevron(Cairo::RefPtr cairo, REQUIRE(ruler_rect.get_width() > 0); REQUIRE(ruler_rect.get_height() > 0); + // Is the mouse chevron in view? + if(mouseChevronOffset < 0 || + mouseChevronOffset >= ruler_rect.get_width()) + return; + // Set the source colour Glib::RefPtr