]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/spacing-spanner.cc
Handle situations that either one of above and below is a valid
[lilypond.git] / lily / spacing-spanner.cc
index cc5170de79eba2763dc1ed5b9406b390542fe705..0395506bbcb79dbecc9e1423e08bcee9d821bdc0 100644 (file)
@@ -1,9 +1,20 @@
 /*
-  spacing-spanner.cc -- implement Spacing_spanner
+  This file is part of LilyPond, the GNU music typesetter.
 
-  source file of the GNU LilyPond music typesetter
+  Copyright (C) 1999--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
-  (c) 1999--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "spacing-spanner.hh"
@@ -38,8 +49,8 @@ Spacing_spanner::get_columns (Grob *me_grob)
   vsize end = binary_search (all, (Grob*) me->get_bound (RIGHT),
                             &Paper_column::less_than);  
   
-  all = vector<Grob*>::vector<Grob*> (all.begin () + start,
-                                     all.begin () + end + 1);
+  all = vector<Grob*> (all.begin () + start,
+                      all.begin () + end + 1);
   return all;
 }
 
@@ -260,7 +271,7 @@ set_column_rods (vector<Grob*> const &cols, Real padding)
              bool touches = right_stickout - left_stickout + cur_dist[d] < 0.0;
              Real dist = 0.0;
 
-             /* we set a distance for the line-starter column even if it's non-broken counterpart
+             /* we set a distance for the line-starter column even if its non-broken counterpart
                 doesn't touch the right column. */
              if (lb)
                Separation_item::set_distance (lb, r_col, padding);
@@ -274,6 +285,7 @@ set_column_rods (vector<Grob*> const &cols, Real padding)
              if (j == i-1)
                cur_dist[d] = distances[j];
 
+             cur_dist[d] = max (cur_dist[d], dist);
              done = done && !touches;
            }
          while (flip (&d) != LEFT && rb);
@@ -528,7 +540,7 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r,
     {
       Real full_measure_extra_space = robust_scm2double (l->get_property ("full-measure-extra-space"), 1.0);
       spring.set_distance (spring.distance () + full_measure_extra_space);
-      spring.set_default_strength ();
+      spring.set_default_compress_strength ();
     }
   
   if (options->stretch_uniformly_ && l->break_status_dir () != RIGHT)