From: David Kastrup Date: Fri, 10 Oct 2014 12:01:43 +0000 (+0200) Subject: Let Paper_column::break_align_width accept list of break-align symbols X-Git-Tag: release/2.19.16-1~2^2~65^2~9 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=e420ccea878d8758c3befeb441eff4e5b534d79e;p=lilypond.git Let Paper_column::break_align_width accept list of break-align symbols --- diff --git a/lily/paper-column.cc b/lily/paper-column.cc index f6e26ec6a1..a7ca3116c0 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -181,10 +181,13 @@ Paper_column::minimum_distance (Grob *left, Grob *right) } Interval -Paper_column::break_align_width (Grob *me, SCM align_sym) +Paper_column::break_align_width (Grob *me, SCM align_syms) { Grob *p = me->get_parent (X_AXIS); + if (scm_is_symbol (align_syms)) + align_syms = scm_list_1 (align_syms); + if (is_musical (me)) { me->programming_error ("tried to get break-align-width of a musical column"); @@ -192,22 +195,27 @@ Paper_column::break_align_width (Grob *me, SCM align_sym) } Grob *align = 0; - if (align_sym == ly_symbol2scm ("staff-bar") - || align_sym == ly_symbol2scm ("break-alignment")) - align - = Pointer_group_interface::find_grob (me, ly_symbol2scm ("elements"), - (align_sym == ly_symbol2scm ("staff-bar") - ? Bar_line::non_empty_barline - : Break_alignment_interface::has_interface)); - else + for (;!align && scm_is_pair (align_syms); align_syms = scm_cdr (align_syms)) { - extract_grob_set (me, "elements", elts); - for (vsize i = 0; i < elts.size (); i++) + SCM align_sym = scm_car (align_syms); + if (align_sym == ly_symbol2scm ("staff-bar") + || align_sym == ly_symbol2scm ("break-alignment")) + align = Pointer_group_interface::find_grob + (me, ly_symbol2scm ("elements"), + (align_sym == ly_symbol2scm ("staff-bar") + ? Bar_line::non_empty_barline + : Break_alignment_interface::has_interface)); + else { - if (elts[i]->get_property ("break-align-symbol") == align_sym) + extract_grob_set (me, "elements", elts); + for (vsize i = 0; i < elts.size (); i++) { - align = elts[i]; - break; + if (elts[i]->get_property ("break-align-symbol") == align_sym + && !elts[i]->extent (elts[i], X_AXIS).is_empty ()) + { + align = elts[i]; + break; + } } } }