]> git.donarmstrong.com Git - lilypond.git/commitdiff
Include broken items in system pure-height.
authorJoe Neeman <joeneeman@gmail.com>
Sun, 24 Oct 2010 18:10:34 +0000 (11:10 -0700)
committerJoe Neeman <joeneeman@gmail.com>
Mon, 25 Oct 2010 00:07:05 +0000 (17:07 -0700)
lily/system.cc

index f169b8a5d0b18593b1da4b91c37c7c4485cee152..3da78689e33fcc8cdda4b749d3645d68d082a417 100644 (file)
@@ -629,9 +629,23 @@ System::calc_pure_relevant_grobs (SCM smob)
 
   for (vsize i = 0; i < elts.size (); ++i)
     {
-      if (!Axis_group_interface::has_interface (elts[i])
-         && to_boolean (scm_apply_1 (pure_relevant_p, elts[i]->self_scm (), SCM_EOL)))
-       relevant_grobs.push_back (elts[i]);
+      if (!Axis_group_interface::has_interface (elts[i]))
+       {
+         if (to_boolean (scm_apply_1 (pure_relevant_p, elts[i]->self_scm (), SCM_EOL)))
+           relevant_grobs.push_back (elts[i]);
+
+         if (Item *it = dynamic_cast<Item*> (elts[i]))
+           {
+             Direction d = LEFT;
+             do
+               {
+                 Item *piece = it->find_prebroken_piece (d);
+                 if (piece && to_boolean (scm_apply_1 (pure_relevant_p, piece->self_scm (), SCM_EOL)))
+                   relevant_grobs.push_back (piece);
+               }
+             while (flip (&d) != LEFT);
+           }
+       }
     }
 
   SCM grobs_scm = Grob_array::make_array ();