summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_region_view.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-09-09 02:09:04 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-09-09 02:09:04 +0000
commit5328a114c93f14178a5d5b97d7a6b95ea007552e (patch)
tree6088a761d83fe6e18529000735cf725c031e9519 /gtk2_ardour/midi_region_view.cc
parent1bf79fa88502a156a71cd3d2de35aa234950c40c (diff)
time line items now have 64 bit location + duration; start making note resize apply across regions
git-svn-id: svn://localhost/ardour2/branches/3.0@5642 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_region_view.cc')
-rw-r--r--gtk2_ardour/midi_region_view.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index b4acdc7f5e..4ef0ead38e 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -1669,6 +1669,13 @@ MidiRegionView::get_position_pixels()
return trackview.editor().frame_to_pixel(region_frame);
}
+double
+MidiRegionView::get_end_position_pixels()
+{
+ nframes64_t frame = get_position() + get_duration ();
+ return trackview.editor().frame_to_pixel(frame);
+}
+
nframes64_t
MidiRegionView::beats_to_frames(double beats) const
{
@@ -1727,7 +1734,6 @@ MidiRegionView::update_resizing (bool at_front, double delta_x, bool relative)
for (std::vector<NoteResizeData *>::iterator i = _resize_data.begin(); i != _resize_data.end(); ++i) {
SimpleRect* resize_rect = (*i)->resize_rect;
CanvasNote* canvas_note = (*i)->canvas_note;
- const double region_start = get_position_pixels();
double current_x;
if (at_front) {
@@ -1735,14 +1741,14 @@ MidiRegionView::update_resizing (bool at_front, double delta_x, bool relative)
current_x = canvas_note->x1() + delta_x;
} else {
// x is in track relative, transform it to region relative
- current_x = delta_x - region_start;
+ current_x = delta_x - get_position_pixels();
}
} else {
if (relative) {
current_x = canvas_note->x2() + delta_x;
} else {
// x is in track relative, transform it to region relative
- current_x = delta_x - region_start;
+ current_x = delta_x - get_end_position_pixels ();
}
}
@@ -1772,14 +1778,14 @@ MidiRegionView::commit_resizing (bool at_front, double delta_x, bool relative)
current_x = canvas_note->x1() + delta_x;
} else {
// x is in track relative, transform it to region relative
- current_x = delta_x - region_start;
+ current_x = region_start + delta_x;
}
} else {
if (relative) {
current_x = canvas_note->x2() + delta_x;
} else {
// x is in track relative, transform it to region relative
- current_x = delta_x - region_start;
+ current_x = region_start + delta_x;
}
}
@@ -1787,7 +1793,6 @@ MidiRegionView::commit_resizing (bool at_front, double delta_x, bool relative)
current_x = frames_to_beats (current_x);
if (at_front && current_x < canvas_note->note()->end_time()) {
-
diff_add_change (canvas_note, MidiModel::DiffCommand::StartTime, current_x);
}