From: Joe Neeman Date: Thu, 26 Oct 2006 07:49:48 +0000 (+0000) Subject: * lily/system.cc (get_paper_system): X-Git-Tag: release/2.10.0-2~81 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2df5b8e5efea6ea9c7494cc92491261fa027acf1;p=lilypond.git * lily/system.cc (get_paper_system): * lily/paper-book.cc (systems): move most of the backwards compatibility stuff into Paper_book::systems --- diff --git a/ChangeLog b/ChangeLog index 511fdb4857..61b5e01db8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2006-10-26 Joe Neeman + * lily/system.cc (get_paper_system): + * lily/paper-book.cc (systems): + move most of the backwards compatibility stuff into + Paper_book::systems + * Documentation/topdocs/NEWS.tely: add 2 entries for the page breaking stuff diff --git a/lily/paper-book.cc b/lily/paper-book.cc index d41feabbf4..37a156238a 100644 --- a/lily/paper-book.cc +++ b/lily/paper-book.cc @@ -11,6 +11,7 @@ #include "grob.hh" #include "main.hh" #include "output-def.hh" +#include "paper-column.hh" #include "paper-score.hh" #include "paper-system.hh" #include "text-interface.hh" @@ -236,14 +237,14 @@ set_system_penalty (SCM sys, SCM header) { vector cols = ps->get_columns (); if (cols.size ()) - cols.back ()->set_property ("page-break-permission", sym); + { + Paper_column *col = dynamic_cast (cols.back ()); + col->set_property ("page-break-permission", sym); + col->find_prebroken_piece (LEFT)->set_property ("page-break-permission", sym); + } } else if (Prob *pb = unsmob_prob (sys)) - { - pb->set_property ("page-break-permission", sym); - /* backwards compatibility for the old page breaker */ - pb->set_property ("penalty", scm_from_int (b ? -10001 : 10001)); - } + pb->set_property ("page-break-permission", sym); } } } @@ -374,6 +375,7 @@ Paper_book::systems () systems_ = scm_reverse (systems_); + /* backwards compatibility for the old page breaker */ int i = 0; Prob *last = 0; for (SCM s = systems_; scm_is_pair (s); s = scm_cdr (s)) @@ -386,6 +388,16 @@ Paper_book::systems () && !scm_is_number (ps->get_property ("penalty"))) ps->set_property ("penalty", scm_from_int (10000)); last = ps; + + if (scm_is_pair (scm_cdr (s))) + { + SCM perm = ps->get_property ("page-break-permission"); + Prob *next = unsmob_prob (scm_cadr (s)); + if (perm == SCM_EOL) + next->set_property ("penalty", scm_from_int (10001)); + else if (perm == ly_symbol2scm ("force")) + next->set_property ("penalty", scm_from_int (-10001)); + } } return systems_; diff --git a/lily/system.cc b/lily/system.cc index 32dd2f367d..0649849b21 100644 --- a/lily/system.cc +++ b/lily/system.cc @@ -404,13 +404,6 @@ System::get_paper_system () pl->set_property ("page-break-penalty", right_bound->get_property ("page-break-penalty")); pl->set_property ("page-turn-penalty", right_bound->get_property ("page-turn-penalty")); - /* backwards compatibility with the old page breaker */ - SCM perm = left_bound->get_property ("page-break-permission"); - if (!scm_is_symbol (perm)) - pl->set_property ("penalty", scm_from_double (10001)); - else if (perm == ly_symbol2scm ("force")) - pl->set_property ("penalty", scm_from_double (-10001)); - if (!scm_is_pair (pl->get_property ("refpoint-Y-extent"))) { Interval staff_refpoints;