On Tue, 12 Mar 2024 15:50:21 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

>> modules/javafx.controls/src/main/java/javafx/scene/control/skin/TreeTableCellSkin.java
>>  line 133:
>> 
>>> 131:     protected double computePrefWidth(double height, double topInset, 
>>> double rightInset, double bottomInset,
>>> 132:             double leftInset) {
>>> 133:         if (LabeledHelper.isUseContentWidth() || 
>>> isDeferToParentForPrefWidth) {
>> 
>> I'm not conviced that this is the correct solution here. 
>> First of all I would keep this PR simple and ONLY add the truncated Property.
>> Second, I would rather want to see if this can be changed without adding 
>> some flags which once again will not help application developers that may 
>> want to extend something like this.
>> 
>> IMO, the separation of concern is wrong. A Cell should always give back the 
>> prefWidth, other callers should think if they want to use the pref width or 
>> the table column width.
>> 
>> In order to move this forward, I would like to see only the necessary 
>> changes, which is the truncated property. Some tests for it would be good as 
>> well.
>
> Thank you for the feedback! 
> 
> The property is being added to Labeled, which happens to be a base class for 
> the cells' skins.  The truncated property therefore must work in all the 
> subclasses, even those where computePrefWidth is hacked via 
> `Properties.DEFER_TO_PARENT_PREF_WIDTH`.
> 
>> Second, I would rather want to see if this can be changed without adding 
>> some flags which once again will not help application developers that may 
>> want to extend something like this.
> 
> This is a much more difficult task:  First, it needs a careful discussion on 
> which APIs to add, if any (there is a possibility that some people might say 
> that no new APIs are needed as one can always create an instance of Text or 
> Label and use it to get the sizing).  There might be a need to undo the hacks 
> made by the founding father such as `Properties.DEFER_TO_PARENT_PREF_WIDTH`.  
> I would say all this is out of scope for this PR, as it achieves its goal 
> without introducing the new APIs.
> 
>> IMO, the separation of concern is wrong. A Cell should always give back the 
>> prefWidth, other callers should think if they want to use the pref width or 
>> the table column width.
> 
> Why cells are controls is slightly beyond me, but who am I to ask?  I would 
> say there should be one control in this picture, and that is TableView (or 
> any other cell-based control) whose job is to size and lay out its various 
> parts.  The current design is different, and it is out of scope for this PR 
> to change the design.
> 
>> In order to move this forward, I would like to see only the necessary changes
> 
> And that 's exactly what you see here - only the necessary changes (that 
> unfortunately include undoing the earlier hacks in cells).
> 
> As for tests - I certainly agree, but that would be a manual test.  The 
> behavior can be verified with the examples in JDK-8205211, I just felt the 
> value of a manual test is rather low.  What I would rather see is an 
> automated test that actually verifies the new property behavior down to a 
> pixel.  Any ideas how to make one?

Okay.

Tests: Well, there are some properties we can test here:
- wrapText = true -> height should be used -> check truncated 
- width changed -> check truncated 
- text changed -> check truncated

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1389#discussion_r1526007604

Reply via email to