]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/spanner.cc
* scm/define-grobs.scm (all-grob-descriptions): oops, typo:
[lilypond.git] / lily / spanner.cc
index c7836160b0c772002d07302eaabe63528cd661a1..f8726a864709386c9efdea83193d554150e4ebbd 100644 (file)
@@ -81,7 +81,7 @@ Spanner::do_break_processing ()
   else
     {
       System *root  = get_root_system (this);
-      Link_array__Item_ break_points = root->broken_col_range (left, right);
+      vector<Item*> break_points = root->broken_col_range (left, right);
 
       break_points.insert (break_points.begin () + 0, left);
       break_points.push_back (right);
@@ -238,7 +238,7 @@ Spanner::get_system () const
 Grob *
 Spanner::find_broken_piece (System *l) const
 {
-  vsize idx = binary_search (broken_intos_, (Spanner *)l, Spanner::compare);
+  vsize idx = binary_search (broken_intos_, (Spanner *)l, Spanner::less_than);
   if (idx != VPOS)
     return broken_intos_ [idx];
   return 0;
@@ -250,6 +250,12 @@ Spanner::compare (Spanner *const &p1, Spanner *const &p2)
   return p1->get_system ()->get_rank () - p2->get_system ()->get_rank ();
 }
 
+bool
+Spanner::less_than (Spanner *const &a, Spanner *const &b)
+{
+  return a->get_system ()->get_rank () < b->get_system ()->get_rank ();
+}
+
 bool
 Spanner::is_broken () const
 {
@@ -321,10 +327,14 @@ Spanner::set_spacing_rods (SCM smob)
   Spanner *sp = dynamic_cast<Spanner *> (me);
   r.item_drul_[LEFT] = sp->get_bound (LEFT);
   r.item_drul_[RIGHT] = sp->get_bound (RIGHT);
-  r.distance_
-    = robust_scm2double (me->get_property ("minimum-length"), 0);
 
-  r.add_to_cols ();
+  SCM num_length = me->get_property ("minimum-length");
+  if (scm_is_number (num_length))
+    {
+      r.distance_ = robust_scm2double (num_length, 0);
+      r.add_to_cols ();
+    }
+  
   return SCM_UNSPECIFIED;
 }