diff options
Diffstat (limited to 'gtk2_ardour/editor.cc')
-rw-r--r-- | gtk2_ardour/editor.cc | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 2c3babb9c8..d0664b09ad 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -313,10 +313,8 @@ Editor::Editor () bbt_beat_subdivision = 4; _visible_canvas_width = 0; _visible_canvas_height = 0; - last_autoscroll_x = 0; - last_autoscroll_y = 0; - autoscroll_active = false; - autoscroll_timeout_tag = -1; + autoscroll_horizontal_allowed = false; + autoscroll_vertical_allowed = false; logo_item = 0; analysis_window = 0; @@ -4291,35 +4289,45 @@ Editor::idle_visual_changer () pending_visual_change.idle_handler_id = -1; pending_visual_change.being_handled = true; - VisualChange::Type p = pending_visual_change.pending; + VisualChange vc = pending_visual_change; + pending_visual_change.pending = (VisualChange::Type) 0; - double const last_time_origin = horizontal_position (); + visual_changer (vc); + pending_visual_change.being_handled = false; - if (p & VisualChange::ZoomLevel) { - set_samples_per_pixel (pending_visual_change.samples_per_pixel); + return 0; /* this is always a one-shot call */ +} + +void +Editor::visual_changer (const VisualChange& vc) +{ + double const last_time_origin = horizontal_position (); + + if (vc.pending & VisualChange::ZoomLevel) { + set_samples_per_pixel (vc.samples_per_pixel); compute_fixed_ruler_scale (); ARDOUR::TempoMap::BBTPointList::const_iterator current_bbt_points_begin; ARDOUR::TempoMap::BBTPointList::const_iterator current_bbt_points_end; - compute_current_bbt_points (pending_visual_change.time_origin, pending_visual_change.time_origin + current_page_samples(), + compute_current_bbt_points (vc.time_origin, pending_visual_change.time_origin + current_page_samples(), current_bbt_points_begin, current_bbt_points_end); - compute_bbt_ruler_scale (pending_visual_change.time_origin, pending_visual_change.time_origin + current_page_samples(), + compute_bbt_ruler_scale (vc.time_origin, pending_visual_change.time_origin + current_page_samples(), current_bbt_points_begin, current_bbt_points_end); update_tempo_based_rulers (current_bbt_points_begin, current_bbt_points_end); update_video_timeline(); } - if (p & VisualChange::TimeOrigin) { - set_horizontal_position (pending_visual_change.time_origin / samples_per_pixel); + if (vc.pending & VisualChange::TimeOrigin) { + set_horizontal_position (vc.time_origin / samples_per_pixel); } - if (p & VisualChange::YOrigin) { - vertical_adjustment.set_value (pending_visual_change.y_origin); + if (vc.pending & VisualChange::YOrigin) { + vertical_adjustment.set_value (vc.y_origin); } if (last_time_origin == horizontal_position ()) { @@ -4328,14 +4336,11 @@ Editor::idle_visual_changer () redisplay_tempo (true); } - if (!(p & VisualChange::ZoomLevel)) { + if (!(vc.pending & VisualChange::ZoomLevel)) { update_video_timeline(); } _summary->set_overlays_dirty (); - - pending_visual_change.being_handled = false; - return 0; /* this is always a one-shot call */ } struct EditorOrderTimeAxisSorter { |