Visitar URL original
feat(textbox): Follow native iOS touch text editing (backport #25619) by mergify[bot] · Pull Request #25952 · unoplatform/uno · GitHub
Skip to content

feat(textbox): Follow native iOS touch text editing (backport #25619) - #25952

Merged
ajpinedam merged 26 commits into
servicing/6.8from
mergify/bp/servicing/6.8/pr-25619
Nov 4, 2026
Merged

ajpinedam merged 26 commits into
servicing/6.8from
mergify/bp/servicing/6.8/pr-25619

Conversation

@mergify

@mergify mergify Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

GitHub Issue: closes unoplatform/kahua-private#558

PR Type:

✨ Feature

What changed? 🚀

Under TouchSelectionConvention.iOS, touch text editing in the Skia TextBox didn't match a native iOS text field. This PR makes it follow native iOS behaviour. Most of the work was contributed by @jbourque-kahua; the first five commits are his, split into logical steps. The rest are fixes found while reviewing them.

Gestures

  • Tapping the caret or the selection toggles the edit menu. Double-tap selects a word and triple-tap selects the paragraph, even when the finger drifts a little between taps.
  • Holding a finger down for 0.5 s starts a caret drag. Scrolling first doesn't start one. The drag keeps going when the finger leaves the text, including inside a ScrollViewer.

Loupe

  • A magnifier follows caret and handle drags. iOS 17+ uses the system one (UITextLoupeSession). Hosts without one, such as Safari on iPad and iOS before 17, get an Uno-drawn magnifier.
  • Two new switches turn either magnifier off: FeatureConfiguration.TextBox.UseNativeTextLoupe and UseManagedTextLoupe. Both default to true, and both are documented in doc/articles/feature-flags.md.

Edit menu

  • The caret menu gets Select, and Select All now shows the selection handles. Both apply only under the iOS convention; Android is unchanged.
  • On iOS, the menu adds Look Up, Search Web, Share and Scan Text. They are provided through ApiExtensibility from Uno.UI.Runtime.AppleUIKit.

AutoFill

  • InputScope now maps to UITextContentType on the hidden native text field, so iOS can offer AutoFill (email, phone, name, address, URL, …).

WebAssembly on iPad

  • Tapping a TextBox that already has focus no longer dismisses the keyboard.

Fixes on top of the contributed commits

  • The new text-service code is excluded on tvOS, which lacks UIReferenceLibraryViewController and UIActivityViewController.
  • When the system cancels a handle drag, the loupe now ends. Before, the loupe stayed up and the native text field's selection stopped following. This adds ITextSelectionGripperHost.OnGripperPointerLost.
  • The Look Up and Share popovers now have an anchor when the selection has no bounds, instead of throwing on iPad.
  • A touch that never releases on the TextBox no longer starts a caret drag 0.5 s later. That covers a touch the system cancels, and a finger that slides off the box and lifts elsewhere. TextBox and PasswordBox now forward PointerCanceled and PointerExited to stop the hold. The drag also captures the touch that pressed, instead of whichever pointer moved last.
  • The edit menu that waits out the multi-tap window is dropped when a handle is pressed, or when typing changes the caret first.
  • Select All only shows handles under the iOS convention, as the Android convention behaved before this PR.
  • When the system loupe can't start, it isn't retried on every move. It could otherwise appear on top of the Uno-drawn one.
  • Triple-tapping an empty line leaves a caret, instead of selection handles around nothing.
  • Clicking or tapping the empty last line of text that ends in a line break, or below it, puts the caret on that line. UnicodeText.GetIndexAt placed it before the line break, for the mouse too and on every platform, so this one changes shared text hit-testing.
  • The Uno-drawn magnifier lays its copy of the text out like the TextBox, with the alignment the TextBox resolved and in the width its layout used. For right-to-left text in a default-aligned TextBox, it centered about 420 px away from the caret: the TextBox lays aligned text out across its full width, and the copy only got the narrower TextBlock width.
  • Closing the edit menu releases the TextBox. The default menu is shared, and its Look Up, Share and Scan Text actions kept the last TextBox, and its DataContext, alive.
  • Scan Text looks up the native text field when it's tapped, not when the menu opened, since the field can be replaced in between.

Validation

  • CI (first run):
    • The tvOS build passed.
    • On iOS, When_Touch_LongPress_Drags_Caret_Shows_Managed_Loupe_iOS failed (shard 3) because the system loupe takes over there. The test now turns the system loupe off. The other new tests passed on iOS, Android, WebAssembly and tvOS. The shard 0 failures were failing on master too, and have since been fixed or disabled there.
  • Compile:
    • Uno.UI.Runtime.AppleUIKit builds for net10.0-ios26.0, and SamplesApp builds for net10.0-desktop.
  • Runtime, Skia desktop:
    • 35 new Given_TextBox tests.
    • One attempt per test over every Given_TextBox.When_Touch_*, Given_CommandBarFlyout, Given_RichEditBox.When_Touch_*, Given_PasswordBox and gripper test (102 tests): 102/102.
    • The new and changed tests passed 15 iterations each.
    • Every test added for a fix fails without that fix and passes with it.
    • The full Given_TextBox class: everything passes on my machine except When_Multiline_Pointer_Tap and When_Pointer_RightClick_Selection, which fail identically on the base commit there and pass on CI.
    • A larger run over Given_TextBox, Given_TextBlock, Given_UnicodeText, Given_RichEditBox, Given_RichTextBlock, Given_PasswordBox, Given_CommandBarFlyout and the shared-flyout leak tests: 1501 passed, 11 failed. The same run on the previous head also had 11 failures:
      • the same 6 clipboard and local-only failures;
      • 5 touch tests that differ from run to run and pass when run alone.
  • The ScrollViewer flake: When_Touch_Selection_Does_Not_Lock_ScrollViewer_iOS failed intermittently because of this PR.
    • After a double-tap, the menu now opens 500 ms later. When that timer fired after the test had closed the menu, the menu reopened over the drag and the form didn't scroll.
    • Closing the menu early reproduces it every time.
    • The test now waits for the menu to open before closing it.
  • Not yet done: testing on a real iPhone or iPad, natively or in WebAssembly. Scan Text in particular has only been compiled.

Known follow-ups, not in this PR

  • Search Web uses the x-web-search:// URL scheme, which Apple doesn't document.
  • The loupe can flash briefly when a handle is tapped without dragging.
  • OTP isn't mapped for AutoFill, and the content type isn't cleared when InputScope changes during editing.
  • The four new menu labels only exist in English.
  • The tests wait fixed delays rather than for conditions.

PR Checklist ✅

🤖 Generated with Claude Code


This is an automatic backport of pull request #25619 done by [Mergify](https://mergify.com).

jbourque-kahua and others added 22 commits November 2, 2026 23:56
Co-authored-by: Andres Pineda <pineda.andres@gmail.com>
(cherry picked from commit 62ac51f)
Co-authored-by: Andres Pineda <pineda.andres@gmail.com>
(cherry picked from commit 9c46cf5)

# Conflicts:
#	src/Uno.UI.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/InvisibleTextBoxViewExtension.cs
Co-authored-by: Andres Pineda <pineda.andres@gmail.com>
(cherry picked from commit 56a23aa)

# Conflicts:
#	src/Uno.UI.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/InvisibleTextBoxLoupe.cs
#	src/Uno.UI/FeatureConfiguration.cs
#	src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.Properties.cs
#	src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.skia.cs
#	src/Uno.UI/UI/Xaml/Controls/TextBox/TextBoxCore.Loupe.cs
Co-authored-by: Andres Pineda <pineda.andres@gmail.com>
(cherry picked from commit 138c921)

# Conflicts:
#	src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.pointers.skia.cs
#	src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.skia.cs
Co-authored-by: Andres Pineda <pineda.andres@gmail.com>
(cherry picked from commit 73c77a0)

# Conflicts:
#	src/Uno.UI.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/AppleUIKitTextFlyoutCommands.cs
#	src/Uno.UI.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/InvisibleTextBoxViewExtension.cs
#	src/Uno.UI/UI/Xaml/Controls/CommandBarFlyout/TextCommandBarFlyout.mux.cs
#	src/Uno.UI/UI/Xaml/Controls/TextBox/TextBoxCore.TouchCommands.cs
(cherry picked from commit 21d7657)

# Conflicts:
#	src/Uno.UI/UI/Xaml/Controls/RichEditBox/RichEditBox.uno.cs
#	src/Uno.UI/UI/Xaml/Controls/TextBlock/TextBlock.cs
#	src/Uno.UI/UI/Xaml/Controls/TextBoxCore/TextBoxCore.Input.cs
(cherry picked from commit e286605)

# Conflicts:
#	src/Uno.UI/UI/Xaml/Controls/PasswordBox/PasswordBox.Overrides.cs
#	src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.Overrides.cs
(cherry picked from commit 27ebcf0)

# Conflicts:
#	src/Uno.UI/UI/Xaml/Controls/PasswordBox/PasswordBox.cs
(cherry picked from commit 7fc4304)

# Conflicts:
#	src/Uno.UI/UI/Xaml/Controls/CommandBarFlyout/TextCommandBarFlyout.mux.cs
(cherry picked from commit 6d1023e)

# Conflicts:
#	src/Uno.UI/UI/Xaml/Documents/UnicodeText.cs
@mergify mergify Bot added the conflicts Automated merge hit conflicts label Nov 2, 2026
@mergify

mergify Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

Cherry-pick of 9c46cf5 has failed:

On branch mergify/bp/servicing/6.8/pr-25619
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 9c46cf5.
  (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.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/IInvisibleTextBoxView.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/InputScopeHelper.UIKit.cs

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	both modified:   src/Uno.UI.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/InvisibleTextBoxViewExtension.cs

Cherry-pick of 56a23aa has failed:

On branch mergify/bp/servicing/6.8/pr-25619
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 56a23aa.
  (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.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/InvisibleTextBoxViewExtension.cs
	modified:   src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_TextBox.skia.cs
	new file:   src/Uno.UI/UI/Xaml/Controls/Primitives/TextBoxTouchLoupe.cs
	new file:   src/Uno.UI/UI/Xaml/Controls/TextBox/Extensions/INativeTextLoupeExtension.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.pointers.skia.cs

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
	added by them:   src/Uno.UI.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/InvisibleTextBoxLoupe.cs
	both modified:   src/Uno.UI/FeatureConfiguration.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
	added by them:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBoxCore.Loupe.cs

Cherry-pick of 138c921 has failed:

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

You are currently cherry-picking commit 138c921.
  (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.skia.cs

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	both modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.pointers.skia.cs
	both modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.skia.cs

Cherry-pick of 73c77a0 has failed:

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

You are currently cherry-picking commit 73c77a0.
  (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.Runtime.Skia.AppleUIKit/Hosting/ExtensionsRegistrar.cs
	modified:   src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_TextBox.skia.cs
	modified:   src/Uno.UI/Helpers/WinUI/ResourceAccessor.ResourceKeys.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/CommandBarFlyout/Strings/en-us/Resources.resw
	new file:   src/Uno.UI/UI/Xaml/Controls/CommandBarFlyout/TextCommandBarFlyout.Uno.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/CommandBarFlyout/TextCommandBarFlyout.h.mux.cs
	new file:   src/Uno.UI/UI/Xaml/Controls/TextBox/Extensions/ITextCommandBarFlyoutCommandsExtension.cs

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	added by them:   src/Uno.UI.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/AppleUIKitTextFlyoutCommands.cs
	both modified:   src/Uno.UI.Runtime.Skia.AppleUIKit/UI/Xaml/Controls/TextBox/InvisibleTextBoxViewExtension.cs
	both modified:   src/Uno.UI/UI/Xaml/Controls/CommandBarFlyout/TextCommandBarFlyout.mux.cs
	added by them:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBoxCore.TouchCommands.cs

Cherry-pick of 21d7657 has failed:

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

You are currently cherry-picking commit 21d7657.
  (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.skia.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/Primitives/TextSelectionGripperPresenter.skia.cs

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
	deleted by us:   src/Uno.UI/UI/Xaml/Controls/RichEditBox/RichEditBox.uno.cs
	both modified:   src/Uno.UI/UI/Xaml/Controls/TextBlock/TextBlock.cs
	deleted by us:   src/Uno.UI/UI/Xaml/Controls/TextBoxCore/TextBoxCore.Input.cs

Cherry-pick of e286605 has failed:

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

You are currently cherry-picking commit e286605.
  (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.skia.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.pointers.skia.cs

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

Cherry-pick of 27ebcf0 has failed:

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

You are currently cherry-picking commit 27ebcf0.
  (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.skia.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.pointers.skia.cs

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	both modified:   src/Uno.UI/UI/Xaml/Controls/PasswordBox/PasswordBox.cs

Cherry-pick of 7fc4304 has failed:

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

You are currently cherry-picking commit 7fc4304.
  (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)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	both modified:   src/Uno.UI/UI/Xaml/Controls/CommandBarFlyout/TextCommandBarFlyout.mux.cs

no changes added to commit (use "git add" and/or "git commit -a")

Cherry-pick of 6d1023e has failed:

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

You are currently cherry-picking commit 6d1023e.
  (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.skia.cs
	modified:   src/Uno.UI/UI/Xaml/Controls/TextBox/TextBox.pointers.skia.cs

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
	deleted by us:   src/Uno.UI/UI/Xaml/Documents/UnicodeText.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

@github-actions github-actions Bot added platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform area/skia ✏️ Categorizes an issue or PR as relevant to Skia kind/documentation labels Nov 2, 2026
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

WinAppSDK sync generator drift detected on ce3ac76

The Uno.WinAppSDKSyncGenerator produced changes that are not committed on this PR.

To apply automatically (PRs from branches in this repo only): comment /apply-sync-gen on this PR and a bot will push chore: Sync generator run to the head branch.

To apply manually (required for PRs from forks):

  1. Download the sync-generator-patch artifact from this run.
  2. In your local checkout of the PR branch:
    git apply sync-generator.patch
    git add -A
    git commit -m "chore: Sync generator run"
    git push
    

Or re-run the generator locally on Windows via build\run-api-sync-tool.cmd.

@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-25952/docs/index.html

@ajpinedam

Copy link
Copy Markdown
Contributor

The cherry-picks conflicted because master moved the TextBox code after 6.8 forked, in 7.0 breaking changes that stay on master:

Nine of the 23 cherry-picks failed, and Mergify committed what it had: conflict markers in 6 files, a deleted TextBox.skia.cs, and whole master copies of UnicodeText.cs, RichEditBox.uno.cs, TextBoxCore.Input.cs, TextBox.Properties.cs, TextBox.Overrides.cs and PasswordBox.Overrides.cs.

The last commit puts those files back to 6.8 and ports the PR's net change (master f2d1c6e8ed^1..f2d1c6e8ed) into 6.8's layout:

  • TextBoxCore.* changes go to TextBox.skia.cs / TextBox.pointers.skia.cs. The new partials are TextBox.Loupe.skia.cs and TextBox.TouchCommands.skia.cs. The managed loupe and the loupe extension interface take .skia.cs.
  • The forwarders master needs for its core aren't needed: OnPointerCanceled is a TextBox override, and OnPointerExited goes through a new OnPointerExitedPartial. PasswordBox inherits both, so it needs no changes of its own. The RichEditBox hunk is dropped: 6.8's RichEditBox has no Skia text surface.
  • TextCommandBarFlyout builds on every 6.8 target, so its calls into the Skia-only TextBox members are under #if __SKIA__.
  • Because PasswordBox is a TextBox on 6.8, it's excluded explicitly, as master excludes it by type: no Look Up / Search Web / Share / Scan Text on a password, and no Select All handles from the flyout.
  • The UnicodeText.GetIndexAt fix and the loupe's layout accessors are ported to UnicodeText.skia.cs. The AppleUIKit files use the 6.8 project and namespace.

The diff against 6.8 is 26 files, +2764/−198, against 31 files, +2771/−198 on master. Hunk by hunk, the added and removed lines match master's except for the adaptations above.

Validation (Skia desktop, macOS):

  • SamplesApp.Skia.Generic builds, including Uno.UI.Reference.
  • All 38 new or changed tests pass (41 cases).
  • Taking the GetIndexAt fix back out of UnicodeText.skia.cs makes the empty-last-line tests fail as they did on master (caret 3, or 0, instead of 4).
  • Given_TextBox, Given_PasswordBox, Given_CommandBarFlyout, Given_TextBlock and Given_RichEditBox give 379 passed and 5 failed. All 5 also fail on 6.8 builds without this PR on this Mac: When_Multiline_Pointer_Tap, When_Pointer_RightClick_Selection, When_Caret_Line_Straddles_Viewport_Edge_Grippers_Are_Hidden, the clipboard test When_IsTextSelectionEnabled_CRLF, and When_Inlines_Transitively_Change.
  • Uno.UI.Runtime.Skia.AppleUIKit builds for net9.0-ios18.0. Uno.UI.Runtime.Skia.WebAssembly.Browser compiles, and its TypeScript change is in the bundle. tvOS, Android and the native targets are left to CI.

Missing backport on 6.8: none. Every conflict comes from 7.0 breaking changes or master-only features, and this PR doesn't depend on any of them.

@ajpinedam ajpinedam removed the conflicts Automated merge hit conflicts label Nov 3, 2026
@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-25952/docs/index.html

@ajpinedam

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 2 pipeline(s).

@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 243287 did not find any UI Test snapshots differences.

@unodevops

Copy link
Copy Markdown
Contributor

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

@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-25952/docs/index.html

@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-25952/docs/index.html

@nventive-devops

Copy link
Copy Markdown
Contributor

The build 243424 did not find any UI Test snapshots differences.

@unodevops

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-25952/docs/index.html

@unodevops

Copy link
Copy Markdown
Contributor

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

@ajpinedam
ajpinedam enabled auto-merge November 4, 2026 01:10
@nventive-devops

Copy link
Copy Markdown
Contributor

The build 243470 did not find any UI Test snapshots differences.

@ajpinedam
ajpinedam merged commit a6ee1ff into servicing/6.8 Nov 4, 2026
45 checks passed
@ajpinedam
ajpinedam deleted the mergify/bp/servicing/6.8/pr-25619 branch November 4, 2026 03:54
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 kind/documentation platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants