]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.1.61
authorfred <fred>
Tue, 26 Mar 2002 22:23:56 +0000 (22:23 +0000)
committerfred <fred>
Tue, 26 Mar 2002 22:23:56 +0000 (22:23 +0000)
lily/axis-group-element.cc
lily/include/axis-group-element.hh

index 0c5322bec7f1e7ea592c50816cf06875356a97b1..a562b52d88d0b3254a62d5ef9af06bfbf779b5cd 100644 (file)
@@ -90,6 +90,7 @@ Interval
 Axis_group_element::extra_extent (Axis a )const
 {
   Interval g;
+  purge_extra ();
   for (int i=0;  i < extra_elems_.size (); i++)
     {
       Interval ge = extra_elems_[i]->extent (a);
@@ -126,7 +127,7 @@ Axis_group_element::add_extra_element (Score_element *e)
   while (e && e != this)
     {
       se.push (e);
-      e = dynamic_cast<Score_element*> (e->dim_cache_[Y_AXIS]->parent_l_ ? e->dim_cache_[Y_AXIS]->parent_l_->element_l() : 0);
+      e = dynamic_cast<Score_element*> (e->parent_l (Y_AXIS));
     }
 
   if (1)                       // e == this)
@@ -140,3 +141,23 @@ Axis_group_element::add_extra_element (Score_element *e)
       
     }
 }
+
+/*
+  UGH GUH
+ */
+void
+Axis_group_element::purge_extra ()
+{
+  for (int i=0; i < extra_elems_.size ();)
+    {
+      Score_element *e = extra_elems_[i];
+      while (e && e != this)
+       {
+         e = dynamic_cast<Score_element*> (e->parent_l (Y_AXIS));
+       }
+      if (e != this)
+       extra_elems_.del (i);
+      else
+       i++;
+    }
+}
index c3221a0ec208e669da0c1782d4b56960854e6b8b..c77b0058c220e95b9ff9a422be310349d93f88b0 100644 (file)
@@ -25,6 +25,7 @@ class Axis_group_element : public virtual Score_element,
 protected:
   virtual void do_print() const;
   virtual Link_array<Score_element> get_extra_dependencies() const;
+  void purge_extra ();
 
   virtual void do_substitute_element_pointer (Score_element*,Score_element*);
   virtual Link_array<Score_element> elem_l_arr() const;