> 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.