From 7fb65fc23874860275fe337474edeb44166d45de Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 26 Mar 2007 00:13:37 -0300 Subject: [PATCH] Fix rest-dot-position.ly Don't inspect rest Y extent while placing dots. --- lily/dot-column.cc | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lily/dot-column.cc b/lily/dot-column.cc index 24c6388c2d..133f88ad3c 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -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); } -- 2.39.2