From 469c53f8ce7c9e6a4e120be130bef0aaac271422 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Fri, 23 Mar 2012 09:22:49 +0100 Subject: [PATCH] Fixes counter in Pure_from_neighbor_engraver. Also uses extra-spacing-height instead of Y-extent to control SpanBarStub's height for horizontal spacing. --- input/regression/lyrics-spanbar.ly | 18 ++++++++++++++++++ lily/pure-from-neighbor-engraver.cc | 6 +++--- scm/define-grobs.scm | 3 ++- scm/output-lib.scm | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 input/regression/lyrics-spanbar.ly diff --git a/input/regression/lyrics-spanbar.ly b/input/regression/lyrics-spanbar.ly new file mode 100644 index 0000000000..d8cf3007fe --- /dev/null +++ b/input/regression/lyrics-spanbar.ly @@ -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 } +>> diff --git a/lily/pure-from-neighbor-engraver.cc b/lily/pure-from-neighbor-engraver.cc index 3dc87664f8..a6e7b5f32f 100644 --- a/lily/pure-from-neighbor-engraver.cc +++ b/lily/pure-from-neighbor-engraver.cc @@ -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]++; diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 4413033434..666abc54cf 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1879,7 +1879,8 @@ (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))) diff --git a/scm/output-lib.scm b/scm/output-lib.scm index 17bbea995b..bb8f4ddf50 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -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 -- 2.39.5