On Mon, Mar 21, 2011 at 11:18 PM, Keith OHara <k-ohara5...@oco.net> wrote:
> On Mon, 21 Mar 2011 23:06:12 -0700, Joe Neeman <joenee...@gmail.com> > wrote: > > >> Unfortunately, if I protect the assignment to the property with an if >>> (!pure), I am letting the page-breaking planning rely on the >>> user-requested >>> affinities, and then changing them for the page-layout phase. The >>> boolean >>> 'pure' asks explicitly that we keep the state unchanged, but there was >>> always an implicit expectation that certain properties are unchanging. >>> >> >> >> I don't quite understand this comment. The only effect of set_property is >> to >> prevent the warning from being triggered more than once per system. In >> fact, >> the layout would be completely unchanged even if you removed the whole >> if(after_affinity > before_affinity) block. So why does it matter if we >> condition set_property on something? >> >> In a typical case, the effect is after->set_property("staff-affinity", > DOWN) > and then when get_spacing_spec is called to determine the next spring, > working through the (non)staffs in the system, it will look up the staff > affinity we just set for use as before_affinity, thus the next spring is > changed. The code in the if(after_affinity>before_affinity) block does > change the output for the example at the head of issue 1555. > Ok, good point. In that case, a better way to avoid too many warnings might be just to add a static bool to check if a warning has already been issued. Joe
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel