From 18ad3a686c7b46eb50f8abdcd5070ed58558f66b Mon Sep 17 00:00:00 2001 From: Joe Neeman Date: Mon, 12 Nov 2007 09:38:34 +1100 Subject: [PATCH] Fix 446 and 506. Prevent grobs with 'avoid-slur = 'around from messing up cross-staff stuff. --- lily/script-interface.cc | 13 ++++++++++++- scm/define-grobs.scm | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lily/script-interface.cc b/lily/script-interface.cc index 6db959113e..b965959d5d 100644 --- a/lily/script-interface.cc +++ b/lily/script-interface.cc @@ -79,7 +79,18 @@ Script_interface::calc_cross_staff (SCM smob) { Grob *me = unsmob_grob (smob); Grob *stem = Note_column::get_stem (me->get_parent (X_AXIS)); - return scm_from_bool (stem && to_boolean (stem->get_property ("cross-staff"))); + + if (stem && to_boolean (stem->get_property ("cross-staff"))) + return SCM_BOOL_T; + + Grob *slur = unsmob_grob (me->get_object ("slur")); + SCM avoid_slur = me->get_property ("avoid-slur"); + if (slur && to_boolean (slur->get_property ("cross-staff")) + && (avoid_slur == ly_symbol2scm ("outside") + || avoid_slur == ly_symbol2scm ("around"))) + return SCM_BOOL_T; + + return SCM_BOOL_F; } MAKE_SCHEME_CALLBACK (Script_interface, print, 1); diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index a93a209eb7..a1ba5c399b 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1828,6 +1828,7 @@ (avoid-slur . around) (slur-padding . 0.5) (script-priority . 200) + (cross-staff . ,ly:script-interface::calc-cross-staff) ;; todo: add X self alignment? (meta . ((class . Item) (interfaces . (text-script-interface -- 2.39.2