From 891840d4b25b71e9caac50174077d6461bb5cc7f Mon Sep 17 00:00:00 2001 From: Joe Neeman Date: Mon, 21 Jun 2010 23:11:42 +0300 Subject: [PATCH] Fix 1062. Include RehearsalMark, etc. in the pure-height of pre-line-breaking systems. --- lily/system.cc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lily/system.cc b/lily/system.cc index f938b8322e..c801b2cc1d 100644 --- a/lily/system.cc +++ b/lily/system.cc @@ -583,7 +583,7 @@ System::part_of_line_pure_height (vsize start, vsize end, bool begin) vector offsets = Align_interface::get_minimum_translations (alignment, staves, Y_AXIS, true, start, end); Interval ret; - for (vsize i = 0; i < staves.size(); ++i) + for (vsize i = 0; i < staves.size (); ++i) { Interval iv = begin? Axis_group_interface::begin_of_line_pure_height (staves[i], start) : @@ -592,6 +592,22 @@ System::part_of_line_pure_height (vsize start, vsize end, bool begin) iv.translate (offsets[i]); ret.unite (iv); } + + extract_grob_set (this, "elements", elts); + for (vsize i = 0; i < elts.size (); ++i) + { + Grob *g = elts[i]; + if (!dynamic_cast (g) && !Axis_group_interface::has_interface (g)) + { + Interval iv = g->pure_height (this, start, end); + Item *it = dynamic_cast (g); + Grob *col = it ? it->get_column () : 0; + bool item_at_beginning = col && (Paper_column::get_rank (col) == (int) start); + + if (g->is_live () && begin == item_at_beginning) + ret.unite (iv); + } + } return ret; } -- 2.39.2