From: Joe Neeman Date: Tue, 26 Oct 2010 00:21:00 +0000 (-0700) Subject: Fix min_page_count in page-turn-breaking. X-Git-Tag: release/2.13.39-1~37 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=ee5919c085b841bae3f4f323a5007321f660f47c;p=lilypond.git 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. --- 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; }