X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fvertical-align-engraver.cc;h=14f67333cf54c5f98f8d737fd62f80354062e937;hb=794dcbdb52faf4292036cd1b0270a956cf4316a3;hp=c4adfaae11827d5f8a95b31dee7d86e7872a146f;hpb=ecf2b5e9dcfa7654803fb0050d7127e0ec7fd934;p=lilypond.git diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index c4adfaae11..14f67333cf 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2007 Han-Wen Nienhuys + (c) 1997--2009 Han-Wen Nienhuys */ #include "context.hh" @@ -33,6 +33,8 @@ protected: void process_music (); virtual void finalize (); virtual void initialize (); + + bool top_level_; }; ADD_ACKNOWLEDGER (Vertical_align_engraver, axis_group); @@ -56,6 +58,7 @@ Vertical_align_engraver::Vertical_align_engraver () { valign_ = 0; id_to_group_hashtab_ = SCM_EOL; + top_level_ = false; } void @@ -75,7 +78,9 @@ Vertical_align_engraver::process_music () { if (!valign_) { - valign_ = make_spanner ("VerticalAlignment", SCM_EOL); + top_level_ = to_boolean (get_property ("topLevelAlignment")); + + valign_ = make_spanner (top_level_ ? "VerticalAlignment" : "StaffGrouper", SCM_EOL); valign_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn"))); Align_interface::set_ordered (valign_); } @@ -105,7 +110,7 @@ Vertical_align_engraver::qualifies (Grob_info i) const void Vertical_align_engraver::acknowledge_axis_group (Grob_info i) { - if (qualifies (i)) + if (top_level_ && qualifies (i)) { string id = i.context ()->id_string (); @@ -145,4 +150,9 @@ Vertical_align_engraver::acknowledge_axis_group (Grob_info i) } } } + else if (!top_level_) + { + Pointer_group_interface::add_grob (valign_, ly_symbol2scm ("elements"), i.grob ()); + i.grob ()->set_object ("staff-grouper", valign_->self_scm ()); + } }