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);
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)
}
}
+
+/*
+ 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++;
+ }
+}
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;