Skip to content

fix: align rtl toolbar state and alignment writes with ooxml bidi#3244

Open
artem-harbour wants to merge 2 commits into
mainfrom
artem/rtl-v10
Open

fix: align rtl toolbar state and alignment writes with ooxml bidi#3244
artem-harbour wants to merge 2 commits into
mainfrom
artem/rtl-v10

Conversation

@artem-harbour
Copy link
Copy Markdown
Contributor

@artem-harbour artem-harbour commented May 12, 2026

Linear: SD-3094

Fixes RTL paragraph alignment parity across toolbar state and alignment commands.

What changed

  • Added shared alignment mapper for RTL-aware conversion:
    • display alignment ↔ stored OOXML justification (left/right mirroring for RTL, justifyboth).
  • Updated toolbar text-align state derivation to use resolved paragraph properties and show visual alignment correctly for RTL paragraphs.
  • Updated setTextAlign command to:
    • resolve paragraph ancestor reliably (even when selection parent is run),
    • use resolved rightToLeft,
    • write mirrored OOXML justification for RTL.
  • Applied the same RTL-aware mapping in Document API alignment paths (paragraphsSetAlignmentWrapper, style.apply/spanStyle.apply executor logic).

Result

  • Toolbar state now matches Word-style visual alignment for RTL docs.
  • Toolbar buttons and shortcuts (Mod-Shift-L/R) apply expected visual alignment in RTL paragraphs.
  • Alignment behavior is consistent across UI commands and Document API mutations.

Related: #3235

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 66fe33d6ff

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@artem-harbour artem-harbour requested a review from harbournick May 12, 2026 16:53
@linear
Copy link
Copy Markdown

linear Bot commented May 12, 2026

SD-3094

…i export

Adds three coverage layers for the SD-3094 writer-side mirror:

- paragraph-alignment unit (23 tests): direct coverage of the new helper
  pair (mapDisplayAlignmentToStoredJustification +
  mapStoredJustificationToDisplayAlignment), including the absent-value
  default and a display->stored->display roundtrip for every alignment.
- Toolbar behavior (4 tests): clicking each align button on an RTL
  paragraph writes the expected mirrored OOXML justification (verified
  via the doc-api).
- Doc-API story (5 tests): format.paragraph.setAlignment on an RTL
  paragraph exports the expected w:jc value (left->right, right->left,
  center->center, justify->both); LTR baseline unchanged.

Fixture rtl-paragraph-alignment.docx is duplicated from the SD-3093
behavior tests so this PR's CI can run standalone; it will collapse to
the SD-3093 copy when the two PRs merge.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants