fix various issues when deleting midi region during step-edit
authorRobin Gareus <robin@gareus.org>
Sat, 4 Jul 2015 10:33:10 +0000 (12:33 +0200)
committerRobin Gareus <robin@gareus.org>
Sat, 4 Jul 2015 10:33:10 +0000 (12:33 +0200)
fixes #6404

gtk2_ardour/step_editor.cc

index 63d706672d8034422b3cbcf135a1794db46578e5..a1beefb30c63e5032aa52224c0e47e0e70f20f91 100644 (file)
@@ -226,6 +226,9 @@ StepEditor::step_edit_sustain (Evoral::Beats beats)
 void
 StepEditor::move_step_edit_beat_pos (Evoral::Beats beats)
 {
+       if (!step_edit_region_view) {
+               return;
+       }
        if (beats > 0.0) {
                step_edit_beat_pos = min (step_edit_beat_pos + beats,
                                          step_edit_region_view->region_frames_to_region_beats (step_edit_region->length()));
@@ -356,8 +359,10 @@ StepEditor::step_edit_toggle_chord ()
 {
        if (_step_edit_within_chord) {
                _step_edit_within_chord = false;
-               step_edit_beat_pos += _step_edit_chord_duration;
-               step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
+               if (step_edit_region_view) {
+                       step_edit_beat_pos += _step_edit_chord_duration;
+                       step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
+               }
        } else {
                _step_edit_triplet_countdown = 0;
                _step_edit_within_chord = true;
@@ -375,7 +380,7 @@ StepEditor::step_edit_rest (Evoral::Beats beats)
                success = true;
        }
 
-       if (success) {
+       if (success && step_edit_region_view) {
                step_edit_beat_pos += beats;
                step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
        }
@@ -385,7 +390,9 @@ void
 StepEditor::step_edit_beat_sync ()
 {
        step_edit_beat_pos = step_edit_beat_pos.round_up_to_beat();
-       step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
+       if (step_edit_region_view) {
+               step_edit_region_view->move_step_edit_cursor (step_edit_beat_pos);
+       }
 }
 
 void