RFR: 8341514: Add reducedMotion and reducedTransparency preferences [v3]
Andy Goryachev
angorya at openjdk.org
Tue Oct 8 23:12:05 UTC 2024
On Mon, 7 Oct 2024 15:27:21 GMT, Michael Strauß <mstrauss at openjdk.org> 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:
>
> seal Platform.Preferences
modules/javafx.graphics/src/main/java/com/sun/javafx/application/preferences/PreferenceProperties.java line 147:
> 145: for (Map.Entry<String, ChangedValue> entry : changedPreferences.entrySet()) {
> 146: PreferenceMapping<?> mapping = platformKeyMappings.get(entry.getKey());
> 147: if (mapping != null) {
this code seems rather inefficient:
why are we doing linear search?
also why are we searching through colors when, for example, the changed property is a boolean?
is it possible to do a simple hash map lookup instead?
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1592#discussion_r1792603724
More information about the openjfx-dev
mailing list