X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fseparating-group-spanner.cc;h=7de9341e397868b8f24c812910a37dfef0f60b12;hb=00e3e15364b9d3c94cda1bcab9f889bb95f6832d;hp=d2bc23a6d339e3a016f9d8c549231692676cd020;hpb=44ad1d66c072e4d6545e75c769c86a460cb1df13;p=lilypond.git diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index d2bc23a6d3..7de9341e39 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1998--2006 Han-Wen Nienhuys + (c) 1998--2007 Han-Wen Nienhuys */ #include "separating-group-spanner.hh" @@ -13,6 +13,7 @@ #include "output-def.hh" #include "dimensions.hh" #include "pointer-group-interface.hh" +#include "moment.hh" void Separating_group_spanner::find_rods (Item *r, @@ -34,35 +35,17 @@ Separating_group_spanner::find_rods (Item *r, if (lb) { - Interval li (Separation_item::width (lb)); - Interval ri (Separation_item::conditional_width (r, lb)); - if (!li.is_empty () && !ri.is_empty ()) - { - Rod rod; - - rod.item_drul_[LEFT] = lb; - rod.item_drul_[RIGHT] = r; - - rod.distance_ = li[RIGHT] - ri[LEFT] + padding; - rod.add_to_cols (); - } + Separation_item::set_distance (Drul_array (lb, r), padding); } - Interval li (Separation_item::width (l)); - Interval ri (Separation_item::conditional_width (r, l)); - if (!li.is_empty () && !ri.is_empty ()) - { - Rod rod; - - rod.item_drul_[LEFT] = l; - rod.item_drul_[RIGHT] = r; - - rod.distance_ = li[RIGHT] - ri[LEFT] + padding; - - if (rod.distance_ > 0.0) - rod.add_to_cols (); - break; - } + if (Separation_item::set_distance (Drul_array (l, r), padding) + /* + This check is because grace notes are set very tight, and + the accidentals of main note may stick out so far to cover + a barline preceding the grace note. + */ + && spanned_time_interval (l, r).length ().main_part_ > Rational (0)) + break; /* this grob doesn't cause a constraint. We look further until we