From: Han-Wen Nienhuys Date: Mon, 15 Jul 2002 00:18:30 +0000 (+0000) Subject: * lily/paper-column.cc (before_line_breaking): urg. bugfix. X-Git-Tag: release/1.5.68~5 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=bdfe0b360b4d864feff276f4efbf58101c90d6b3;p=lilypond.git * lily/paper-column.cc (before_line_breaking): urg. bugfix. * lily/separating-line-group-engraver.cc (finalize): don't replace right-items, but add to list. This fixes a bug when a staff ends with cross-staff voice switching away. --- diff --git a/ChangeLog b/ChangeLog index be732e7134..34cb2665ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2002-07-15 Han-Wen + + * lily/paper-column.cc (before_line_breaking): urg. bugfix. + + * lily/separating-line-group-engraver.cc (finalize): don't replace + right-items, but add to list. This fixes a bug when a staff ends + with cross-staff voice switching away. + 2002-07-14 Han-Wen * input/mutopia/GNUmakefile: move mutopia/ to input/mutopia/ diff --git a/lily/paper-column.cc b/lily/paper-column.cc index c3260848da..df02af8fa8 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -149,21 +149,18 @@ Paper_column::before_line_breaking (SCM grob) SCM c = me->get_grob_property ("bounded-by-me"); SCM *ptrptr = &c; - while (gh_pair_p (c)) + while (gh_pair_p (*ptrptr)) { - Grob * g = unsmob_grob (gh_car (c)); + Grob * g = unsmob_grob (gh_car (*ptrptr)); if (!g || !g->live ()) { - *ptrptr = gh_cdr (c); + *ptrptr = gh_cdr (*ptrptr); } else { - ptrptr = SCM_CDRLOC (c); + ptrptr = SCM_CDRLOC (*ptrptr); } - - if (gh_pair_p(c)) - c = gh_cdr (c); } me->set_grob_property ("bounded-by-me", c); diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc index 29c393fb67..b21c434e67 100644 --- a/lily/separating-line-group-engraver.cc +++ b/lily/separating-line-group-engraver.cc @@ -77,17 +77,21 @@ void Separating_line_group_engraver::finalize () { SCM ccol = get_property ("currentCommandColumn"); + Grob *column = unsmob_grob (ccol); + sep_span_p_->set_bound (RIGHT, unsmob_grob (ccol)); typeset_grob (sep_span_p_); sep_span_p_ =0; for (int i= 0 ; i < last_spacings_.note_spacings_.size(); i++) { - last_spacings_.note_spacings_[i]->set_grob_property ("right-items", gh_cons (ccol, SCM_EOL)); + Pointer_group_interface::add_grob (last_spacings_.note_spacings_[i], + ly_symbol2scm ("right-items" ), + column); } - + if(last_spacings_.staff_spacing_ - && last_spacings_.staff_spacing_->column_l () == unsmob_grob (ccol)) + && last_spacings_.staff_spacing_->column_l () == column) { last_spacings_.staff_spacing_->suicide (); }