Merge branch 'ardour'
This commit is contained in:
commit
b3b0d16908
@ -306,7 +306,10 @@ Editor::check_marker_label (ArdourMarker* m)
|
|||||||
|
|
||||||
list<ArdourMarker*>::iterator prev = sorted.end ();
|
list<ArdourMarker*>::iterator prev = sorted.end ();
|
||||||
list<ArdourMarker*>::iterator next = i;
|
list<ArdourMarker*>::iterator next = i;
|
||||||
++next;
|
|
||||||
|
if (next != sorted.end()) {
|
||||||
|
++next;
|
||||||
|
}
|
||||||
|
|
||||||
/* Look to see if the previous marker is still behind `m' in time */
|
/* Look to see if the previous marker is still behind `m' in time */
|
||||||
if (i != sorted.begin()) {
|
if (i != sorted.begin()) {
|
||||||
@ -314,7 +317,7 @@ Editor::check_marker_label (ArdourMarker* m)
|
|||||||
prev = i;
|
prev = i;
|
||||||
--prev;
|
--prev;
|
||||||
|
|
||||||
if ((*prev)->position() > m->position()) {
|
if ((*prev)->position() >= m->position()) {
|
||||||
/* This marker is no longer in the correct order with the previous one, so
|
/* This marker is no longer in the correct order with the previous one, so
|
||||||
* update all the markers in this group.
|
* update all the markers in this group.
|
||||||
*/
|
*/
|
||||||
@ -351,8 +354,11 @@ Editor::check_marker_label (ArdourMarker* m)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (next != sorted.end()) {
|
while (next != sorted.end() && (*next)->position () == m->position ()) {
|
||||||
|
++next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (next != sorted.end()) {
|
||||||
/* Update just the available space between this marker and the next */
|
/* Update just the available space between this marker and the next */
|
||||||
|
|
||||||
double const p = sample_to_pixel (m->position().distance ((*next)->position()).samples());
|
double const p = sample_to_pixel (m->position().distance ((*next)->position()).samples());
|
||||||
@ -373,6 +379,9 @@ Editor::check_marker_label (ArdourMarker* m)
|
|||||||
|
|
||||||
struct MarkerComparator {
|
struct MarkerComparator {
|
||||||
bool operator() (ArdourMarker const * a, ArdourMarker const * b) {
|
bool operator() (ArdourMarker const * a, ArdourMarker const * b) {
|
||||||
|
if (a->position() == b->position()) {
|
||||||
|
return a->label_on_left ();
|
||||||
|
}
|
||||||
return a->position() < b->position();
|
return a->position() < b->position();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -420,14 +429,29 @@ Editor::update_marker_labels (ArdourCanvas::Item* group)
|
|||||||
while (i != sorted.end()) {
|
while (i != sorted.end()) {
|
||||||
|
|
||||||
if (prev != sorted.end()) {
|
if (prev != sorted.end()) {
|
||||||
double const p = sample_to_pixel ((*prev)->position().distance ((*i)->position()).samples());
|
|
||||||
|
list<ArdourMarker*>::iterator pi = prev;
|
||||||
|
while (pi != sorted.begin () && (*pi)->position () == (*i)->position()) {
|
||||||
|
--pi;
|
||||||
|
}
|
||||||
|
|
||||||
|
double p = sample_to_pixel ((*pi)->position().distance ((*i)->position()).samples());
|
||||||
|
|
||||||
|
if (p == 0) {
|
||||||
|
p = DBL_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
if ((*prev)->label_on_left()) {
|
if ((*prev)->label_on_left()) {
|
||||||
(*i)->set_left_label_limit (p);
|
(*i)->set_left_label_limit (p);
|
||||||
} else {
|
} else {
|
||||||
(*i)->set_left_label_limit (p / 2);
|
(*i)->set_left_label_limit (p / 2);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
(*i)->set_left_label_limit (DBL_MAX);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (next != sorted.end() && (*next)->position () == (*i)->position ()) {
|
||||||
|
++next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (next != sorted.end()) {
|
if (next != sorted.end()) {
|
||||||
@ -440,6 +464,8 @@ Editor::update_marker_labels (ArdourCanvas::Item* group)
|
|||||||
}
|
}
|
||||||
|
|
||||||
++next;
|
++next;
|
||||||
|
} else {
|
||||||
|
(*i)->set_right_label_limit (DBL_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
prev = i;
|
prev = i;
|
||||||
|
Loading…
Reference in New Issue
Block a user