From f2bd717cbca1a2f3d00b2dc37eca5be39c6e2c33 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Sun, 22 Jan 2012 18:39:59 +0100 Subject: [PATCH] parser.yy: strip music-wrapper-music inside of EventChord This makes things like work. --- lily/event-chord-iterator.cc | 5 ++++- lily/parser.yy | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lily/event-chord-iterator.cc b/lily/event-chord-iterator.cc index 899287a999..4f3c081e26 100644 --- a/lily/event-chord-iterator.cc +++ b/lily/event-chord-iterator.cc @@ -47,7 +47,10 @@ Event_chord_iterator::process (Moment m) scm_is_pair (s); s = scm_cdr (s)) { Music *mus = unsmob_music (scm_car (s)); - report_event (mus); + while (mus && mus->is_mus_type ("music-wrapper-music")) + mus = unsmob_music (mus->get_property ("element")); + if (mus) + report_event (mus); } for (SCM s = get_music ()->get_property ("events"); scm_is_pair (s); s = scm_cdr (s)) diff --git a/lily/parser.yy b/lily/parser.yy index e913d88cf1..bc89663f9e 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -2146,7 +2146,12 @@ chord_body_element: } | music_function_chord_body { - if (!unsmob_music ($$)->is_mus_type ("rhythmic-event")) { + Music *m = unsmob_music ($1); + + while (m && m->is_mus_type ("music-wrapper-music")) + m = unsmob_music (m->get_property ("element")); + + if (!(m && m->is_mus_type ("rhythmic-event"))) { parser->parser_error (@$, _ ("not a rhythmic event")); $$ = SCM_UNDEFINED; } -- 2.39.5