Reviewers: Keith,

Message:
On 2012/06/04 06:36:27, Keith wrote:
Works good for me, and seems to make sense.

Of course, this means the original tuplet/script collision never was
fixed for
for scripts under slurs, and now we do not even try.

Exactly - it's a large chunk to chew.  The tuplet bracket position
depends on scripts, which depend on slurs, which depend on tuplet
brackets.  I'm sure there are rules we could put in place to break the
cycle, but it'd require rethinking Y-offset callbacks for some of these
grobs.

~Mike

Description:
Corrects typesetting for tuplet bracket with inside-slur scripts

Please review this at http://codereview.appspot.com/6282044/

Affected files:
  M lily/slur.cc
  M lily/tuplet-bracket.cc


Index: lily/slur.cc
diff --git a/lily/slur.cc b/lily/slur.cc
index a41aada7a7e5c31ef9e0aaadefe74a79d9486ad3..7e2cb1d1b02b4b82859f813eb043b3afbe6669a1 100644
--- a/lily/slur.cc
+++ b/lily/slur.cc
@@ -400,6 +400,12 @@ Slur::auxiliary_acknowledge_extra_object (Grob_info const &info,

   Grob *e = info.grob ();
   SCM avoid = e->get_property ("avoid-slur");
+  Grob *slur;
+  if (end_slurs.size () && !slurs.size ())
+    slur = end_slurs[0];
+  else
+    slur = slurs[0];
+
   if (Tie::has_interface (e)
       || avoid == ly_symbol2scm ("inside"))
     {
@@ -407,16 +413,12 @@ Slur::auxiliary_acknowledge_extra_object (Grob_info const &info,
         add_extra_encompass (slurs[i], e);
       for (vsize i = end_slurs.size (); i--;)
         add_extra_encompass (end_slurs[i], e);
+      if (slur)
+        e->set_object ("slur", slur->self_scm ());
     }
   else if (avoid == ly_symbol2scm ("outside")
            || avoid == ly_symbol2scm ("around"))
     {
-      Grob *slur;
-      if (end_slurs.size () && !slurs.size ())
-        slur = end_slurs[0];
-      else
-        slur = slurs[0];
-
       if (slur)
         {
           chain_offset_callback (e, outside_slur_callback_proc, Y_AXIS);
Index: lily/tuplet-bracket.cc
diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc
index d566027d2af5d2e82dc89c12e6e85cef7e0f4494..d211dcae38f55b39c91cb9095791816eb07396cc 100644
--- a/lily/tuplet-bracket.cc
+++ b/lily/tuplet-bracket.cc
@@ -650,10 +650,7 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy)

// assume that if a script is avoiding slurs, it should not get placed
           // under a tuplet bracket
-          SCM avoid = scripts[i]->get_property ("avoid-slur");
-          if (unsmob_grob (scripts[i]->get_object ("slur"))
-              && (avoid == ly_symbol2scm ("outside")
-                  || avoid == ly_symbol2scm ("around")))
+          if (unsmob_grob (scripts[i]->get_object ("slur")))
             continue;

           Interval script_x (scripts[i]->extent (commonx, X_AXIS));



_______________________________________________
lilypond-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to