]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/item.cc
release: 1.1.41
[lilypond.git] / lily / item.cc
index c1a8812ce83a35fecb6f8a69af9ee27c1898fb88..525e1e1e2ab01f35d22eb93f1134d58b33b1effb 100644 (file)
@@ -175,7 +175,7 @@ Item::Item (Item const &s)
 void
 Item::handle_prebroken_dependents ()
 {
-  Item * parent =  dynamic_cast<Item*> (parent_lX_AXIS));
+  Item * parent =  dynamic_cast<Item*> (parent_l (X_AXIS));
   if (breakable_b () && parent)
     {
        if(!(broken_to_drul_[LEFT] || broken_to_drul_[RIGHT]))
@@ -189,6 +189,25 @@ Item::handle_prebroken_dependents ()
 
          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);
     }