Visitar URL original
fix(input): Raise Tapped and RightTapped after PointerReleased bubbles by ajpinedam · Pull Request #25818 · unoplatform/uno · GitHub
Skip to content

fix(input): Raise Tapped and RightTapped after PointerReleased bubbles - #25818

Merged
ajpinedam merged 6 commits into
unoplatform:masterfrom
ajpinedam:dev/anpi/tapped-after-pointerreleased
Nov 3, 2026
Merged

ajpinedam merged 6 commits into
unoplatform:masterfrom
ajpinedam:dev/anpi/tapped-after-pointerreleased

Conversation

@ajpinedam

@ajpinedam ajpinedam commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

GitHub Issue: closes unoplatform/kahua-private#559

PR Type:

🐞 Bugfix

What changed? 🚀

On Skia heads (managed pointers), Tapped and RightTapped were raised while PointerReleased was still bubbling to the ancestors of the tapped element. WinUI raises them only once PointerReleased has reached the root (CInputServices::RaiseDelayedPointerUpEvent).

That broke a common case: an element inside a ScrollViewer whose Tapped handler opens a flyout or moves the focus, while the focus is outside the ScrollViewer. The ScrollViewer handled the release after the flyout took the focus, so it took the focus back for its first TextBox, and that TextBox scrolled itself into view on its late GotFocus. On an Android tablet the page jumped to the top and the soft keyboard flashed.

Gesture order (Skia, managed pointers)

  • Tapped and RightTapped, and the ContextRequested that follows RightTapped, are raised once PointerReleased has bubbled to the root, like WinUI. They're still raised before the captures are released (PointerCaptureLost), and an ancestor isn't tapped twice.
  • DoubleTapped is unchanged: like in WinUI, it's raised on the second press, when no release is in progress.
  • An exception in a deferred gesture handler is logged, like one in a PointerReleased handler, and the release still completes.

TextBox and PasswordBox

  • A TextBox or PasswordBox whose GotFocus is raised after the focus already moved on no longer brings itself into view. RichEditBox already ignores such a GotFocus, as WinUI's TextBoxBase::OnGotFocus does.
  • Like in WinUI, the ScrollViewer still focuses its first text input for an instant during the release. The platform text input is now started only once the pointer release has completed, and not at all if the focus has moved away by then. This covers the soft keyboard on Android, the hidden <input> on WebAssembly and the IME session. It removes the keyboard flash on Android, and on the web the hidden input's focus and blur, which made Chrome's autofill bar flicker.
  • Tapping an already-focused TextBox notifies the platform again, to re-show a soft keyboard the user hid. That notification is deferred the same way.
  • The deferred start still runs inside the same browser event, so iOS Safari still opens the keyboard on a direct tap.

This builds on the fix-ready report, patches and runtime tests attached to the issue. The gesture deferral is reworked to live on the InputManager, per pointer release, and extended to the platform text input.

Validation

  • Runtime, Skia Desktop (macOS): Given_UIElement_GestureEventOrder, Given_TextBox and Given_PasswordBox: 311 passed, 8 skipped, 2 inconclusive, 2 failed. The 2 failures (When_Multiline_Pointer_Tap, When_Pointer_RightClick_Selection, caret off by one) fail the same way on the base commit on this machine.
  • Runtime, Skia WebAssembly (headless Chrome): Given_UIElement_GestureEventOrder and the TextBox family (Given_TextBox, Given_PasswordBox, Given_ImeSessionCoordinator, Given_AutoSuggestBox, Given_NumberBox): 312 passed, 0 failed, 65 skipped (other platforms). This ran before the re-show deferral was added.
  • Tests fail before the fix:
    • Given_UIElement_GestureEventOrder, run on the base commit ab14387c90 with only the test file added: 8 of 13 cases fail. These are Tapped raised by an ancestor of the hit element (mouse and touch), Tapped before PointerCaptureLost (both rows), RightTapped by mouse and by touch hold, and the ScrollViewer focus case (mouse and touch). The 5 that pass guard behavior the base already had: Tapped raised by the hit element itself, which was already raised after the bubble, the two "not raised twice" tests, and the throwing ContextRequested handler.
    • The text-input tests were run against a build with the deferral narrowed back to PointerReleased and the browser input started on focus. The 3 cases expected to fail did fail: the PointerExited test, and the ScrollViewer test for both TextBox and PasswordBox.
    • The re-show test fails without its fix when the focus moves away: the platform is notified twice.
  • Real devices, with a manual repro page (not included):
    • Galaxy Tab A8, Chrome: the flyout keeps the focus, the page doesn't scroll, and the hidden input is never focused. A direct tap on a TextBox still opens the keyboard.
    • iPad Pro, iPadOS 26.6.1, Safari: same result. The screen was recorded and checked frame by frame: the keyboard opens on a direct tap and never flashes when the flyout opens or the focus moves.
    • Galaxy Tab A8, Skia Android (Release): the keyboard flashed in 3 of 4 taps before the fix and in none of 6 after.
    • The device checks ran on an earlier revision. It deferred the text input until the release's gestures were raised and the root cleaned up the focus, but not past the release of the captures and the exit events. Widening the deferral to the end of the release, and deferring the re-show, were validated with the runtime tests only.

