X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fseparation-item.cc;h=ebee8d6bf3f0c53413232cf6dfbc52e40d611c9a;hb=a5cf6dd30939342f26ce626476527c76bafa493b;hp=8a32363eb4d2b0d8c6df9c321f429cbee8886e8d;hpb=ffd278ab691a1ada9b0ff0f8fd7548ab791f1647;p=lilypond.git diff --git a/lily/separation-item.cc b/lily/separation-item.cc index 8a32363eb4..ebee8d6bf3 100644 --- a/lily/separation-item.cc +++ b/lily/separation-item.cc @@ -104,10 +104,13 @@ Separation_item::calc_skylines (SCM smob) return sp.smobbed_copy (); } -/* if left is non-NULL, get the boxes corresponding to the - conditional-elements (conditioned on the grob LEFT). This - sounds more general than it is: conditional-elements are - always accidentals attached to a tied note. +/* + If left is non-NULL, get the boxes corresponding to the + conditional-elements (conditioned on the grob LEFT). + Conditional elements are, for now, arpeggios and accidental + placements. Based on the left grob, the accidentals will + be printed or not, so we filter using + Accidental_placement::get_relevant_accidentals. */ vector Separation_item::boxes (Grob *me, Grob *left) @@ -121,7 +124,19 @@ Separation_item::boxes (Grob *me, Grob *left) vector elts; if (left) - elts = Accidental_placement::get_relevant_accidentals (read_only_elts, left); + { + vector accidental_elts; + vector other_elts; // for now only arpeggios + for (vsize i = 0; i < read_only_elts.size (); i++) + { + if (Accidental_placement::has_interface (read_only_elts[i])) + accidental_elts.push_back (read_only_elts[i]); + else + other_elts.push_back (read_only_elts[i]); + } + elts = Accidental_placement::get_relevant_accidentals (accidental_elts, left); + elts.insert (elts.end (), other_elts.begin (), other_elts.end ()); + } else elts = read_only_elts;