#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
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);
};
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 ();
ADD_TRANSLATOR (Slur_engraver,
/* doc */ "Build slur grobs from slur events",
/* create */ "Slur",
- /* accept */ "slur-event",
- /* read */ "slurMelismaBusy doubleSlurs",
+ /* read */
+ "slurMelismaBusy "
+ "doubleSlurs ",
+
/* write */ "");