Not verified

  • Touch on native WinUI: the order there was checked with a mouse, as described in the issue.
  • The iOS Skia head.
  • The full runtime suite.
  • InputPane.skia.cs brings a captured element into view without checking it still has the focus. It's the same pattern, but it's not needed here and isn't changed.

PR Checklist ✅

🤖 Generated with Claude Code

@github-actions github-actions Bot added the area/skia ✏️ Categorizes an issue or PR as relevant to Skia label Oct 29, 2026
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Sample App stage site is ready! Visit it here:

@ajpinedam
ajpinedam requested a review from Xiaoy312 October 29, 2026 15:56
@nventive-devops

Copy link
Copy Markdown
Contributor

The build 242256 found UI Test snapshots differences: skia-linux-screenshots: 2458, skia-windows-screenshots: 2458

Details
  • skia-linux-screenshots: 2458 changed over 2492

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Accessibility_ScreenReader.png-dark
    • AndroidWindowInsets.png
    • AnimatedVisualsTestbedPage.png
    • AnimatedIconPage.png
    • ApplicationViewSizing.png
    • AppBarToggleButtonTest.png-dark
    • AppWindowClosing.png-dark
    • ApplicationViewMode.png
    • AppWindowPresenters.png-dark
    • Application_DispatcherShutdownMode.png-dark
    • ArcSegment.png-dark
    • AppWindowPositionAndSize.png-dark
    • Attributed_text_Supserscript.png
    • AppXamlDefinedResources.png-dark
    • AutoBorderStretchwithleftmargin.png
    • Arrange_Performance01.png-dark
    • AutomationProperties_AutomationId.png
    • Attributed_text_Simple.png-dark
    • AutomationProperties_Landmark.png-dark
    • Attributed_text_Simple.png
  • skia-windows-screenshots: 2458 changed over 2492

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AndroidWindowInsets.png-dark
    • AnimatedBackVisualSourceSamplePage.png
    • AnimatedVisualsTestbedPage.png
    • AppBarToggleButtonTest.png
    • ApplicationViewMode.png
    • AppWindowClosing.png-dark
    • AppWindowPositionAndSize.png-dark
    • AppXamlDefinedResources.png
    • Attributed_text_FontSize_Changing.png-dark
    • Attributed_text_FontSize_Changing.png
    • AutoBorderStretchwithtopmargin.png-dark
    • AutoBorderStretchwithtopmargin.png
    • AutomationProperties_Relations.png
    • AutomationProperties_StructureAndProps.png-dark
    • AutoSuggestBox_Keyboard.png-dark
    • AutoSuggestBox_Keyboard.png
    • BasicEnability.png-dark
    • BasicEnability.png
    • BeginTime_MultipleAnimations.png-dark
    • BeginTime_MultipleAnimations.png

@mergify

mergify Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

This pull request does not currently match the merge queue conditions, so it cannot be queued from here. The box comes back if it matches again.

@Xiaoy312 Xiaoy312 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. The deferral is sound: ancestors still can't tap twice (the GestureEventsAlreadyRaised flag is still set during the bubble, before each ancestor's ProcessUpEvent), DoubleTapped is correctly left alone since it's recognized on press, and ending an input session that never started is a no-op (ImeSessionCoordinator.End ignores a non-active host). Nice side effect: the root no longer calls ReleaseCaptures mid-bubble, which used to reset the thread-static dispatch result and drop VisualTreeAltered flags.

A few non-blocking notes inline, plus:

  • Could you run Given_UIElement_GestureEventOrder against master to confirm it fails before the fix? The description says it wasn't, and that's the main change.
  • Commits 3 and 4 are the same change reworked, so squash-merging seems right.

