void
Item::handle_prebroken_dependents ()
{
- Item * parent = dynamic_cast<Item*> (parent_l( X_AXIS));
+ Item * parent = dynamic_cast<Item*> (parent_l (X_AXIS));
if (breakable_b () && parent)
{
if(!(broken_to_drul_[LEFT] || broken_to_drul_[RIGHT]))
Item * broken_self = find_prebroken_piece (d);
Item * broken_parent = parent->find_prebroken_piece (d);
- broken_self->dim_cache_[X_AXIS].parent_l_ =
- &broken_parent->dim_cache_[X_AXIS];
+ broken_self->dim_cache_[X_AXIS]->parent_l_ =
+ broken_parent->dim_cache_[X_AXIS];
+
+ /*
+ ugh. Should do this is after breaking?
+ */
+ if (!broken_self->parent_l (Y_AXIS))
+ {
+ Score_element * yparent =dynamic_cast<Score_element*>(parent_l (Y_AXIS));
+ Item *yparenti = dynamic_cast<Item*> (yparent);
+ Item *broken_yparent = yparenti ?
+ yparenti->find_prebroken_piece (d) : 0;
+
+ if (!yparent)
+ programming_error ("Vertical refpoint lost!");
+ else if (yparenti)
+ {
+ broken_self->dim_cache_[Y_AXIS]->parent_l_ =
+ broken_yparent->dim_cache_[Y_AXIS];
+ }
+ }
}
while ((flip (&d))!=LEFT);
}