source file of the GNU LilyPond music typesetter
- (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 2005--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "system.hh"
else
{
clique.back ()->programming_error ("Loose column does not have right side to attach to.");
- right = which->get_bound (RIGHT);
+ System *base_system = dynamic_cast<System*> (which->original ());
+ int j = Paper_column::get_rank (clique.back ()) + 1;
+ int end_rank = Paper_column::get_rank (which->get_bound (RIGHT));
+ extract_grob_set (base_system, "columns", base_cols);
+ for (; j < end_rank; j++)
+ {
+ if (base_cols[j]->get_system () == which)
+ right = dynamic_cast<Item*> ((Grob*)base_cols[j]);
+ }
}
+
+ if (!right)
+ {
+ programming_error ("Can't attach loose column sensibly. Attaching to end of system.");
+ right = which->get_bound (RIGHT);
+ }
Grob *common = right->common_refpoint (left, X_AXIS);
clique.push_back (right);
vector<Real> clique_spacing;
clique_spacing.push_back (0.0);
- for (vsize j = 1; j < clique.size () - 1; j ++)
+ for (vsize j = 1; j + 1 < clique.size (); j ++)
{
Grob *clique_col = clique[j];
else
programming_error ("Column without spacing object");
- bool expand_only = false;
Real base_note_space = 0.0;
if (Paper_column::is_musical (next_col)
&& Paper_column::is_musical (loose_col))
- base_note_space = Spacing_spanner::note_spacing (spacing, loose_col, next_col,
- &options, &expand_only);
+ base_note_space = Spacing_spanner::note_spacing (spacing, loose_col, next_col,
+ &options);
else
{
- Real fixed, space;
-
- Spacing_spanner::standard_breakable_column_spacing (spacing,
- loose_col, next_col,
- &fixed, &space,
- &options);
-
- base_note_space = space;
+ Spring spring = Spacing_spanner::standard_breakable_column_spacing (spacing,
+ loose_col, next_col,
+ &options);
+
+ base_note_space = spring.distance ();
}
base_note_space = max (base_note_space,