X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-column.cc;h=da3807c31d6f4ddb33fb75edf69c24ec3baf8175;hb=14f464d957b6a68710f0364fc7507b63eb0fcee6;hp=6ea2d268895dcb558f6136ca1d9f1709a92996f2;hpb=958e95822083954cad00e0a598eb9f12ceba67b9;p=lilypond.git diff --git a/lily/paper-column.cc b/lily/paper-column.cc index 6ea2d26889..da3807c31d 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -25,7 +25,6 @@ #include "font-interface.hh" #include "grob-array.hh" #include "lookup.hh" -#include "lookup.hh" #include "moment.hh" #include "output-def.hh" #include "paper-score.hh" @@ -204,7 +203,7 @@ Paper_column::break_align_width (Grob *me, SCM align_syms) (me, ly_symbol2scm ("elements"), (scm_is_eq (align_sym, ly_symbol2scm ("staff-bar")) ? Bar_line::non_empty_barline - : Break_alignment_interface::has_interface)); + : has_interface)); else { extract_grob_set (me, "elements", elts); @@ -391,6 +390,11 @@ Paper_column::print (SCM p) return t.smobbed_copy (); } +static bool grob_is_live (const Grob *g) +{ + return g && g->is_live (); +} + /* This is all too hairy. We use bounded-by-me to make sure that some columns are kept "alive". Unfortunately, when spanners are suicided, @@ -405,21 +409,8 @@ Paper_column::before_line_breaking (SCM grob) { Grob *me = unsmob (grob); - SCM bbm = me->get_object ("bounded-by-me"); - Grob_array *ga = unsmob (bbm); - if (!ga) - return SCM_UNSPECIFIED; - - vector &array (ga->array_reference ()); - - for (vsize i = array.size (); i--;) - { - Grob *g = array[i]; - - if (!g || !g->is_live ()) - /* UGH . potentially quadratic. */ - array.erase (array.begin () + i); - } + if (Grob_array *ga = unsmob (me->get_object ("bounded-by-me"))) + ga->filter (grob_is_live); return SCM_UNSPECIFIED; } @@ -441,7 +432,7 @@ Paper_column::is_extraneous_column_from_ligature (Grob *me) bool has_notehead = false; for (vsize i = 0; i < elts.size (); i++) { - if (Rhythmic_head::has_interface (elts[i])) + if (has_interface (elts[i])) { has_notehead = true; if (dynamic_cast (elts[i])->get_column () == me)