@ajpinedam
ajpinedam force-pushed the dev/anpi/tapped-after-pointerreleased branch from 139924c to 9149328 Compare November 2, 2026 16:07
Copilot AI balanced review requested due to automatic review settings November 2, 2026 16:07
@ajpinedam

Copy link
Copy Markdown
Contributor Author

I ran Given_UIElement_GestureEventOrder on the base commit (ab14387), with only the test file added, on Skia Desktop (macOS) with one attempt per case. 8 of 13 cases fail:

  • Tapped raised by an ancestor of the hit element (mouse and touch)
  • Tapped before PointerCaptureLost (both rows)
  • RightTapped by mouse and by touch hold
  • the ScrollViewer focus case (mouse and touch)

The 5 that pass guard behavior the base already had: Tapped raised by the hit element itself, which was already raised after the bubble, the two "not raised twice" tests, and the throwing ContextRequested handler. All 13 pass on the branch.

Commits 3 and 4 are squashed into ff3a6be, and the review fixes are the two commits on top.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The browser TextBox tests dispose provider overrides before releasing focused input, risking cleanup under the wrong providers and IME state leaking into later tests.

1 open issue
What changed in this PR

This PR aligns managed-pointer gesture ordering with WinUI to prevent ScrollViewer focus changes from overriding tap handlers and briefly opening platform text input.

Changes:

  • Defers Tapped, RightTapped, and related context requests until PointerReleased finishes bubbling.
  • Delays platform text input until release processing completes and ignores stale text-control focus events.
  • Adds runtime tests for gesture ordering, focus retention, and keyboard/input activation.
File Description
src/​Uno.UI/​UI/​Xaml/​UIElement.Pointers.cs Routes tap gestures through release deferral.
src/​Uno.UI/​UI/​Xaml/​Internal/​InputManager.Pointers.Managed.cs Coordinates deferred gestures and release-completion actions.
src/​Uno.UI/​UI/​Xaml/​Internal/​InputManager.Pointers.cs Delays pointer-up cleanup until gestures finish.
src/​Uno.UI/​UI/​Xaml/​Controls/​TextBoxCore/​TextBoxCore.Input.cs Defers platform input activation and adds a notification test hook.
src/​Uno.UI/​UI/​Xaml/​Controls/​TextBoxCore/​TextBoxCore.cs Defers keyboard re-show notifications and ignores stale focus events.
src/​Uno.UI/​UI/​Xaml/​Controls/​TextBox/​TextBox.Properties.cs Exposes the notification provider test hook.
src/​Uno.UI/​UI/​Xaml/​Controls/​TextBox/​TextBox.cs Passes focus event arguments to shared handling.
src/​Uno.UI/​UI/​Xaml/​Controls/​PasswordBox/​PasswordBox.cs Passes focus event arguments to shared handling.
src/​Uno.UI.RuntimeTests/​Microsoft/​UI/​Xaml/​Given_UIElement.GestureEventOrder.cs Tests gesture ordering, capture cleanup, and focus retention.
src/​Uno.UI.RuntimeTests/​Microsoft/​UI/​Xaml/​Controls/​Given_TextBox.skia.cs Tests deferred platform input activation and re-show notifications.
src/​Uno.UI.RuntimeTests/​Microsoft/​UI/​Xaml/​Controls/​Given_TextBox.cs Tests that stale focus events do not trigger scrolling.
src/​Uno.UI.RuntimeTests/​Microsoft/​UI/​Xaml/​Controls/​Given_PasswordBox.cs Adds the equivalent stale-focus scrolling regression test.

Review effort: Balanced

@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Sample App stage site is ready! Visit it here:

@nventive-devops

Copy link
Copy Markdown
Contributor

The build 242886 found UI Test snapshots differences: skia-linux-screenshots: 2458, skia-windows-screenshots: 2458

