]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fixes counter in Pure_from_neighbor_engraver.
authorMike Solomon <mike@apollinemike.com>
Fri, 23 Mar 2012 08:22:49 +0000 (09:22 +0100)
committerMike Solomon <mike@apollinemike.com>
Fri, 23 Mar 2012 08:22:49 +0000 (09:22 +0100)
Also uses extra-spacing-height instead of Y-extent to control
SpanBarStub's height for horizontal spacing.

input/regression/lyrics-spanbar.ly [new file with mode: 0644]
lily/pure-from-neighbor-engraver.cc
scm/define-grobs.scm
scm/output-lib.scm

diff --git a/input/regression/lyrics-spanbar.ly b/input/regression/lyrics-spanbar.ly
new file mode 100644 (file)
index 0000000..d8cf300
--- /dev/null
@@ -0,0 +1,18 @@
+\version "2.15.35"
+
+\header {
+  texidoc = "Empty measures do not confuse @code{SpanBarStub}.
+These lyrics should remain clear of the span bars.
+"
+}
+
+\new StaffGroup <<
+  \new Staff { \repeat unfold 8 { R1 e'1 } }
+  \addlyrics {
+    Worked twice...
+    and then
+    I continued...
+    working... correctly.
+  }
+  \new Staff { R1*16 }
+>>
index 3dc87664f83ecffe7341263ae97302a761be768f..a6e7b5f32fe4539867f3ddbabe136357b8ba9335 100644 (file)
@@ -97,9 +97,9 @@ Pure_from_neighbor_engraver::finalize ()
   int pos[2] = { -1, 0};
   for (vsize i = 0; i < pure_relevants_.size (); i++)
     {
-      if (pos[1] < (int) need_pure_heights_from_neighbors.size ()
-          && (pure_relevants_[i]->spanned_rank_interval ()[LEFT]
-              > need_pure_heights_from_neighbors[pos[1]][0]->spanned_rank_interval ()[LEFT]))
+      while (pos[1] < (int) need_pure_heights_from_neighbors.size ()
+             && (pure_relevants_[i]->spanned_rank_interval ()[LEFT]
+                 > need_pure_heights_from_neighbors[pos[1]][0]->spanned_rank_interval ()[LEFT]))
         {
           pos[0] = pos[1];
           pos[1]++;
index 44130334346af5416004a06ac39d5a5d7afce624..666abc54cf7f59fce1b0838aa7d09ca7f458d78e 100644 (file)
     (SpanBarStub
      . (
         (X-extent . ,grob::x-parent-width)
-       (Y-extent . ,(ly:make-unpure-pure-container #f ly:axis-group-interface::pure-height))
+       (extra-spacing-height . ,pure-from-neighbor-interface::extra-spacing-height)
+       (Y-extent . #f)
        (meta . ((class . Item)
                 (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
                                      (pure-relevant-grobs . ,ly:pure-from-neighbor-interface::calc-pure-relevant-grobs)))
index 17bbea995b1f7c7bf03005b4ffffea2d6c9fd221..bb8f4ddf50d96c80bdece61ebb473d1d36604396 100644 (file)
@@ -434,7 +434,7 @@ and duration-log @var{log}."
       (cons -0.1 0.1)))
 
 (define-public (pure-from-neighbor-interface::extra-spacing-height grob)
-  (let* ((height (ly:grob::stencil-height grob))
+  (let* ((height (ly:grob-pure-height grob grob 0 10000000))
          (from-neighbors (interval-union
                             height
                             (ly:axis-group-interface::pure-height