From 2a00c69a012d4ccaf24a036bdb5ac9ea43fb9604 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 23 Feb 2008 17:13:24 -0300 Subject: [PATCH] Fix #580. Acknowledge note-columns, and add a missing add_bound_item() call. This makes trill and text spanners attach to notes (from the staff) if possible, so objects in other staves will not influence their attachments. Add regression test. --- .../text-spanner-attachment-alignment.ly | 23 +++++++++++++++++++ lily/text-spanner-engraver.cc | 17 ++++++++++++++ lily/trill-spanner-engraver.cc | 6 ++--- 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 input/regression/text-spanner-attachment-alignment.ly diff --git a/input/regression/text-spanner-attachment-alignment.ly b/input/regression/text-spanner-attachment-alignment.ly new file mode 100644 index 0000000000..20f72ee2fc --- /dev/null +++ b/input/regression/text-spanner-attachment-alignment.ly @@ -0,0 +1,23 @@ +\header { + + texidoc = "Text and trill spanners are attached to note columns, so + attachments in other staves have no effect on them." + + } + +\layout { + ragged-right = ##t + } + +\version "2.11.22" +<< + \new Staff { + \override TextSpanner #'bound-details #'left #'text = "*" + c'16 \startTrillSpan c' c' c' \stopTrillSpan + c'16 \startTextSpan c' c' c' \stopTextSpan + } + \new Staff { + \override TextScript #'self-alignment-X = #RIGHT + \repeat unfold 2 {c'4 _ \markup { "FAT" } } + } +>> diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc index f7b2576d85..7d789b2973 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -10,6 +10,7 @@ #include "international.hh" #include "note-column.hh" +#include "pointer-group-interface.hh" #include "side-position-interface.hh" #include "spanner.hh" #include "stream-event.hh" @@ -23,6 +24,7 @@ public: protected: virtual void finalize (); DECLARE_TRANSLATOR_LISTENER (text_span); + DECLARE_ACKNOWLEDGER (note_column); void stop_translation_timestep (); void process_music (); @@ -121,6 +123,21 @@ Text_spanner_engraver::finalize () } } + +void +Text_spanner_engraver::acknowledge_note_column (Grob_info info) +{ + if (!span_) + return; + + Pointer_group_interface::add_grob (span_, + ly_symbol2scm ("note-columns"), + info.grob()); + add_bound_item (span_, info.grob ()); +} + +ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column); + ADD_TRANSLATOR (Text_spanner_engraver, /* doc */ "Create text spanner from an event.", diff --git a/lily/trill-spanner-engraver.cc b/lily/trill-spanner-engraver.cc index 857c03051d..1b183d6da6 100644 --- a/lily/trill-spanner-engraver.cc +++ b/lily/trill-spanner-engraver.cc @@ -70,11 +70,9 @@ Trill_spanner_engraver::acknowledge_note_column (Grob_info info) Pointer_group_interface::add_grob (span_, ly_symbol2scm ("note-columns"), info.grob()); + add_bound_item (span_, info.grob ()); } -ADD_ACKNOWLEDGER (Trill_spanner_engraver, note_column); - - void Trill_spanner_engraver::process_music () { @@ -143,6 +141,8 @@ Trill_spanner_engraver::finalize () } } +ADD_ACKNOWLEDGER (Trill_spanner_engraver, note_column); + ADD_TRANSLATOR (Trill_spanner_engraver, /* doc */ "Create trill spanner from an event.", /* create */ -- 2.39.5