#include "spacing-spanner.hh"
#include "warn.hh"
#include "moment.hh"
+#include "spacing-options.hh"
/* Find the loose columns in POSNS, and drape them around the columns
specified in BETWEEN-COLS. */
loose = right = re->get_column ();
}
- if (!right->get_system ())
+ if (right->get_system ())
+ ; /* do nothing */
+ else if (right->find_prebroken_piece (LEFT)
+ && right->find_prebroken_piece (LEFT)->get_system () == which)
right = right->find_prebroken_piece (LEFT);
+ else if (Paper_column::get_rank (which->get_bound (RIGHT)) < Paper_column::get_rank (right))
+
+ right = which->get_bound (RIGHT);
+ else
+ {
+ clique.back ()->programming_error ("Loose column does not have right side to attach to.");
+ 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);