diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index 6b01e3c1765043c00bcae8e4ba20e1d0ae29d7e8..759b2744cdd6a834d97dea809836fcf6a662717b 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -877,7 +877,9 @@ public class FlutterView extends SurfaceView ensureAccessibilityEnabled(); } if (mTouchExplorationEnabled) { - mAccessibilityFeatureFlags ^= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + mAccessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + } else { + mAccessibilityFeatureFlags &= ~AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; } // Apply additional accessibility settings updateAccessibilityFeatures(); @@ -896,7 +898,7 @@ public class FlutterView extends SurfaceView String transitionAnimationScale = Settings.Global.getString(getContext().getContentResolver(), Settings.Global.TRANSITION_ANIMATION_SCALE); if (transitionAnimationScale != null && transitionAnimationScale.equals("0")) { - mAccessibilityFeatureFlags ^= AccessibilityFeature.DISABLE_ANIMATIONS.value; + mAccessibilityFeatureFlags |= AccessibilityFeature.DISABLE_ANIMATIONS.value; } else { mAccessibilityFeatureFlags &= ~AccessibilityFeature.DISABLE_ANIMATIONS.value; } @@ -966,7 +968,7 @@ public class FlutterView extends SurfaceView String value = Settings.Global.getString(getContext().getContentResolver(), Settings.Global.TRANSITION_ANIMATION_SCALE); if (value != null && value.equals("0")) { - mAccessibilityFeatureFlags ^= AccessibilityFeature.DISABLE_ANIMATIONS.value; + mAccessibilityFeatureFlags |= AccessibilityFeature.DISABLE_ANIMATIONS.value; } else { mAccessibilityFeatureFlags &= ~AccessibilityFeature.DISABLE_ANIMATIONS.value; } @@ -980,7 +982,7 @@ public class FlutterView extends SurfaceView if (enabled) { mTouchExplorationEnabled = true; ensureAccessibilityEnabled(); - mAccessibilityFeatureFlags ^= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; + mAccessibilityFeatureFlags |= AccessibilityFeature.ACCESSIBLE_NAVIGATION.value; nativeSetAccessibilityFeatures(mNativeView.get(), mAccessibilityFeatureFlags); } else { mTouchExplorationEnabled = false; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 0cb5b57073f769cfa74c3fcae561d443f9804704..80e03e28bd8bfe0301758b6746c4408338991167 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -716,11 +716,11 @@ static blink::PointerData::DeviceKind DeviceKindFromTouchType(UITouch* touch) { auto platformView = [_engine.get() platformView]; int32_t flags = 0; if (UIAccessibilityIsInvertColorsEnabled()) - flags ^= static_cast(blink::AccessibilityFeatureFlag::kInvertColors); + flags |= static_cast(blink::AccessibilityFeatureFlag::kInvertColors); if (UIAccessibilityIsReduceMotionEnabled()) - flags ^= static_cast(blink::AccessibilityFeatureFlag::kReduceMotion); + flags |= static_cast(blink::AccessibilityFeatureFlag::kReduceMotion); if (UIAccessibilityIsBoldTextEnabled()) - flags ^= static_cast(blink::AccessibilityFeatureFlag::kBoldText); + flags |= static_cast(blink::AccessibilityFeatureFlag::kBoldText); #if TARGET_OS_SIMULATOR // There doesn't appear to be any way to determine whether the accessibility // inspector is enabled on the simulator. We conservatively always turn on the @@ -729,8 +729,8 @@ static blink::PointerData::DeviceKind DeviceKindFromTouchType(UITouch* touch) { platformView->SetAccessibilityFeatures(flags); #else bool enabled = UIAccessibilityIsVoiceOverRunning() || UIAccessibilityIsSwitchControlRunning(); - if (UIAccessibilityIsVoiceOverRunning() || UIAccessibilityIsSwitchControlRunning()) - flags ^= static_cast(blink::AccessibilityFeatureFlag::kAccessibleNavigation); + if (enabled) + flags |= static_cast(blink::AccessibilityFeatureFlag::kAccessibleNavigation); platformView->SetSemanticsEnabled(enabled || UIAccessibilityIsSpeakScreenEnabled()); platformView->SetAccessibilityFeatures(flags); #endif