Details
  • skia-linux-screenshots: 2458 changed over 2492

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AnimatedIconPage.png-dark
    • AppBarButtonWithIconTest.png
    • ApplicationViewMode.png-dark
    • AppWindowClosing.png-dark
    • AppWindowPositionAndSize.png
    • ArcSegment.png
    • AuthenticationBroker_Cancel.png-dark
    • AutoBorderStretchwithrightmargin.png
    • AutomationProperties_StructureAndProps.png-dark
    • AutomationProperties_StructureAndProps.png
    • BadgeNotificationTests.png-dark
    • BadgeNotificationTests.png
    • Basics.png-dark
    • Basics.png
    • BezierSegment.png-dark
    • BezierSegment.png
    • BitmapIcon_Generic.png-dark
    • BitmapIcon_Generic.png
    • BorderCenteredwithmargins.png-dark
    • BorderCenteredwithmargins.png
  • skia-windows-screenshots: 2458 changed over 2492

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AndroidWindowInsets.png-dark
    • AppBarButtonTest.png
    • AppBar_KeyBoard.png-dark
    • ApplicationViewSpanningRectsPage.png-dark
    • AppWindowFeatures.png
    • AppWindowTitleBar Properties.png
    • Attributed_text_FontSize_Changing.png-dark
    • AuthenticationBroker_Demo.png-dark
    • AutoBorderStretchwithrightmargin.png
    • AutoBorderStretchwithtopmargin.png-dark
    • AutomationProperties_StructureAndProps.png
    • AutoSizedPathCentered.png-dark
    • AutoSuggestBox_SoftKeboard.png-dark
    • AutoSuggestBox_SoftKeboard.png
    • Basics.png-dark
    • Basics.png
    • BezierSegment.png-dark
    • BezierSegment.png
    • BitmapIcon_Monochromatic.png-dark
    • BitmapIcon_Monochromatic.png

@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Sample App stage site is ready! Visit it here:

@nventive-devops

Copy link
Copy Markdown
Contributor

The build 242995 found UI Test snapshots differences: skia-linux-screenshots: 2458, skia-windows-screenshots: 2458

Details
  • skia-linux-screenshots: 2458 changed over 2492

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AnimatedBackVisualSourceSamplePage.png
    • AppBarButtonTest.png-dark
    • ApplicationViewMode.png-dark
    • AppWindowClosing.png-dark
    • AppWindowPresenters.png-dark
    • Arrange_Performance01.png-dark
    • Attributed_text_Supserscript.png
    • AutoBorderStretchwithleftmargin.png
    • AutomationPropertiesExtensions_Role.png-dark
    • AutomationPropertiesExtensions_Role.png
    • BadgeNotificationTests.png-dark
    • BadgeNotificationTests.png
    • BasicThemeResources.png-dark
    • BasicThemeResources.png
    • BitmapIcon_Monochromatic.png-dark
    • BitmapIcon_Monochromatic.png
    • BorderBottomwithmargins.png-dark
    • BorderBottomwithmargins.png
    • BorderRightwithmargins.png-dark
    • BorderRightwithmargins.png
  • skia-windows-screenshots: 2458 changed over 2492

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AnimatedIconPage.png
    • AppBarButtonTest.png-dark
    • AppBarToggleButtonTest.png-dark
    • ApplicationViewMode.png
    • Application_DispatcherShutdownMode.png
    • AppWindowPresenters.png
    • AppXamlDefinedResources.png
    • Attributed_text_FontSize_Changing.png
    • AutoBorderStretchwithbottommargin.png-dark
    • AutoBorderStretchwithbottommargin.png
    • AutomationPropertiesExtensions_Role.png
    • AutomationProperties_AutomationId.png-dark
    • AutoSizedTopLeft.png
    • AutoSuggestBoxChosenSuggestion.png-dark
    • AutoSuggestBox_SoftKeboard.png-dark
    • AutoSuggestBox_SoftKeboard.png
    • Basics Pivot Test.png-dark
    • Basics Pivot Test.png
    • Battery.png-dark
    • Battery.png

@ajpinedam
ajpinedam force-pushed the dev/anpi/tapped-after-pointerreleased branch from e3da71b to 9a1ed8d Compare November 3, 2026 01:12
@ajpinedam
ajpinedam enabled auto-merge November 3, 2026 01:31
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Sample App stage site is ready! Visit it here:

@nventive-devops

Copy link
Copy Markdown
Contributor

The build 243022 found UI Test snapshots differences: skia-linux-screenshots: 2458, skia-windows-screenshots: 2458

