Skip to content

fix(ios): correct RTL configuration to handle LTR case#644

Open
hggzm wants to merge 1 commit intomicrosoft:mainfrom
hggzm:clean/fix-rtl-config-274
Open

fix(ios): correct RTL configuration to handle LTR case#644
hggzm wants to merge 1 commit intomicrosoft:mainfrom
hggzm:clean/fix-rtl-config-274

Conversation

@hggzm
Copy link
Copy Markdown
Collaborator

@hggzm hggzm commented Mar 18, 2026

Fork-based PR (no Azure Pipelines CI). When ready for CI, push branch to upstream as users/hggzm/clean/fix-rtl-config-274 and recreate.

History: upstream PRs #613 (closed)

Summary

configRtl() had a duplicate condition bug where both branches checked ACRRtlRTL. The second branch was supposed to handle the ACRRtlLTR case but was incorrectly checking ACRRtlRTL again, so UISemanticContentAttributeForceLeftToRight was never applied.

This fix was validated on the fork's CI pipeline via proxy/fix-rtl-config-274 before creating this clean PR.

Changes

  • UtiliOS.mm: Changed the second condition from ACRRtlRTL to ACRRtlLTR in configRtl()

Before

} else if (rtl == ACRRtlRTL) {  // BUG: duplicate
    view.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight;
}

After

} else if (rtl == ACRRtlLTR) {  // FIXED
    view.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight;
}

Testing

  1. Open a card with RTL content (e.g. InputFormWithRTL.json)
  2. Enable VoiceOver
  3. Navigate through elements — verify LTR elements within RTL context have correct reading order
  4. Verify required field information is announced properly

configRtl() had a duplicate condition bug: both branches checked
ACRRtlRTL, so the LTR case (ACRRtlLTR) was never applied.

Fixes microsoft#274
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant