/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
LilyPond is free software: you can redistribute it and/or modify
if (last_text_)
last_text_->set_property ("self-alignment-X", scm_from_int (LEFT));
}
- /*
- "Empty" LyricText objects are needed to allow the Extender_engraver to
- distinguish between the end of a lyrics block and manual melismata.
- */
- text_ = make_item ("LyricText", event_->self_scm ());
+ else
+ text_ = make_item ("LyricText", event_->self_scm ());
}
}
}
Grob *
-get_current_note_head (Context *voice)
+get_current_note_head (Context *voice, bool include_grace_notes)
{
Moment now = voice->now_mom ();
for (SCM s = voice->get_property ("busyGrobs");
continue;
}
- if (end_mom->main_part_ > now.main_part_
- && dynamic_cast<Item *> (g)
- && Note_head::has_interface (g))
- return g;
+ if (((end_mom->main_part_ > now.main_part_) ||
+ (include_grace_notes && end_mom->grace_part_ > now.grace_part_))
+ && dynamic_cast<Item *> (g)
+ && Note_head::has_interface (g))
+ {
+ return g;
+ }
}
return 0;
if (voice)
{
- Grob *head = get_current_note_head (voice);
+ bool include_grace_notes = to_boolean (get_property ("includeGraceNotes"));
+ Grob *head = get_current_note_head (voice, include_grace_notes);
if (head)
{
if (melisma_busy (voice)
&& !to_boolean (get_property ("ignoreMelismata")))
text_->set_property ("self-alignment-X",
- get_property("lyricMelismaAlignment"));
+ get_property ("lyricMelismaAlignment"));
}
else
{
/* read */
"ignoreMelismata "
+ "includeGraceNotes "
"lyricMelismaAlignment ",
/* write */