shortest_in_measure = min (shortest_in_measure, this_shortest.main_part_);
}
else if (!shortest_in_measure.is_infinity ()
- && Item::is_breakable (cols[i]))
+ && Paper_column::is_breakable (cols[i]))
{
vsize j = 0;
for (; j < durations.size (); j++)
vector<Grob*> const &cols,
Spacing_options const *options)
{
- Paper_column *next = 0;
- Paper_column *next_next = 0;
- for (vsize i = cols.size (); i--;)
+ Paper_column *prev = 0;
+ for (vsize i = 0; i < cols.size (); i++)
{
Paper_column *col = dynamic_cast<Paper_column *> (cols[i]);
- if (next)
- generate_pair_spacing (me, col, next, next_next, options);
+ Paper_column *next = (i < cols.size()-1) ? dynamic_cast<Paper_column *> (cols[i+1]) : 0;
+
+ if (i > 0)
+ generate_pair_spacing (me, prev, col, next, options);
- next_next = next;
- next = col;
+ prev = col;
}
}
Real compound_fixed_note_space = 0.0;
if (options->stretch_uniformly_)
- compound_note_space = base_note_space;
+ {
+ compound_note_space = base_note_space;
+
+ if (!Paper_column::is_musical (right_col))
+ {
+ /*
+ Crude fix for notes that lead up to barlines and time sigs.
+ */
+ Interval lext = right_col->extent (right_col, X_AXIS);
+ if (!lext.is_empty ())
+ compound_note_space += -lext[LEFT];
+ }
+
+ }
else
{
int wish_count = 0;