It is possible that a slur starts and ends on the same note. At
least, it is for phrasing slurs: a note can be both beginning and
ending of a phrase.
+
*/
+/*
+ NOTE NOTE NOTE
+
+ This is largely similar to Slur_engraver. Check if fixes apply there too.
+
+ (on principle, engravers don't use inheritance for code sharing)
+
+ */
class Phrasing_slur_engraver : public Engraver
{
Drul_array<Stream_event *> events_;
*/
Direction d = to_dir (ev->get_property ("span-direction"));
if (d == START)
- events_[START] = ev;
+ ASSIGN_EVENT_ONCE (events_[START], ev);
else if (d == STOP && !slurs_.empty ())
- events_[STOP] = ev;
+ ASSIGN_EVENT_ONCE (events_[STOP], ev);
}
void
void
Phrasing_slur_engraver::acknowledge_script (Grob_info info)
{
- acknowledge_extra_object (info);
+ if (!info.grob ()->internal_has_interface (ly_symbol2scm ("dynamic-interface")))
+ acknowledge_extra_object (info);
}
void
ADD_ACKNOWLEDGER (Phrasing_slur_engraver, accidental);
ADD_ACKNOWLEDGER (Phrasing_slur_engraver, dynamic_line_spanner);
ADD_ACKNOWLEDGER (Phrasing_slur_engraver, fingering)
- ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column);
ADD_ACKNOWLEDGER (Phrasing_slur_engraver, script);
ADD_ACKNOWLEDGER (Phrasing_slur_engraver, slur);
ADD_ACKNOWLEDGER (Phrasing_slur_engraver, text_script);
ADD_TRANSLATOR (Phrasing_slur_engraver,
/* doc */ "Print phrasing slurs. Similar to @ref{Slur_engraver}",
/* create */ "PhrasingSlur",
- /* accept */ "phrasing-slur-event",
/* read */ "",
/* write */ "");