On Mon, 7 Oct 2024 03:43:26 GMT, Michael Strauß <[email protected]> wrote:
>> This PR adds the `Platform.Preferences.reducedMotion` and
>> `Platform.Preferences.reducedTransparency` accessibility preferences:
>>
>> interface Preferences {
>> /**
>> * Specifies whether applications should minimize the amount of
>> non-essential animations,
>> * reducing discomfort for users who experience motion sickness or
>> vertigo.
>> * <p>
>> * If the platform does not report this preference, this property
>> defaults to {@code false}.
>> *
>> * @return the {@code reducedMotion} property
>> * @defaultValue {@code false}
>> * @since 24
>> */
>> ReadOnlyBooleanProperty reducedMotionProperty();
>>
>> /**
>> * Specifies whether applications should minimize the amount of
>> transparent or translucent
>> * layer effects, which can help to increase contrast and readability
>> for some users.
>> * <p>
>> * If the platform does not report this preference, this property
>> defaults to {@code false}.
>> *
>> * @return the {@code reducedTransparency} property
>> * @defaultValue {@code false}
>> * @since 24
>> */
>> ReadOnlyBooleanProperty reducedTransparencyProperty();
>>
>> ...
>> }
>>
>>
>> On Windows, these preferences correspond to "Transparency effects" and
>> "Animation effects" in the system settings:
>> <img
>> src="https://github.com/user-attachments/assets/b286850d-ebbc-444c-9c09-5380f97d0e91"
>> width="400" >
>>
>> On macOS, these preferences correspond to "Reduce motion" and "Reduce
>> transparency" in the system settings:
>> <img
>> src="https://github.com/user-attachments/assets/4c7b92f8-0cd9-4d1f-91df-40cb449f91ff"
>> width="400" >
>>
>> On Linux, the `reducedMotion` preference corresponds to
>> `gtk-enable-animations`. On my Ubuntu 24.04 system, GTK3 does not pick up
>> the "Settings / Accessibility / Reduce Animations" system setting, and
>> therefore GTK always reports `gtk-enable-animations == true`. Changing the
>> preference requires manually editing `etc/gtk-3.0/settings.ini`. The
>> `reducedTransparency` preference has no corresponding GTK setting.
>
> Michael Strauß has updated the pull request incrementally with one additional
> commit since the last revision:
>
> small changes
This seems like a reasonable enhancement. Since this adds new interface
methods, it is (technically) an incompatible change. I recommend either
documenting that applications should not implement the interface, or else make
it a sealed class so that they can't.
modules/javafx.graphics/src/main/java/javafx/application/Platform.java line 598:
> 596: * @since 24
> 597: */
> 598: ReadOnlyBooleanProperty reducedMotionProperty();
Adding a new method without a default implementation to an interface is an
incompatible change. Since we do not expect that an application would ever
implement this interface, this seems OK to me.
We should either add an `@implSpec` to the class docs indicating that
applications should not implement `Platform.Preferences` or make it a sealed
interface.
-------------
PR Review: https://git.openjdk.org/jfx/pull/1592#pullrequestreview-2352168072
PR Review Comment: https://git.openjdk.org/jfx/pull/1592#discussion_r1790364314