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);
|
group->set_x_position (new_unit_pos);
|
||||||
|
|
||||||
PositionChanged (frame_position, src); /* EMIT_SIGNAL */
|
PositionChanged (frame_position, src); /* EMIT_SIGNAL */
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -355,7 +354,10 @@ TimeAxisViewItem::set_duration (framecnt_t dur, void* src)
|
||||||
|
|
||||||
item_duration = dur;
|
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 */
|
DurationChanged (dur, src); /* EMIT_SIGNAL */
|
||||||
return true;
|
return true;
|
||||||
|
@ -820,7 +822,11 @@ TimeAxisViewItem::set_samples_per_pixel (double fpp)
|
||||||
{
|
{
|
||||||
samples_per_pixel = fpp;
|
samples_per_pixel = fpp;
|
||||||
set_position (this->get_position(), this);
|
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
|
void
|
||||||
|
@ -862,6 +868,9 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width)
|
||||||
|
|
||||||
if (frame) {
|
if (frame) {
|
||||||
frame->show();
|
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);
|
frame->set_x1 (pixel_width);
|
||||||
|
|
||||||
if (selection_frame) {
|
if (selection_frame) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user