[Jeremias Maerki on ]

Yeah: Wow! Finn, you're the specialist here. Can you take the lead on
this one?

I'm hardly a specialist on the layout system, and that is where a good sized part of Manuels patch is, but in the property system I do not like the hack to LineHeightPropertyMaker and FontSizePropertyMaker that test for a PercentLength since it will not work for expressions. I assume that a FixedLength is returned because somebody (BlockLM.createLineManager?) tries to resolve line-height before a context is available. The solution is to delay resolution of line-height, by passing the Length into the LineLM.

Eventually the no-args getValue() and getNumericValue() should be removed. And a throws PropertyException added to the Length.getValue() signature. But that is for later.

In the layout system, I find to strange to see calls to the initialize() method from addAreas() and getParentArea(). I would rather see a public initialize() method that was called once from the outside, perhaps from AbstractLayoutManager.getChildLM() before a LM is traversed by getNextKnuthElements. But not all agree:


Other than that, the patch looks ok.

There is one thing I would have made differently: Instead of setting an PercentBase.XXX integer on the PropertyMakers I would set an instance of an implementation of PercentBase that implemented the rule by that property. So there would be a subclass of PercentBase for each of the rules you have identified in the PropertyHandling/Percentages wiki. That way the code for dealing with percentage rules can be placed in the property package instead of the LM package. The LM package only supplied the context that the rules can work on. But since I haven't written that code, I don't get to decide.


Reply via email to