Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port IME/databinding fix from 4.8. #5840

Merged
merged 1 commit into from
Jan 27, 2022

Conversation

SamBent
Copy link
Contributor

@SamBent SamBent commented Dec 16, 2021

Addresses #5444
This is a port of a servicing fix in .NET 4.7-4.8.

Description

A binding on TextBox.Text defers two kinds of work when an IME composition is in progress on the TextBox:

  1. When the text changes (and UpdateTrigger=PropertyChanged), write a new value into the source property.
  2. After writing a value into the source property, read the property's new value (which might be different), apply the customary conversions, and write the result into the TextBox.

The bug occurs when the IME starts a new composition before the previous composition's type 2 work happens. This yields a situation where two tasks are deferred: the older composition's type 2 task and the newer composition's type 1 task. The type 2 task happens first, overwriting the text change that the type 1 task is supposed to handle. This confusion of state leads to exceptions (caught and hidden from the IME, but visible in the debugger), and unexpected content entered into the TextBox.

Fixed by cancelling any pending type 2 work when new type 1 work is needed.

Customer Impact

Input with certain IMEs (e.g. MS Quick) is broken.

Regression

No.

Testing

Ad-hoc around customer scenario.
Standard regression testing.

Risk

Low. Port of a .NETFx servicing fix released earlier this year.

@SamBent SamBent requested a review from a team as a code owner December 16, 2021 02:19
@ghost ghost added the PR metadata: Label to tag PRs, to facilitate with triage label Dec 16, 2021
@ghost ghost requested review from fabiant3 and ryalanms December 16, 2021 02:19
@vishalmsft vishalmsft self-assigned this Jan 3, 2022
@singhashish-wpf singhashish-wpf merged commit fb9a244 into dotnet:main Jan 27, 2022
dipeshmsft added a commit that referenced this pull request Feb 7, 2022
Co-authored-by: Sam Bent <sambent@microsoft.com>
dipeshmsft added a commit that referenced this pull request Feb 7, 2022
Co-authored-by: Sam Bent <sambent@microsoft.com>
dipeshmsft pushed a commit that referenced this pull request Feb 7, 2022
Co-authored-by: Sam Bent <sambent@microsoft.com>
@ghost ghost locked as resolved and limited conversation to collaborators Apr 6, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
PR metadata: Label to tag PRs, to facilitate with triage
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants