]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix rest-dot-position.ly
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 26 Mar 2007 03:13:37 +0000 (00:13 -0300)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 26 Mar 2007 03:13:37 +0000 (00:13 -0300)
Don't inspect rest Y extent while placing dots.

lily/dot-column.cc

index 24c6388c2dff0d71f2e956afbafdcb92ea7aae97..133f88ad3c68bb3f143f8a12997754c9182289b2 100644 (file)
@@ -27,7 +27,7 @@ using namespace std;
 #include "pointer-group-interface.hh"
 #include "dot-configuration.hh"
 #include "note-head.hh"
-#include "skyline.hh"
+#include "rest.hh"
 #include "dot-formatting-problem.hh"
 
 MAKE_SCHEME_CALLBACK (Dot_column, calc_positioning_done, 1);
@@ -75,18 +75,28 @@ Dot_column::calc_positioning_done (SCM smob)
  
   for (vsize i = 0; i < support.size (); i++)
     {
+      Grob *s = support[i];
       if (!ss)
-       ss = Staff_symbol_referencer::staff_space (support[i]);
-      
-      Interval y (support[i]->extent (support[i], Y_AXIS));
+       ss = Staff_symbol_referencer::staff_space (s);
 
+      /* can't inspect Y extent of rest.
+        
+        Rest collisions should wait after line breaking.
+      */
+      if (Rest::has_interface (s))
+       {
+         base_x.unite (s->extent (commonx, X_AXIS));
+         continue;
+       }
+
+      Interval y = s->extent (s, Y_AXIS);
       y *= 2 / ss;
-      y += Staff_symbol_referencer::get_position (support[i]);
+      y += Staff_symbol_referencer::get_position (s);
          
-      Box b (support[i]->extent (commonx, X_AXIS), y);
+      Box b (s->extent (commonx, X_AXIS), y);
       boxes.push_back (b);
 
-      if (Grob *s = unsmob_grob (support[i]->get_object ("stem")))
+      if (Grob *s = unsmob_grob (s->get_object ("stem")))
        stems.insert (s);
     }