RFR: 8313424: JavaFX controls in the title bar [v19]

Michael Strauß mstrauss at openjdk.org
Thu Nov 7 03:24:49 UTC 2024


On Tue, 5 Nov 2024 16:19:50 GMT, Andy Goryachev <angorya at openjdk.org> wrote:

>> 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?)

I don't want to do this, not because I don't want to write documentation, but because I see a very real risk of over-specifying these kinds of things. For app developers, it shouldn't matter if a close button is drawn by the OS or by JavaFX, the only thing that matters is that they _are_ drawn, and it is not the responsibility of the application developer to do it.

The specification of `StageStyle.EXTENDED` says:

* An extended window has the default window buttons (minimize, maximize, close), but no system-provided
* draggable header bar.


That's what is important in my opinion: if you choose this stage style, you will get window buttons (however this is done is of no interest), but you will not get a header bar.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1605#discussion_r1831999128


More information about the openjfx-dev mailing list