On Wed, 5 Jul 2023 16:53:41 GMT, Andy Goryachev <ango...@openjdk.org> wrote:
>> modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/ResizeHelper.java >> line 77: >> >>> 75: double cmin = snapCeil(c.getMinWidth()); // always >>> honor min width! >>> 76: double cmax = snapFloor(c.getMaxWidth()); // >>> TableColumnBase.doSetWidth() clamps to (min,max) range >>> 77: min[i] = cmin; >> >> Looking at `doSetWidth` I see that it clamps using unsnapped values, so the >> column can still be given an unsnapped size. When scale is 1.0, and the >> column for example has its min/max width set to 20.1 and 20.9, then snapCeil >> is 21 and snapFloor is 20 (so maximum is less than minimum, which may >> already be a bit dubious). When `doSetWidth` is called it will be clamped, >> resulting in `20.1` or `20.9`. > > For some reason, I've decided to leave that as is, but since you pointed it > out, I think it ought to be fixed. > > I am going to implement proper snapping logic in > ResizeFeaturesBase.setColumnWidth() using private APIs, with the intent to > eventually convert them to public APIs with > https://bugs.openjdk.org/browse/JDK-8311527 As with my earlier comment in `ResizeFeaturesBase` (which you fixed), I don't think we should be using different snapping functions for min and max. I recommend `snapCeil` for both. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1156#discussion_r1934655915