X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_cursors.cc;h=557120c1db783b54fcd799816ab6d2fe8549c56b;hb=1676789907b95aa8d5bf6cc2ce62aa66a80b9aae;hp=4a123f1e7951a43f0e8d825cfe3670b7e6664dec;hpb=30968b854257cb5f9159ca59589f783c85615601;p=ardour.git diff --git a/gtk2_ardour/editor_cursors.cc b/gtk2_ardour/editor_cursors.cc index 4a123f1e79..557120c1db 100644 --- a/gtk2_ardour/editor_cursors.cc +++ b/gtk2_ardour/editor_cursors.cc @@ -21,6 +21,7 @@ #include #include "canvas/canvas.h" +#include "canvas/debug.h" #include "utils.h" #include "editor_cursors.h" @@ -36,18 +37,19 @@ EditorCursor::EditorCursor (Editor& ed, bool (Editor::*callbck)(GdkEvent*,Ardour , _track_canvas_item (_editor._track_canvas->root ()) , _length (1.0) { - _time_bars_canvas_item.set_outline_width (1); - _track_canvas_item.set_outline_width (1); - - for (int i = 0; i < 2; ++i) { - _time_bars_canvas_item.set_show_head (i, true); - _time_bars_canvas_item.set_head_height (i, 18); - _time_bars_canvas_item.set_head_width (i, 15); - _time_bars_canvas_item.set_head_outward (i, false); - } + CANVAS_DEBUG_NAME ((&_time_bars_canvas_item), "timebars editor cursor"); + CANVAS_DEBUG_NAME ((&_track_canvas_item), "track canvas editor cursor"); + + _time_bars_canvas_item.set_show_head (0, true); + _time_bars_canvas_item.set_head_height (0, 9); + _time_bars_canvas_item.set_head_width (0, 16); + _time_bars_canvas_item.set_head_outward (0, false); + _time_bars_canvas_item.set_show_head (1, false); // head only + _time_bars_canvas_item.set_outline_width (0.5); _time_bars_canvas_item.set_data ("cursor", this); _track_canvas_item.set_data ("cursor", this); + _track_canvas_item.set_outline_width (0.5); _time_bars_canvas_item.Event.connect (sigc::bind (sigc::mem_fun (ed, callbck), &_time_bars_canvas_item)); _track_canvas_item.Event.connect (sigc::bind (sigc::mem_fun (ed, callbck), &_track_canvas_item)); @@ -68,15 +70,18 @@ EditorCursor::set_position (framepos_t frame) { PositionChanged (frame); - double const new_pos = _editor.frame_to_unit (frame); + /* See Cairo FAQ question on single pixel lines to understand + why we add 0.5 + */ + + double const new_pos = _editor.sample_to_pixel (frame) + 0.5; if (new_pos != _time_bars_canvas_item.x ()) { _time_bars_canvas_item.set_x (new_pos); } if (new_pos != _track_canvas_item.x0 ()) { - _track_canvas_item.set_x0 (new_pos); - _track_canvas_item.set_x1 (new_pos); + _track_canvas_item.set_x (new_pos, new_pos); } _current_frame = frame;