> The window button states (disabled/hidden) of extended stages with a 
> `HeaderButtonOverlay` or custom header buttons are inconsistent with what we 
> would expect from the OS (Windows and Linux). To figure out what we would 
> expect, I started with gathering some data. The following table shows the 
> button states of system-decorated windows on various platforms:
> 
> #### Windows 11
> 
> | Window attributes | Iconify | Maximize | Close |
> |---|---|---|---|
> | resizable, not modal | visible | visible | visible |
> | not resizable, not modal | visible | visible, disabled | visible |
> | resizable, modal | visible, disabled | visible | visible |
> | not resizable, modal | hidden | hidden | visible, utility-style |
> 
> #### Ubuntu 24 / Fedora 41 (GNOME)
> 
> | Window attributes | Iconify | Maximize | Close |
> |---|---|---|---|
> | resizable, not modal | visible | visible | visible |
> | not resizable, not modal | visible | hidden | visible |
> | resizable, modal | visible, _not working_ | visible, _not working_ | 
> visible |
> | not resizable, modal | visible, _not working_ | hidden | visible |
> 
> #### Kubuntu 24 (KDE)
> 
> | Window attributes | Iconify | Maximize | Close |
> |---|---|---|---|
> | resizable, not modal | visible | visible | visible |
> | not resizable, not modal | visible | hidden | visible |
> | resizable, modal | visible, _not working_ | visible | visible |
> | not resizable, modal | visible, _not working_ | hidden | visible |
> 
> ## Observations
> 
> 1. On Windows, buttons are generally disabled when their operation is not 
> possible with the given window attributes.
>    * Exception: modal/non-resizable windows look like utility windows 
> (iconify and maximize are hidden)
> 2. On GNOME and KDE, buttons are generally hidden when their operation is not 
> possible.
>    * Exception: iconify and maximize on modal windows is not hidden, but 
> seems to simply not do anything (bug?)
> 
> ## Permitted window button operations
> 
> Given the gathered observations and some simple logic, this is the table of 
> operations that are permitted for all combinations of modal and resizable 
> window attributes:
> 
> | Window attributes | Iconify | Maximize | Close |
> |---|---|---|---|
> | resizable, not modal | yes | yes | yes |
> | not resizable, not modal | yes | no | yes |
> | resizable, modal | no | yes | yes |
> | not resizable, modal | no | no | yes |
> 
> ## Fixes
> 
> This PR includes the following changes:
> 1. Unused code relating to window modality is removed.
> 2. The disabled states of `HeaderButtonOverlay` as well as 
> `HeaderButtonBehavior` are changed to mat...

Michael Strauß has updated the pull request incrementally with one additional 
commit since the last revision:

  small refactor

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

Changes:
  - all: https://git.openjdk.org/jfx/pull/1831/files
  - new: https://git.openjdk.org/jfx/pull/1831/files/06a0a5bb..ef05139e

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1831&range=02
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1831&range=01-02

  Stats: 6 lines in 1 file changed: 1 ins; 4 del; 1 mod
  Patch: https://git.openjdk.org/jfx/pull/1831.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1831/head:pull/1831

PR: https://git.openjdk.org/jfx/pull/1831

Reply via email to