From 8473fd293d7f2031e3c285ba731b52bb24e0a175 Mon Sep 17 00:00:00 2001 From: Joe Neeman Date: Thu, 1 Feb 2007 22:55:48 +0200 Subject: [PATCH] more robustness for {break,turn,page}-permission --- lily/constrained-breaking.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lily/constrained-breaking.cc b/lily/constrained-breaking.cc index 714f8ce6ee..c688be6a1b 100644 --- a/lily/constrained-breaking.cc +++ b/lily/constrained-breaking.cc @@ -301,6 +301,17 @@ Constrained_breaking::Constrained_breaking (Paper_score *ps, vector const initialize (); } +static SCM +min_permission (SCM perm1, SCM perm2) +{ + if (perm1 == ly_symbol2scm ("force")) + return perm2; + if (perm1 == ly_symbol2scm ("allow") + && perm2 != ly_symbol2scm ("force")) + return perm2; + return SCM_EOL; +} + /* find the forces for all possible lines and cache ragged_ and ragged_right_ */ void Constrained_breaking::initialize () @@ -354,6 +365,13 @@ Constrained_breaking::initialize () line.break_permission_ = c->get_property ("line-break-permission"); line.page_permission_ = c->get_property ("page-break-permission"); line.turn_permission_ = c->get_property ("page-turn-permission"); + + /* turn permission should always be stricter than page permission + and page permission should always be stricter than line permission */ + line.page_permission_ = min_permission (line.break_permission_, + line.page_permission_); + line.turn_permission_ = min_permission (line.page_permission_, + line.turn_permission_); max_ext = max (max_ext, extent.length ()); line.extent_ = extent; -- 2.39.2