When setting the duration of a TimeAxisViewItem, do not round before computing pixel width
This commit is contained in:
parent
baf10dc4e3
commit
9090057f6e
@ -317,7 +317,6 @@ TimeAxisViewItem::set_position(framepos_t pos, void* src, double* delta)
|
||||
}
|
||||
|
||||
group->set_x_position (new_unit_pos);
|
||||
|
||||
PositionChanged (frame_position, src); /* EMIT_SIGNAL */
|
||||
|
||||
return true;
|
||||
@ -355,7 +354,10 @@ TimeAxisViewItem::set_duration (framecnt_t dur, void* src)
|
||||
|
||||
item_duration = dur;
|
||||
|
||||
reset_width_dependent_items (trackview.editor().sample_to_pixel (dur));
|
||||
double end_pixel = trackview.editor().sample_to_pixel (frame_position + dur);
|
||||
double first_pixel = trackview.editor().sample_to_pixel (frame_position);
|
||||
|
||||
reset_width_dependent_items (end_pixel - first_pixel);
|
||||
|
||||
DurationChanged (dur, src); /* EMIT_SIGNAL */
|
||||
return true;
|
||||
@ -820,7 +822,11 @@ TimeAxisViewItem::set_samples_per_pixel (double fpp)
|
||||
{
|
||||
samples_per_pixel = fpp;
|
||||
set_position (this->get_position(), this);
|
||||
reset_width_dependent_items ((double) get_duration() / samples_per_pixel);
|
||||
|
||||
double end_pixel = trackview.editor().sample_to_pixel (frame_position + get_duration());
|
||||
double first_pixel = trackview.editor().sample_to_pixel (frame_position);
|
||||
|
||||
reset_width_dependent_items (end_pixel - first_pixel);
|
||||
}
|
||||
|
||||
void
|
||||
@ -862,6 +868,9 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width)
|
||||
|
||||
if (frame) {
|
||||
frame->show();
|
||||
/* Note: x0 is always zero - the position is defined by
|
||||
* the position of the group, not the frame.
|
||||
*/
|
||||
frame->set_x1 (pixel_width);
|
||||
|
||||
if (selection_frame) {
|
||||
|
Loading…
Reference in New Issue
Block a user