source file of the GNU LilyPond music typesetter
- (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 2005--2007 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];