On Fri, 2 May 2025 22:38:51 GMT, Cormac Redmond <d...@openjdk.org> wrote:

>> Michael Strauß has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   simplify header area picking
>
> I imagine most people will want HeaderBar's leading node to be an app icon 
> with the usual left-click context menu behaviour (i.e., at least restore, 
> minimise, close), much like it is for DECORATED today.
> 
> Today, you can add a bunch of icons to a stage with 
> stage.getIcons().addAll(myLogoList)), and the window's header will contain a 
> suitable icon; never too big, never too small. The developer doesn't worry 
> about it.
> 
> I really feel a utility to add an equivalent app icon to the HeaderBar, 
> should be provided out-of-the-box, using the same logic. E.g., let HeaderBar 
> choose the most suitable icon, and choose the correct size for the platform, 
> and any padding, etc. Otherwise, the developer needs to think about it too 
> much.
> 
> A lot of this logic used by DECORATED, seems to be buried in WindowStage in 
> terms of picking what icons to display in the title bar, etc.

@credmond
I think we run the risk of overloading `HeaderBar` with too many narrow 
features. Here are a few observations:
1. Modern applications tend to not use program icons. Windows Explorer, 
Calendar, Weather, Settings, and also Spotify or Chrome don't use it. Program 
icons have become more of a Win32-era relict, and it's mostly applications that 
use system-decorated windows that have it.
2. Program icons are really only a thing on Windows. It doesn't seem to make 
much sense to have a Windows-only API on a multi-platform toolkit. It certainly 
doesn't work with macOS, as we have the traffic lights in front of the leading 
node of the `HeaderBar`.
3. It's very easy to create a program icon with standard JavaFX controls. Since 
its size will never change, you can just use a static image with an `ImageView` 
and a `ContextMenu`. JavaFX already supports multi-resolution images out of the 
box (with the `@Nx` file name convention).
4. If you choose to have a program icon, you most likely want it to align 
nicely with the rest of your custom header bar. Even in apps that have a 
program icon, it's not a one-size-fits-all (for example, the IntelliJ program 
icon looks significantly different than a standard system-decorated program 
icon). Once you start to customize the program icon, you're really better off 
just using standard JavaFX controls to do the job.

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

PR Comment: https://git.openjdk.org/jfx/pull/1605#issuecomment-2848521497

Reply via email to