On Tue, 5 Nov 2024 06:00:55 GMT, Michael Strauß <mstra...@openjdk.org> wrote:

>> modules/javafx.graphics/src/main/java/javafx/application/ConditionalFeature.java
>>  line 156:
>> 
>>> 154:      * Indicates that a system supports {@link 
>>> javafx.stage.StageStyle#EXTENDED}.
>>> 155:      * <p>
>>> 156:      * This feature is currently supported on Windows, Linux, and 
>>> macOS.
>> 
>> would it make sense to add more information similarly to UNIFIED_WINDOW on 
>> L151?
>> maybe pointing to different levels of support?
>> 
>> I don't know whether it makes sense to bring the whole table from the JEP 
>> here, but maybe somewhere (HeaderBar)?
>
> It links directly to `StageStyle.EXTENDED`, which contains lots of 
> information. I don't think we need it here.
> 
> By the way, there are no support levels. The feature is supported in its 
> entirety, as specified, on all desktop platforms. The table in the JEP is 
> just informational to help OpenJFX developers understand what we're talking 
> about. It's not a specification, and it can't be a specification because we 
> either don't control things (for example, we have no influence on rounded 
> corners, this could be changed with any future OS version) or because we'd be 
> specifying us into a corner. There's no point prescribing every minute 
> detail, and then being responsible to keep it working _exactly_ as described, 
> even though the semantics are unchanged.
> 
> The relevant parts are specified in `StageStyle.EXTENDED` and `HeaderBar`, 
> and I wouldn't go further than this. We don't specify the details of 
> `StageStyle.DECORATED` for each OS; why should we do it for 
> `StageStyle.EXTENDED`?

I guess you are right here: from the app dev perspective, there is no 
difference between the supported platforms.  All good.

I do suggest to bring a condensed version of the table in the JEP (or a simple 
<ul> here to show what's being painted by the platform and what is not.  In 
other words, instead of reading 1k of text, I want to see a short list 
indicating that, for example, close button is painted by the platform, and the 
title bar is not painted.

Can you do something like this?  (Alternatively, there might be a better place 
to do that, but where?)

>> modules/javafx.graphics/src/main/java/javafx/scene/layout/HeaderBar.java 
>> line 53:
>> 
>>> 51:  * account for the default window buttons (minimize, maximize, close). 
>>> If a child is configured to be
>>> 52:  * centered in the {@code center} area, it is laid out with respect to 
>>> the stage, and not with respect
>>> 53:  * to the {@code center} area. This ensures that the child will appear 
>>> centered in the stage regardless
>> 
>> should there be more fine tuned control for growing/shrinking?
>> 
>> can the application just add a single container like GridPane that handles 
>> the resizing?
>
> What do you mean with growing and shrinking?
> 
> An application can add a single `GridPane` to `HeaderBar.center`, and set its 
> prefWidth to `POSITIVE_INFINITY`. This will extend the `GridPane` across the 
> entire width of the header bar (excluding the window button area).

maybe what's needed is to borrow some text from the `BorderPane`, along the 
lines of 

> "The top and bottom children will be resized to their preferred heights and 
> extend the width of the border pane. The left and right children will be 
> resized to their preferred widths and extend the length between the top and 
> bottom nodes. And the center node will be resized to fill the available space 
> in the middle. Any of the positions may be null. "

the important parts are
- how children are resized
- any can be null

(the layout in the HB is like the one in the `BorderPane`, right?)

>> modules/javafx.graphics/src/main/java/javafx/scene/layout/HeaderBar.java 
>> line 59:
>> 
>>> 57:  * {@code HeaderBar} honors the minimum, preferred, and maximum sizes 
>>> of its children. If the child's
>>> 58:  * resizable range prevents it from be resized to fit within its 
>>> position, it will be vertically centered
>>> 59:  * relative to the available space; this alignment can be customized 
>>> with a layout constraint.
>> 
>> what if the components are too large to fit, will clipping occur?  should 
>> this behavior be mentioned?
>
> The components can't be too large to fit:
> `{@code HeaderBar} honors the minimum, preferred, and maximum sizes of its 
> children.`

I want to know what happens when the layout is over-constrained.  For example, 
consider the layout to have the leading, the center, and the trailing nodes 
set, and the leading one has minWidth set to 10_000.  What happens?

Will the center and the trailing nodes be shown or clipped?  will the layout 
attempt to squeeze all three to fit the available space?

Can I get this answer from the javadoc?

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r1829645476
PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r1829654387
PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r1829666593

Reply via email to