]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix 446 and 506.
authorJoe Neeman <joeneeman@gmail.com>
Sun, 11 Nov 2007 22:38:34 +0000 (09:38 +1100)
committerJoe Neeman <joeneeman@gmail.com>
Mon, 12 Nov 2007 05:47:52 +0000 (16:47 +1100)
Prevent grobs with 'avoid-slur = 'around from messing up cross-staff stuff.

lily/script-interface.cc
scm/define-grobs.scm

index 6db959113e846e182fb0d724956b8dc62a0ffa25..b965959d5df1f6226d27a55f370c7324e61b6192 100644 (file)
@@ -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);
index a93a209eb76c02554f6356a8eb7f2e30bb4848e6..a1ba5c399bcd9da72a126983a8ca1bafcdc56db6 100644 (file)
        (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