Details
  • skia-linux-screenshots: 2458 changed over 2492

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Accessibility_ScreenReader.png
    • AnimatedIconPage.png-dark
    • AndroidWindowInsets.png-dark
    • AppBarButtonWithIconTest.png-dark
    • AppBarToggleButtonTest.png-dark
    • AppBarToggleButtonTest.png
    • AppBar_KeyBoard.png
    • ApplicationViewSizing.png-dark
    • ApplicationViewSpanningRectsPage.png-dark
    • Application_DispatcherShutdownMode.png
    • AppWindowClosing.png
    • AppWindowPresenters.png
    • AppXamlDefinedResources.png
    • AppWindowTitleBar Properties.png-dark
    • Attributed_text_FontSize_Changing.png-dark
    • Attributed_text_Simple.png-dark
    • Arrange_Performance01.png
    • AuthenticationBroker_Demo.png
    • AutoBorderStretchwithbottommargin.png-dark
    • Attributed_text_Supserscript.png
  • skia-windows-screenshots: 2458 changed over 2492

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AnimatedBackVisualSourceSamplePage.png-dark
    • AppBarToggleButtonTest.png
    • ApplicationViewSpanningRectsPage.png
    • AppWindowPositionAndSize.png-dark
    • ArcSegment.png
    • AuthenticationBroker_Cancel.png
    • AutomationPropertiesExtensions_Role.png
    • AutoSizedPathCentered.png
    • AutoSuggestBox_Keyboard.png-dark
    • AutoSuggestBox_Keyboard.png
    • Basics Pivot Test.png-dark
    • Basics Pivot Test.png
    • Battery.png-dark
    • Battery.png
    • BindableDrawerLayout_ChangePane.png-dark
    • BindableDrawerLayout_ChangePane.png
    • BitmapImage_vs_SvgImageSource.png-dark
    • BitmapImage_vs_SvgImageSource.png
    • BorderLeftwithmargins.png-dark
    • BorderLeftwithmargins.png

@ajpinedam
ajpinedam merged commit 92285d7 into unoplatform:master Nov 3, 2026
48 checks passed
@ajpinedam

Copy link
Copy Markdown
Contributor Author

@Mergifyio backport servicing/6.8

@mergify

mergify Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

backport servicing/6.8

✅ Backports have been created

Details

Cherry-pick of d09ed95 has failed:

On branch mergify/bp/servicing/6.8/pr-25818
Your branch is up to date with 'origin/servicing/6.8'.

You are currently cherry-picking commit d09ed95.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
	modified:   src/Uno.UI/UI/Xaml/Internal/InputManager.Pointers.Managed.cs
	modified:   src/Uno.UI/UI/Xaml/UIElement.Pointers.cs

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	added by them:   src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml/Given_UIElement.GestureEventOrder.cs
	both modified:   src/Uno.UI/UI/Xaml/Internal/InputManager.Pointers.cs

Cherry-pick of 76232b4 has failed:

On branch mergify/bp/servicing/6.8/pr-25818
Your branch is ahead of 'origin/servicing/6.8' by 1 commit.
  (use "git push" to publish your local commits)

You are currently cherry-picking commit 76232b4.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
	modified:   src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_TextBox.cs

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
	deleted by us:   src/Uno.UI.RuntimeTests/Microsoft/UI/Xaml/Controls/Given_PasswordBox.cs
	both modified:   src/Uno.UI/UI/Xaml/Controls/PasswordBox/PasswordBox.cs
	both modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.cs
	deleted by us:   src/Uno.UI/UI/Xaml/Controls/TextBoxCore/TextBoxCore.cs

Cherry-pick of 82f9274 has failed:

On branch mergify/bp/servicing/6.8/pr-25818
Your branch is ahead of 'origin/servicing/6.8' by 2 commits.
  (use "git push" to publish your local commits)

You are currently cherry-picking commit 82f9274.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
	modified:   src/Uno.UI/UI/Xaml/Internal/InputManager.Pointers.Managed.cs
	modified:   src/Uno.UI/UI/Xaml/UIElement.Pointers.cs

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
	both modified:   src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_TextBox.skia.cs
	deleted by us:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.Properties.cs
	both modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.skia.cs

To fix up this pull request, you can check it out locally. See documentation: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally

agneszitte added a commit that referenced this pull request Nov 3, 2026
…r-25818

