lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Corrects typesetting for tuplet bracket with inside-slur scripts (is


From: mtsolo
Subject: Re: Corrects typesetting for tuplet bracket with inside-slur scripts (issue 6282044)
Date: Mon, 04 Jun 2012 06:45:40 +0000

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));





reply via email to

[Prev in Thread] Current Thread [Next in Thread]