--- /dev/null
+\version "2.17.16"
+
+\header {
+ texidoc = "Long spanners at the end of the lines stretch measures
+correctly.
+"
+}
+
+{
+ \override Hairpin.minimum-length = #60
+ \override Hairpin.to-barline = ##t
+ \repeat unfold 4 a1
+ a1\<
+ a1\>
+ a1\!
+}
if (cols[j] == other)
description.rods_.push_back (Rod_description (j, scm_to_double (scm_cdar (s))));
else /* it must end at the LEFT prebroken_piece */
+ /* see Spanner::set_spacing_rods for more comments on how
+ to deal with situations where we don't know if we're
+ ending yet on the left prebroken piece */
description.end_rods_.push_back (Rod_description (j, scm_to_double (scm_cdar (s))));
}
}
r.item_drul_[LEFT] = sp->get_bound (LEFT);
r.item_drul_[RIGHT] = sp->get_bound (RIGHT);
r.add_to_cols ();
+
+ /*
+ We do not know yet if the spanner is going to have a bound that is
+ broken. To account for this uncertainty, we add the rod twice:
+ once for the central column (see above) and once for the left column
+ (see below). As end_rods_ are never used when rods_ are used and vice
+ versa, this rod will only be accessed once for each spacing
+ configuraiton before line breaking. Then, as a grob never exists in
+ both unbroken and broken forms after line breaking, only one of these
+ two rods will be in the column vector used for spacing in
+ simple-spacer.cc get_line_confugration.
+ */
+ if (Item *left_pbp = sp->get_bound (RIGHT)->find_prebroken_piece (LEFT))
+ {
+ r.item_drul_[RIGHT] = left_pbp;
+ r.add_to_cols ();
+ }
}
return SCM_UNSPECIFIED;