fix(input): Raise Tapped and RightTapped after PointerReleased bubbles (backport #25818)
agneszitte added a commit that referenced this pull request Nov 4, 2026
…orts-6.7

fix(input): Tap order, iOS touch text editing and Android browser IME (backport #25818, #25619, #25804)
mikernet added a commit to mikernet/uno that referenced this pull request Nov 12, 2026
…ress-context-flyout-22229

Conflicts with the iOS touch editing work (unoplatform#25619) and the deferred release
handling (unoplatform#25818):
- TextBoxCore.pointers.cs: the hold handled in OnHolding now goes through
  master's iOS path (HandleTouchHold_iOS, once per press with the 0.5 s hold
  timer) and Android's ToTouchTextPoint; a release after either is not a tap.
- InputManager.Pointers.Managed.cs: the release stops the delayed context
  menu at the start of OnPointerReleasedCore.
- Given_TextBox.skia.cs: both new iOS tests kept.
mikernet added a commit to Singulink/uno that referenced this pull request Nov 14, 2026
Takes Uno's servicing/6.8 from 6951c2c up to 5254ace (42 pull
requests). Conflicts, by area:

IME and TextBox (unoplatform#25984, backport of unoplatform#25804; unoplatform#25952, backport of unoplatform#25619;
unoplatform#25976, backport of unoplatform#25818)
- Takes upstream's composition design (unoplatform#25804): the browser's input is
  the source of truth for the text, compositions included. This drops
  the composition parts of the unoplatform#24502 port (90746b8): its
  TypeScript composition handling, the StartIndex/TextChangePending
  event arguments, the IsReadOnly forwarding to the hidden input, and
  its Given_TextBox.BrowserSoftKeyboard tests.
- Keeps the non-IME browser fixes on top of it, in the form their
  master pull requests have on unoplatform#25804: Enter raised once per press and
  tracked by key code (unoplatform#25174, with Given_TextBox.BrowserEnterKey from
  master in place of the Enter tests that lived in the dropped file),
  the iOS refocus on tap (unoplatform#25185), pastes without text and isIOS from
  BrowserInputHelper.
- Moves the unoplatform#26005 MaxLength fixes onto unoplatform#25804's native input path, as
  master has them: a refused browser edit keeps the TextBox's selection,
  TextBoxView.UpdateTextFromNative reports whether the edit went in, and
  the IME keeps its range on the applied text (master be85699, which
  d226897 had ported onto the unoplatform#24502 IME). Adds that commit's browser
  and platform-applied IME tests.
- TextBox.pointers.skia.cs: upstream's file (unoplatform#25619 iOS touch editing,
  unoplatform#25818, unoplatform#25804), with the unoplatform#25126 port (the hold acts when it starts,
  a touch right-tap keeps the caret) in the form master's unoplatform#25126 branch
  has it on unoplatform#25619, including focusing before the iOS hold timer acts
  and its iOS not-focusable test.

Pointers (unoplatform#25976, backport of unoplatform#25818)
- Tapped and RightTapped are raised once the PointerReleased bubbled
  (unoplatform#25818), with the unoplatform#25732 port's window coordinates (2-argument
  routed event args, RawPosition for ContextRequested), as master's
  unoplatform#25732 branch has them.
- The release wrapper of unoplatform#25818 keeps the unoplatform#25126 port's
  StopContextMenuTimer at the start of the release.

DependencyObject (unoplatform#26142, backport of unoplatform#26123)
- Takes upstream, then the code of unoplatform#25839 (97a2f17), which replaces
  this branch's unoplatform#25102 ports (800247f, be41da6, fd40bf9,
  7546379). DependencyObjectStore.Binder.cs, .alc.cs,
  Application.Alc.cs, ResourceDictionary.alc.cs and their tests now
  match unoplatform#25839; this drops 800247f's own
  SingleParentNonFE_Parent_Removes_Value_Then_Next_Parent_Starts_Clean
  test, which unoplatform#25839 doesn't have.

Imaging (unoplatform#25597, unoplatform#25915, unoplatform#25911, unoplatform#25897)
- Keeps this branch's side: it has the later forms of these fixes
  (unoplatform#25124, unoplatform#25559, unoplatform#25633 and unoplatform#26370 ports), where upstream has the
  6.8-only unoplatform#25597 design and earlier snapshots. Upstream's shared
  download, IgnoreImageCache and failed-load fixes are covered by
  SharedImageDecode. Adds upstream's When_Source_Outlives_Brushes test.

ToolTip (unoplatform#26098, backport of unoplatform#25137 and unoplatform#26096)
- Keeps this branch's unoplatform#25137 port and adds unoplatform#26096 in master's form: the
  service releases only a ToolTip it opened, and leaves one the app
  opened during the show delay to the app. Keeps both sides' tests.

Flyout (unoplatform#26062, backport of unoplatform#26060)
- This branch had the same commits already; keeps the "Keep
  non-resizable flyouts in window" port and its tests.

Also removes a helper pair in Given_AccessibleTextBox that both sides
added.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/skia ✏️ Categorizes an issue or PR as relevant to Skia

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants