<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Iosevka Fixed SS16";
        panose-1:2 0 5 9 3 0 0 0 0 4;}
@font-face
        {font-family:"Times New Roman \(Body CS\)";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:10.0pt;
        font-family:"Aptos",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Iosevka Fixed SS16";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Thank you, Michael, this clarifies a lot.  And thank you for updating the JEP.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">In the table, you mention "</span><span style="font-family:"Segoe UI",sans-serif;color:#1F2328;background:#F6F8FA">custom implementation"</span><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">
 for resize borders.  What does it mean (who is providing the implementation?)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Also in the table, please add "right click to invoke the system menu" (this might be a windows-only feature), and the "window shadow" row.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">I see the native code in your PR refer to iOS, but not Android.  Can you add the two columns to the table (even if they are N/A right now)?
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">In the "<b>Superimposed window buttons"
</b>section, you mention that the window buttons automatically adapt to the Scene background, yet on Windows (10, I think) the color of buttons is a user-selectable item, as far as  I remember.  Can you elaborate, maybe with examples (in the JEP)?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">"the system-reserved areas will be empty" meaning non-null (0,0), right?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">"With the absence of a system-provided header bar, the <i>click-to-drag</i> and <i>double-click to maximize</i> behaviors are lost."  I read it as the application code must
 re-implement this functionality, yet afterward you say the HeaderBar provides it.  May be it should read "... behaviors would be lost" or something to that effect.  The main thing I want to know from reading the JEP is what parts the application developers
 should implement and what is provided by the new feature.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">"leftSystemInset and rightSystemInset" properties.  How does this work on RTL platforms?  Do these properties retain their left/right semantics, or should they be renamed leading/trailing?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">For HeaderBar: what are the steps to ensure that the height of the bar is exactly the same as the native?  Same question, but with two initial conditions: the children that
 can be enlarged or shrink, and the children that might have a minimum size, like TextArea for instance.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">What happens if the header bar width is less than the minimum size of its children?  Should the trailing children slide out of the view, or should the children be squished
 beyond their minimum size?  Could this be an option?  Could this be controlled in the same manner as the GridPane, for example?  Is the header bar always clipped?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Minor question: should there be an explicit safeguard against creating two HeaderBars, or placing them in the unusual place?  An exception perhaps?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">I hope most of your answers will end up as clarifications in the JEP, as the JEPs are typically the first thing an application developer looks in when trying to understand
 the new feature.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Thank you for your work and patience!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">-andy<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">openjfx-dev <openjfx-dev-retn@openjdk.org> on behalf of Michael Strauß <michaelstrau2@gmail.com><br>
<b>Date: </b>Thursday, October 24, 2024 at 14:30<br>
<b>To: </b><br>
<b>Cc: </b>openjfx-dev <openjfx-dev@openjdk.org><br>
<b>Subject: </b>Re: JEP: JavaFX controls in the title bar<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">> 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?<br>
<br>
I've added a table with some information to the JEP.<br>
<br>
<br>
> Also, since the JEP mentions that platform buttons are "superimposed", does it mean FX can style and place things underneath the platform decorations?<br>
<br>
Yes, that's possible. Aside from the Scene itself, applications might<br>
want to place a background image below the window buttons.<br>
<br>
<br>
> Is the platform title bar background used in the area occupied by the platform buttons, or only the buttons are superimposed?<br>
<br>
Only the buttons themselves are superimposed, the background is left<br>
entirely to JavaFX. This could also potentially include<br>
transparent/translucent window backgrounds in the future, if we ever<br>
get this feature.<br>
<br>
<br>
> 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?<br>
<br>
I've added an API note explaining that while technically possible, an<br>
application should not do these things because it would lead to a bad<br>
user experience.<br>
<br>
<br>
> Or maybe the EXTENDED style needs to create the top level container automatically so there is only one header bar which is on top?<br>
<br>
This would unnecessarily bifurcate the JavaFX scene graph into two<br>
distinct parts. Keep in mind that we want maximum flexibility for<br>
applications, and that includes the option to have controls that span<br>
the client and header area. Take the Chrome browser as an example: you<br>
have essentially a TabPane where the tabs are located in the header<br>
area, and the tab content is located in the client area. This requires<br>
us to have a single scene graph.<br>
<br>
> 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?<br>
<br>
Maybe. But should we? Let me think about that.<br>
<br>
<br>
> 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?<br>
<br>
The EXTENDED stage style is required for two reasons:<br>
1. It gives us native borders, shadows, and window animations; none of<br>
these are available with the UNDECORATED style. Especially on Windows,<br>
there is quite a bit of native code required to make this work.<br>
2. Crucially, it activates the machinery for all of the window<br>
behaviors (window buttons, dragging, snap layouts). This is different<br>
from all of the other styles, because it requires bidirectional<br>
communication with the JavaFX application: for example, when the<br>
native window manager determines whether a dragging behavior should be<br>
started, is usually knows exactly whether you clicked on the title bar<br>
(because the title bar is provided by the window manager). With custom<br>
title bars, however, the window manager doesn't know that. So it needs<br>
to call into JavaFX and ask the scene graph whether a header bar is at<br>
the click coordinate.<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>