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

Reply via email to