From f8217a5b96b1b40e8c5c2a124f3841fe0beb80c7 Mon Sep 17 00:00:00 2001 From: Neil Puttock Date: Tue, 27 Jul 2010 22:48:56 +0100 Subject: [PATCH] Fix #1194. * lily/new-dynamic-engraver.cc (acknowledge_note_column): if NoteColumn contains a rest, set as X-parent instead of relying on default (PaperColumn) --- input/regression/dynamics-rest-positioning.ly | 11 +++++++++++ lily/new-dynamic-engraver.cc | 17 ++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 input/regression/dynamics-rest-positioning.ly diff --git a/input/regression/dynamics-rest-positioning.ly b/input/regression/dynamics-rest-positioning.ly new file mode 100644 index 0000000000..bae0ebd94e --- /dev/null +++ b/input/regression/dynamics-rest-positioning.ly @@ -0,0 +1,11 @@ +\version "2.13.29" + +\header { + texidoc = "Text dynamics are positioned correctly on rests, i.e., +centered on the parent object." +} + +\relative c'' { + g2\p r\p + g4\f s r4\f s +} diff --git a/lily/new-dynamic-engraver.cc b/lily/new-dynamic-engraver.cc index 497fc0b7f7..cf2a2b1df8 100644 --- a/lily/new-dynamic-engraver.cc +++ b/lily/new-dynamic-engraver.cc @@ -227,10 +227,16 @@ New_dynamic_engraver::acknowledge_note_column (Grob_info info) if (script_ && !script_->get_parent (X_AXIS)) { extract_grob_set (info.grob (), "note-heads", heads); - if (heads.size ()) + /* + Spacing constraints may require dynamics to be aligned on rests, + so check for a rest if this note column has no note heads. + */ + Grob *x_parent = (heads.size () + ? heads[0] + : unsmob_grob (info.grob ()->get_object ("rest"))); + if (x_parent) { - Grob *head = heads[0]; - script_->set_parent (head, X_AXIS); + script_->set_parent (x_parent, X_AXIS); Self_alignment_interface::set_center_parent (script_, X_AXIS); } } @@ -244,10 +250,7 @@ New_dynamic_engraver::acknowledge_note_column (Grob_info info) ADD_ACKNOWLEDGER (New_dynamic_engraver, note_column); ADD_TRANSLATOR (New_dynamic_engraver, /* doc */ - "Create hairpins, dynamic texts, and their vertical" - " alignments. The symbols are collected onto a" - " @code{DynamicLineSpanner} grob which takes care of vertical" - " positioning.", + "Create hairpins, dynamic texts and dynamic text spanners.", /* create */ "DynamicTextSpanner " -- 2.11.4.GIT