X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspacing-spanner.cc;h=a61bffb98a3aa41d7a417ee493a17e7412e127b0;hb=9a4a902c3241341e0ffe7006eb17158651a15c34;hp=515e6e081af6bcac3f10e352863d07514ac451af;hpb=e07c4f38ab5ccd77c67a60f222267bea51e100eb;p=lilypond.git diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 515e6e081a..a61bffb98a 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1999--2006 Han-Wen Nienhuys + (c) 1999--2007 Han-Wen Nienhuys */ #include "spacing-spanner.hh" @@ -50,7 +50,7 @@ Spacing_spanner::set_springs (SCM smob) Spanner *me = unsmob_spanner (smob); /* - can't use get_system() ? --hwn. + can't use get_system () ? --hwn. */ Spacing_options options; options.init_from_grob (me); @@ -223,7 +223,7 @@ Spacing_spanner::generate_springs (Grob *me, for (vsize i = 0; i < cols.size (); i++) { Paper_column *col = dynamic_cast (cols[i]); - Paper_column *next = (i < cols.size()-1) ? dynamic_cast (cols[i+1]) : 0; + Paper_column *next = (i + 1 < cols.size ()) ? dynamic_cast (cols[i+1]) : 0; if (i > 0) generate_pair_spacing (me, prev, col, next, options); @@ -318,11 +318,15 @@ Spacing_spanner::musical_column_spacing (Grob *me, if (!Paper_column::is_musical (right_col)) { - Real left_col_stick_out = robust_relative_extent (left_col, left_col, X_AXIS)[RIGHT]; - compound_fixed_note_space = max (left_col_stick_out, options->increment_); - + /* + There used to be code that examined left_col->extent + (X_AXIS), but this is resulted in unexpected wide + spacing, because the width of s^"text" output is also + taken into account here. + */ + compound_fixed_note_space = options->increment_; compound_note_space = max (base_note_space, - base_note_space - options->increment_ + left_col_stick_out); + options->increment_); } else { @@ -401,11 +405,13 @@ bool Spacing_spanner::fills_measure (Grob *me, Item *left, Item *col) { System *sys = get_root_system (me); - Grob *next = sys->column (col->get_column()->get_rank () + 1); + Item *next = sys->column (col->get_column ()->get_rank () + 1); if (!next) return false; if (Paper_column::is_musical (next) + || Paper_column::is_musical (left) + || !Paper_column::is_musical (col) || !Paper_column::is_used (next)) return false; @@ -416,11 +422,18 @@ Spacing_spanner::fills_measure (Grob *me, Item *left, Item *col) if (!len) return false; - if (dt.main_part_ == len->main_part_) + /* + Don't check for exact measure length, since ending measures are + often shortened due to pickups. + */ + if (dt.main_part_ > len->main_part_ / Rational (2) + && (next->is_broken () + || next->break_status_dir ())) return true; return false; } + /* Read hints from L and generate springs. */ @@ -513,13 +526,6 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, assert (!isinf (compound_space)); compound_space = max (compound_space, compound_fixed); - /* - There used to be code that changed spacing depending on - raggedright setting. Ugh. - - Do it more cleanly, or rename the property. - - */ Real inverse_strength = (compound_space - compound_fixed); Real distance = compound_space; Spaceable_grob::add_spring (l, r, distance, inverse_strength);