From 558c1a68ce11fe8f346c3e0a0e8c3ef59670e6d9 Mon Sep 17 00:00:00 2001 From: hanwen Date: Sat, 1 Oct 2005 22:52:38 +0000 Subject: [PATCH] (after_line_breaking): suicide empty tuplet bracket. (print): only connect to next bracket if the next one is alive. --- ChangeLog | 6 ++++++ lily/tuplet-bracket.cc | 28 ++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 20cf98e571..8176f8fbb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-02 Han-Wen Nienhuys + + * 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 * lily/bar-number-engraver.cc: correct docs. diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index 8a18e4c7b9..94a3c05c78 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -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 (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) { -- 2.39.5