]> git.donarmstrong.com Git - lilypond.git/commitdiff
(after_line_breaking): suicide empty
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 1 Oct 2005 22:52:38 +0000 (22:52 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 1 Oct 2005 22:52:38 +0000 (22:52 +0000)
tuplet bracket.
(print): only connect to next bracket if the next one is alive.

ChangeLog
lily/tuplet-bracket.cc

index 20cf98e571aaa30c45e518f91b12d159f3899e1d..8176f8fbb213f2de212e6cda8c3c603b8e0f8a90 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-02  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * lily/tuplet-bracket.cc (after_line_breaking): suicide empty
+       tuplet bracket.
+       (print): only connect to next bracket if the next one is alive.
+
 2005-09-30  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * lily/bar-number-engraver.cc: correct docs.
index 8a18e4c7b9f361d767cc4316f392ffb3237b4071..94a3c05c78a6c462410b9087ef4ae5730e8a7999 100644 (file)
@@ -167,9 +167,28 @@ Tuplet_bracket::print (SCM smob)
       x_span[d] = robust_relative_extent (bounds[d], commonx, X_AXIS)[d];
       Direction break_dir = bounds[d]->break_status_dir ();
       Spanner *orig_spanner = dynamic_cast<Spanner *> (me->original_);
+
+      int neighbor_idx = me->get_break_index () - break_dir;
+
+      /*
+       UGH. dependency handling.
+       */
+      if (break_dir
+         && d == RIGHT
+         && neighbor_idx < orig_spanner->broken_intos_.size ())
+       {
+         Grob *neighbor = orig_spanner->broken_intos_[neighbor_idx];
+
+         // ugh, should inspect callback?  
+         Tuplet_bracket::after_line_breaking (neighbor->self_scm ());
+       }
+
       connect_to_other[d]
        = (break_dir
-          && (me->get_break_index () - break_dir < orig_spanner->broken_intos_.size ()));
+          && (neighbor_idx < orig_spanner->broken_intos_.size ()
+              && neighbor_idx >= 0)
+          && orig_spanner->broken_intos_[neighbor_idx]->is_live ());
+          
 
       if (connect_to_other[d])
        {
@@ -554,13 +573,18 @@ Tuplet_bracket::before_line_breaking (SCM smob)
 }
 
 MAKE_SCHEME_CALLBACK (Tuplet_bracket, after_line_breaking, 1);
-
 SCM
 Tuplet_bracket::after_line_breaking (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
   extract_grob_set (me, "note-columns", columns);
 
+  if (columns.is_empty())
+    {
+      me->suicide ();
+      return SCM_UNSPECIFIED;
+    }
+  
   Direction dir = get_grob_direction (me);
   if (!dir)
     {