X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fslur-engraver.cc;h=864ea7747363dd13e982b0fb0439f0457279954f;hb=b8f63200f0dde97e6d066e5f1082808e224d9774;hp=3ee546c3bf16aa03ae49677dbc41743482f2c7e5;hpb=abbdb46061be5c0a0682059d1f86bf3e44ca5cf3;p=lilypond.git diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 3ee546c3bf..864ea77473 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -19,6 +19,17 @@ #include "translator.icc" + +/* + NOTE NOTE NOTE + + This is largely similar to Phrasing_slur_engraver. Check if fixes + apply there too. + + (on principle, engravers don't use inheritance for code sharing) + + */ + /* 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 @@ -43,11 +54,14 @@ protected: DECLARE_ACKNOWLEDGER (text_script); DECLARE_ACKNOWLEDGER (tie); DECLARE_ACKNOWLEDGER (tuplet_number); + void acknowledge_extra_object (Grob_info); void stop_translation_timestep (); - virtual void finalize (); void process_music (); + virtual void finalize (); + + public: TRANSLATOR_DECLARATIONS (Slur_engraver); }; @@ -182,6 +196,17 @@ Slur_engraver::process_music () void Slur_engraver::stop_translation_timestep () { + if (Grob *g = unsmob_grob (get_property ("breakableSeparationItem"))) + { + for (vsize i = 0; i < end_slurs_.size (); i++) + Slur::add_extra_encompass (end_slurs_[i], g); + + if (!events_[START]) + for (vsize i = 0; i < slurs_.size (); i++) + Slur::add_extra_encompass (slurs_[i], g); + } + + for (vsize i = 0; i < end_slurs_.size (); i++) announce_end_grob (end_slurs_[i], SCM_EOL); end_slurs_.clear (); @@ -199,6 +224,8 @@ ADD_ACKNOWLEDGER (Slur_engraver, tuplet_number); ADD_TRANSLATOR (Slur_engraver, /* doc */ "Build slur grobs from slur events", /* create */ "Slur", - /* accept */ "slur-event", - /* read */ "slurMelismaBusy doubleSlurs", + /* read */ + "slurMelismaBusy " + "doubleSlurs ", + /* write */ "");