From: Neil Puttock Date: Tue, 14 Jun 2011 21:51:50 +0000 (+0100) Subject: Fix #1679: Premature end to TextSpanner with full-bar rest. X-Git-Tag: release/2.15.2-1~2^2~12 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=a31ea2385b8587fe364eb6ce0874ece14f2218f2;p=lilypond.git Fix #1679: Premature end to TextSpanner with full-bar rest. * input/regression/text-spanner-full-rest.ly: new regtest * lily/text-spanner-engraver.cc (acknowledge_note_column): only add bound item for current spanner if it doesn't already have its left bound set to prevent right bound being set prematurely --- diff --git a/input/regression/text-spanner-full-rest.ly b/input/regression/text-spanner-full-rest.ly new file mode 100644 index 0000000000..97e5be904b --- /dev/null +++ b/input/regression/text-spanner-full-rest.ly @@ -0,0 +1,12 @@ +\version "2.15.2" + +\header { + texidoc = "Text spanners ending on full-measure rests do +not stop prematurely on preceding note heads." +} + +\relative c'' { + a1\startTextSpan + b1 + R1\stopTextSpan +} diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc index b9c7b75fb9..c18bf098f2 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -52,8 +52,7 @@ Text_spanner_engraver::Text_spanner_engraver () finished_ = 0; current_event_ = 0; span_ = 0; - event_drul_[START] = 0; - event_drul_[STOP] = 0; + event_drul_.set (0, 0); } IMPLEMENT_TRANSLATOR_LISTENER (Text_spanner_engraver, text_span); @@ -119,8 +118,7 @@ Text_spanner_engraver::stop_translation_timestep () } typeset_all (); - event_drul_[START] = 0; - event_drul_[STOP] = 0; + event_drul_.set (0, 0); } void @@ -135,20 +133,25 @@ Text_spanner_engraver::finalize () } } - void Text_spanner_engraver::acknowledge_note_column (Grob_info info) { - if (span_) { - Pointer_group_interface::add_grob (span_, - ly_symbol2scm ("note-columns"), - info.grob()); - add_bound_item (span_, info.grob ()); - } else if (finished_) { - Pointer_group_interface::add_grob (finished_, ly_symbol2scm ("note-columns"), - info.grob()); - add_bound_item (finished_, info.grob ()); - } + if (span_) + { + Pointer_group_interface::add_grob (span_, + ly_symbol2scm ("note-columns"), + info.grob ()); + if (!span_->get_bound (LEFT)) + add_bound_item (span_, info.grob ()); + } + else if (finished_) + { + Pointer_group_interface::add_grob (finished_, + ly_symbol2scm ("note-columns"), + info.grob ()); + if (!finished_->get_bound (RIGHT)) + add_bound_item (finished_, info.grob ()); + } } ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column); @@ -161,7 +164,7 @@ ADD_TRANSLATOR (Text_spanner_engraver, "TextSpanner ", /* read */ - "", + "currentMusicalColumn ", /* write */ ""