X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fslur-engraver.cc;h=bad108894a7d94d031eb26b7ec2aaef4b02bd997;hb=56ad9c71638c9b3e23f75a85a9ba96f19566d400;hp=2f1cc065e8f5b6c87e310fd01f3debb35142e61b;hpb=a56e7512be4d7cf266c9e6eca8e86e631701dae3;p=lilypond.git diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 2f1cc065e8..bad108894a 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -12,6 +12,7 @@ #include "directional-element-interface.hh" #include "engraver.hh" #include "spanner.hh" +#include "tie.hh" /* It is possible that a slur starts and ends on the same note. At @@ -89,16 +90,30 @@ Slur_engraver::acknowledge_grob (Grob_info info) } else { + SCM inside = e->get_property ("inside-slur"); if (Tie::has_interface (e) - || to_boolean (e->get_property ("inside-slur"))) + || to_boolean (inside)) { for (int i = slurs_.size (); i--; ) New_slur::add_extra_encompass (slurs_[i], e); for (int i = end_slurs_.size (); i--; ) New_slur::add_extra_encompass (end_slurs_[i], e); } + else if (inside == SCM_BOOL_F) + { + Grob *slur = slurs_.size()?slurs_[0] : 0; + slur = (end_slurs_.size () && !slur) + ? end_slurs_[0] : slur; + + if (slur) + { + e->add_offset_callback (New_slur::outside_slur_callback_proc, Y_AXIS); + e->set_property ("slur", slur->self_scm()); + } + } } } + void Slur_engraver::finalize () {