From ee5919c085b841bae3f4f323a5007321f660f47c Mon Sep 17 00:00:00 2001 From: Joe Neeman Date: Mon, 25 Oct 2010 17:21:00 -0700 Subject: [PATCH] Fix min_page_count in page-turn-breaking. When the page-turn-breaker is running, the page breaking routines can be called on subsets of the book. Ensure that the special handling for the last page is only invoked for the last page of a book, not just the last page of a subset. --- lily/page-breaking.cc | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/lily/page-breaking.cc b/lily/page-breaking.cc index 22fe336da5..f3b1f84de3 100644 --- a/lily/page-breaking.cc +++ b/lily/page-breaking.cc @@ -999,18 +999,21 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num) calculations that treated it as a non-last page were ok. */ - cur_page_height = page_height (first_page_num + ret - 1, true); - cur_page_height -= min_whitespace_at_top_of_page (cached_line_details_[page_starter]); - cur_page_height -= min_whitespace_at_bottom_of_page (cached_line_details_.back ()); - - Real cur_height = cur_rod_height + ((ragged_last () || ragged ()) ? cur_spring_height : 0); - if (!too_few_lines (line_count - cached_line_details_.back ().compressed_nontitle_lines_count_) - && cur_height > cur_page_height - /* don't increase the page count if the last page had only one system */ - && cur_rod_height > cached_line_details_.back ().full_height ()) - ret++; - - assert (ret <= cached_line_details_.size ()); + if (is_last ()) + { + cur_page_height = page_height (first_page_num + ret - 1, true); + cur_page_height -= min_whitespace_at_top_of_page (cached_line_details_[page_starter]); + cur_page_height -= min_whitespace_at_bottom_of_page (cached_line_details_.back ()); + + Real cur_height = cur_rod_height + ((ragged_last () || ragged ()) ? cur_spring_height : 0); + if (!too_few_lines (line_count - cached_line_details_.back ().compressed_nontitle_lines_count_) + && cur_height > cur_page_height + /* don't increase the page count if the last page had only one system */ + && cur_rod_height > cached_line_details_.back ().full_height ()) + ret++; + assert (ret <= cached_line_details_.size ()); + } + return ret; } -- 2.39.2