On Fri, 31 Mar 2023 08:40:15 GMT, Jose Pereda <jper...@openjdk.org> wrote:

>> The determined `prefWidth` of a `TableCell` could be `0.0` when a 
>> `fixedCellSize` is set.
>> This happened because the `TableCell` may not have a skin since it was never 
>> added to the scene graph yet.
>> 
>> The fix is to make sure we get the `prefWidth` after the `TableCell` was 
>> added to the scene graph.
>> That is also the reason why the problem only happened the first time and 
>> never again after (skin is then already created).
>
> modules/javafx.controls/src/main/java/javafx/scene/control/skin/TableRowSkinBase.java
>  line 358:
> 
>> 356:                 // Note: We have to determine the pref width here 
>> because the add operation above may trigger the skin
>> 357:                 // creation first, which is what makes it possible to 
>> get a correct value here in the first place.
>> 358:                 width = tableCell.prefWidth(height);
> 
> Alternatively, you could have just kept the first call to 
> `tableCell::prefWidth` as it was, and add a second one only inside the above 
> if expression, right after the tableCell is added to the tableRow. 
> I take that, only for such case, there would be two calls instead of one, but 
> it seems to be somehow a cleaner patch and explanation

True and I also thought about it, but I'm still in favor of calling it only as 
much as needed

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1077#discussion_r1154348166

Reply via email to