make step edit cursor follow zoom (and change its color a bit)
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 11 Aug 2010 20:16:39 +0000 (20:16 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 11 Aug 2010 20:16:39 +0000 (20:16 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@7601 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/midi_region_view.cc
gtk2_ardour/midi_region_view.h

index 7438e3e862d41a8ac1fc0f20373f51b47c8fdf52..52b2150de4d93669660acf2b9f9205c251851010 100644 (file)
@@ -90,6 +90,7 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &
         , _drag_rect (0)
         , _step_edit_cursor (0)
         , _step_edit_cursor_width (1.0)
+        , _step_edit_cursor_position (0.0)
        , _mouse_state(None)
        , _pressed_button(0)
        , _sort_needed (true)
@@ -1132,6 +1133,9 @@ MidiRegionView::reset_width_dependent_items (double pixel_width)
        if (_enable_display) {
                redisplay_model();
        }
+        
+        move_step_edit_cursor (_step_edit_cursor_position);
+        set_step_edit_cursor_width (_step_edit_cursor_width);
 }
 
 void
@@ -3002,10 +3006,12 @@ MidiRegionView::show_step_edit_cursor (Evoral::MusicalTime pos)
 void
 MidiRegionView::move_step_edit_cursor (Evoral::MusicalTime pos)
 {
+        _step_edit_cursor_position = pos;
+
         if (_step_edit_cursor) {
                 double pixel = trackview.editor().frame_to_pixel (beats_to_frames (pos));
                 _step_edit_cursor->property_x1() = pixel;
-                _step_edit_cursor->property_x2() = pixel + _step_edit_cursor_width;
+                set_step_edit_cursor_width (_step_edit_cursor_width);
         }
 }
 
@@ -3020,7 +3026,10 @@ MidiRegionView::hide_step_edit_cursor ()
 void
 MidiRegionView::set_step_edit_cursor_width (Evoral::MusicalTime beats)
 {
-        _step_edit_cursor_width = trackview.editor().frame_to_pixel (beats_to_frames (beats));
-        _step_edit_cursor->property_x2() = _step_edit_cursor->property_x1() + _step_edit_cursor_width;
+        _step_edit_cursor_width = beats;
+
+        if (_step_edit_cursor) {
+                _step_edit_cursor->property_x2() = _step_edit_cursor->property_x1() + trackview.editor().frame_to_pixel (beats_to_frames (beats));
+        }
 }
 
index e153646ae4a702ac54c06bf44415621ee941865c..268bcdc0dd8a772d3e2cbf38b6a51e1769d295f6 100644 (file)
@@ -369,7 +369,8 @@ class MidiRegionView : public RegionView
         double                               _last_y;
        ArdourCanvas::SimpleRect*            _drag_rect;
         ArdourCanvas::SimpleRect*            _step_edit_cursor;
-        double                               _step_edit_cursor_width;
+        Evoral::MusicalTime                  _step_edit_cursor_width;
+        Evoral::MusicalTime                  _step_edit_cursor_position;
         
        MouseState _mouse_state;
        int _pressed_button;