> One suggestion: in the "what is the EXTENDED stage style?" section, is it 
> possible to provide a table showing which elements are provided by the OS and 
> which are provided by FX, and which are not provided, per platform?

I've added a table with some information to the JEP.


> Also, since the JEP mentions that platform buttons are "superimposed", does 
> it mean FX can style and place things underneath the platform decorations?

Yes, that's possible. Aside from the Scene itself, applications might
want to place a background image below the window buttons.


> Is the platform title bar background used in the area occupied by the 
> platform buttons, or only the buttons are superimposed?

Only the buttons themselves are superimposed, the background is left
entirely to JavaFX. This could also potentially include
transparent/translucent window backgrounds in the future, if we ever
get this feature.


> HeaderBar: I think the requirements / rules for this component need to be 
> further explained/clarified.  Can an app add two HeaderBars?  What happens 
> when the HeaderBar is added at the bottom?

I've added an API note explaining that while technically possible, an
application should not do these things because it would lead to a bad
user experience.


> Or maybe the EXTENDED style needs to create the top level container 
> automatically so there is only one header bar which is on top?

This would unnecessarily bifurcate the JavaFX scene graph into two
distinct parts. Keep in mind that we want maximum flexibility for
applications, and that includes the option to have controls that span
the client and header area. Take the Chrome browser as an example: you
have essentially a TabPane where the tabs are located in the header
area, and the tab content is located in the client area. This requires
us to have a single scene graph.

> When the header bar is empty, does it have the minimum height - maybe 
> determined by the platform buttons or a typical platform title bar height?

Maybe. But should we? Let me think about that.


> As an alternative, maybe we should, instead of inventing a new stage style, 
> provide a Region that hosts the native open/close/system menu/... buttons?  
> Or do we actually need the EXTENDED style for its borders and shadows?

The EXTENDED stage style is required for two reasons:
1. It gives us native borders, shadows, and window animations; none of
these are available with the UNDECORATED style. Especially on Windows,
there is quite a bit of native code required to make this work.
2. Crucially, it activates the machinery for all of the window
behaviors (window buttons, dragging, snap layouts). This is different
from all of the other styles, because it requires bidirectional
communication with the JavaFX application: for example, when the
native window manager determines whether a dragging behavior should be
started, is usually knows exactly whether you clicked on the title bar
(because the title bar is provided by the window manager). With custom
title bars, however, the window manager doesn't know that. So it needs
to call into JavaFX and ask the scene graph whether a header bar is at
the click coordinate.

Reply via email to