On Thu, 2 Jul 2026 23:23:10 GMT, Michael Strauß <[email protected]> wrote:
>> JavaFX controls in the title bar were previewed with >> [JDK-8313424](https://bugs.openjdk.org/browse/JDK-8313424) (delivered in JFX >> 25) and the API was subsequently refined with >> [JDK-8369836](https://bugs.openjdk.org/browse/JDK-8369836) and >> [JDK-8370446](https://bugs.openjdk.org/browse/JDK-8370446) (delivered in JFX >> 26). The feedback collected in two preview rounds suggests that the API is >> fit for purpose, and no fundamental changes are required. This means that >> the feature is ready to become final and permanent in JFX 27. >> >> I propose a few small changes to smooth out remaining edges: >> 1. **Rename `HeaderBar.prefButtonHeight` to `HeaderBar.systemButtonHeight`** >> This more clearly expresses that it is the height of the >> _system-provided_ buttons. >> 2. **Rename `HeaderBar.minSystemHeight` to `HeaderBar.systemMinHeight`** >> What is meant is not a _minimum system height_ (which makes no sense), >> but a _system-provided minimum height_. >> 3. **Add `HeaderBar.systemColorScheme`** >> In the previous iteration, the color scheme of the header buttons on >> Windows and Linux was determined by the brightness of the `Scene.fill` >> background. On macOS, which uses header buttons drawn by the operating >> system, the color scheme of the header buttons was instead determined by the >> color scheme of the window itself. >> >> The newly added `HeaderBar.systemColorScheme` attached property allows >> applications to specify the color scheme for system-provided header buttons >> directly, without falling back to either the scene background or the window >> color scheme. The default value of the property is `null`, which means "no >> preference"; in this case, the color scheme for header buttons will match >> the color scheme for the window on all platforms. Setting this property to a >> non-null value is only necessary in the rare case when an application needs >> different color schemes for header buttons and the window (i.e. when it has >> a bright title bar in dark mode, or a dark title bar in light mode). >> >> Since these changes are only cosmetic (in the case of renamed properties) >> and don't fundamentally change the API of the enhancement (in the case of >> `HeaderBar.systemColorScheme`), they shouldn't need to be previewed for >> another round. >> >> The rest of the significant changes in this PR are a clean-up pass over the >> documentation, and having the macOS header button implementation support the >> new `HeaderBar.systemColorScheme` property. >> >> ## Note on the use of attached properties >> This e... > > Michael Strauß has updated the pull request incrementally with one additional > commit since the last revision: > > HeaderBar.systemColorScheme evaluates to platform when not connected to > scene Some things I have found which might be bugs. Some could very well be pre-existing bugs (unrelated to this feature). 1. The top border is cut by 1px. Maybe intended? But looks weird. <img width="219" height="79" alt="image" src="https://github.com/user-attachments/assets/1f3b9441-eba9-4bd4-9897-fa9e2e91291e" /> 2. This is very weird because the issue can not be reproduced as soon as I record it. But I can make a screenshot. I hover over the settings button and then right next to the minimize button and the hover state is not cleared from the settings button. <img width="230" height="68" alt="image" src="https://github.com/user-attachments/assets/b5bdbc83-2dc6-4255-a78a-4ec3e9994ad5" /> 3. The minimize button looks blurry <img width="139" height="103" alt="image" src="https://github.com/user-attachments/assets/6597a0cb-bb99-4eb7-a5fa-a425b1005023" /> Information - Windows 11 - Display scale 100% - I just created a normal `Button`, called `headerBar.setRight(settingsBtn);` and after the `Stage` is shown I call `HeaderBar.setSystemButtonHeight(primaryStage, headerBar.prefHeight(Region.USE_PREF_SIZE));`. - CSS for the border: `-fx-border-width: 2px;` ------------- PR Comment: https://git.openjdk.org/jfx/pull/2188#issuecomment-4881837088
