Skip to content

fix(macos): keep a TextInput's text in place when it's resized while focused - #3150

Open
Bron Davies (brondavies) wants to merge 1 commit into
microsoft:mainfrom
brondavies:fix/textfield-resize-keeps-editor
Open

Bron Davies (brondavies) wants to merge 1 commit into
microsoft:mainfrom
brondavies:fix/textfield-resize-keeps-editor

Conversation

@brondavies

Copy link
Copy Markdown

Summary:

Fixes #3149. When a focused single-line TextInput is resized, NSTextField moves the field editor's clip view to the cell's drawing rect. That drops the title rect's padding and vertical centering, so the text and placeholder jump to the top of the field.

RCTUITextField now relocates the field editor after a resize, as setTextContainerInset: already does after a padding change. Both share one method, which keeps the selection. It runs only when the size actually changes.

Test Plan:

RNTester-macOS (Debug, arm64, Xcode 27.1, macOS 26.6.2). The Playground had a 40pt search field that shows a Cancel label beside it on focus. I focused it, then read the field editor's clip view from lldb:

  • On main, the clip view goes to y 0 once Cancel narrows the field, and the placeholder draws at the top.
  • With this change, it stays at y 10.5, centered, and the placeholder stays put.

I also narrowed and widened a focused field with "Hello" typed and the caret after "He". The text stayed centered, and the caret stayed at 2.

I didn't test with a real click; focus came from focus(). It's the same in an app on 0.83.0, with padding in place of the centering.

@brondavies
Bron Davies (brondavies) requested a review from a team as a code owner October 23, 2026 23:10
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

This branch has not been deployed

No deployments
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.

TextInput's text jumps to the top when it's resized while focused

1 participant