X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flyric-engraver.cc;h=cdee61517e333f4c6a554c973b27c11555d8835c;hb=8379d72964ea43cb455cfc9beb7143f1ce76c834;hp=56ce20dadac66a7ef4b223dd7b6b066e7475bbe6;hpb=d2762a4f1add2bb04d6fc34d3c7ae03eeb7d500f;p=lilypond.git diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index 56ce20dada..cdee61517e 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -70,7 +70,7 @@ Lyric_engraver::process_music () { SCM text = event_->get_property ("text"); - if (ly_is_equal (text, scm_from_locale_string (" "))) + if (ly_is_equal (text, scm_from_ascii_string (" "))) { if (last_text_) last_text_->set_property ("self-alignment-X", @@ -95,8 +95,11 @@ get_voice_to_lyrics (Context *lyrics) bool searchForVoice = to_boolean (lyrics->get_property ("searchForVoice")); SCM avc = lyrics->get_property ("associatedVoiceContext"); - if (Context *c = Context::unsmob (avc)) - return c; + if (Context *c = unsmob (avc)) + { + if (!c->is_removable ()) + return c; + } SCM voice_name = lyrics->get_property ("associatedVoice"); string nm = lyrics->id_string (); @@ -116,26 +119,11 @@ get_voice_to_lyrics (Context *lyrics) if (!scm_is_symbol (voice_type)) return 0; - Context *parent = lyrics; - Context *voice = 0; - while (parent && !voice) - { - voice = find_context_below (parent, voice_type, nm); - parent = parent->get_parent_context (); - } - + Context *voice = find_context_near (lyrics, voice_type, nm); if (voice) return voice; - parent = lyrics; - voice = 0; - while (parent && !voice) - { - voice = find_context_below (parent, voice_type, ""); - parent = parent->get_parent_context (); - } - - return voice; + return find_context_near (lyrics, voice_type, ""); } Grob * @@ -145,8 +133,8 @@ get_current_note_head (Context *voice) for (SCM s = voice->get_property ("busyGrobs"); scm_is_pair (s); s = scm_cdr (s)) { - Grob *g = Grob::unsmob (scm_cdar (s));; - Moment *end_mom = Moment::unsmob (scm_caar (s)); + Grob *g = unsmob (scm_cdar (s));; + Moment *end_mom = unsmob (scm_caar (s)); if (!end_mom || !g) { programming_error ("busyGrobs invalid"); @@ -156,7 +144,7 @@ get_current_note_head (Context *voice) // It's a bit irritating that we just have the length and // duration of the Grob. Moment end_from_now = - get_event_length (Stream_event::unsmob (g->get_property ("cause")), now) + get_event_length (unsmob (g->get_property ("cause")), now) + now; // We cannot actually include more than a single grace note // using busyGrobs on ungraced lyrics since a grob ending on @@ -170,7 +158,7 @@ get_current_note_head (Context *voice) // here. Not with this mechanism. if ((*end_mom == end_from_now) && dynamic_cast (g) - && Note_head::has_interface (g)) + && has_interface (g)) { return g; }