lilypond-1.3.49
authorfred <fred>
Tue, 26 Mar 2002 23:10:56 +0000 (23:10 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:10:56 +0000 (23:10 +0000)
lily/line-of-score.cc

index b87c716dd086aaa5a41ff215da1ebb28e5377943..18596d017d1f91842977635a3902bab13413a6ec 100644 (file)
@@ -27,6 +27,9 @@ Line_of_score::Line_of_score()
   Axis_group_interface (this).set_axes (Y_AXIS,X_AXIS);
 }
 
+/*
+  Ugh.  this is grossly hairy.
+ */
 
 void
 Line_of_score::typeset_element (Score_element * elem_p)
@@ -45,6 +48,29 @@ Line_of_score::output_lines ()
       unsmob_element (gh_car (s))->do_break_processing ();
     }
 
+  /*
+    fixups must be done in broken line_of_scores, because new elements are put over there. 
+   */
+  for (int i=0; i < broken_into_l_arr_.size (); i++)
+    {
+      Score_element *se = broken_into_l_arr_[i];
+
+      for (SCM s = se->get_elt_property ("all-elements");
+          gh_pair_p (s); s = gh_cdr (s))
+       {
+         unsmob_element (gh_car (s))->fixup_refpoint ();
+       }
+    }
+  
+  /*
+    needed for doing items.
+   */
+  for (SCM s = get_elt_property ("all-elements");
+       gh_pair_p (s); s = gh_cdr (s))
+    {
+      unsmob_element (gh_car (s))->fixup_refpoint ();
+    }
+  
   for (SCM s = get_elt_property ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {
@@ -203,7 +229,6 @@ Line_of_score::pre_processing ()
 void
 Line_of_score::post_processing ()
 {
-  fixup_refpoints (get_elt_property ("all-elements"));
   for (SCM s = get_elt_property ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {