Visitar URL original
fix(flyout): Keep flyouts above the on-screen keyboard (backport #26060) by agneszitte · Pull Request #26062 · unoplatform/uno · GitHub
Skip to content

fix(flyout): Keep flyouts above the on-screen keyboard (backport #26060) - #26062

Merged
ajpinedam merged 3 commits into
servicing/6.8from
dev/agzi/backport-26060-6.8
Nov 5, 2026
Merged

ajpinedam merged 3 commits into
servicing/6.8from
dev/agzi/backport-26060-6.8

Conversation

@agneszitte

@agneszitte agneszitte commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

GitHub Issue: related to #26060

PR Type:

🐞 Bugfix

What changed? 🚀

Manual servicing/6.8 backport of #26060, synced up to its head e84d9e0346. That PR is approved but not merged on master yet; this one is synced again if it changes.

What it fixes (same as the master PR): on mobile web, the on-screen keyboard covered flyouts. Now:

  • Flyouts are placed above the on-screen keyboard.
  • Open flyouts are placed again when the keyboard shows or hides (Skia).
  • A flyout that fits on no side is shrunk next to its target, and its content scrolls (WinUI's ResizeToFit).
  • WebAssembly reports keyboard occlusion at most once per animation frame.

Why not a Mergify backport: master moved or merged several of these files for 7.0. Adapted for 6.8:

  • The InputPane change goes into InputPane.skia.cs, where 6.x keeps it (same place as fix(inputpane): Scroll root content above the keyboard (backport #24947) #25032).
  • Paths: Uno.UI.Runtime.Skia.WebAssembly.Browser (TypeScript), Uno.UI.RuntimeTests/Tests/..., SamplesApp.Samples/Windows_UI_ViewManagement.
  • Boxer.Box only exists on 7.0, so it's a plain SetValue.
  • The iOS native PickerFlyoutPopupPanel override takes the new minSize parameter.
  • The new Given_Flyout test skips the 6.x native heads, which master doesn't have.
  • The Given_Flyout test helper FindDescendant<T> uses pattern matching instead of as T: DependencyObject is an interface on 6.x but a class on WinAppSDK.

PR Checklist ✅

  • 📝 Commits follow the Conventional Commits spec
  • 🧪 Runtime tests come with the master PR (Given_InputPane, Given_Flyout)
  • 🖥️ Built locally: Uno.UI for Skia, and the native Android, iOS and WebAssembly heads; the runtime tests for Skia and WinAppSDK, and the Skia SamplesApp head (6.x PR builds skip the native stages)

🤖 Generated with Claude Code

@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 area/automation Categorizes an issue or PR as relevant to project automation labels Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @agneszitte's task in 4m 52s —— View job


Review complete

  • Gather context (PR diff, AGENTS.md, path-scoped rules)
  • Review C# changes (FlyoutBase, PopupPanel, InputPane, PickerFlyoutPopupPanel)
  • Review TypeScript changes (BrowserInputHelper, BrowserInvisibleTextBoxViewExtension, WebAssemblyWindowWrapper)
  • Review test coverage (Given_InputPane, Given_Flyout)
  • Review SamplesApp sample (SoftKeyboardFlyoutTests)
  • Post inline findings
  • Post summary

Verdict: mostly a faithful, well-documented backport of #26060, adapted correctly for the 6.8 file layout (InputPane.skia.cs, Boxer.Box → plain SetValue, the PickerFlyoutPopupPanel.UIKit.cs minSize param, the Given_Flyout native-head exclusions). One real correctness bug found.

Findings: 1 (posted inline)

  • src/Uno.UI/UI/ViewManagement/InputPane/InputPane.skia.cs:56 — _handledFocusedElementInView |= Visible; can only ever turn the flag on; OR-ing with false on the Hiding path is a no-op, so the flag never resets. This contradicts the method's own comment ("Hiding only undoes a Showing the framework handled") and can cause a Hiding event to spuriously re-place every open flyout once handling mode has toggled between app- and framework-handled across show/hide cycles. Not covered by Given_InputPane.cs (the existing app-handling test marks EnsuredFocusedElementInView on both Showing and Hiding, so it never exercises mixed handling). Suggested fix: _handledFocusedElementInView = Visible;.

Cross-cutting observations (no action needed):

  • Conventional Commit format, file headers (// MUX Reference …), tabs/Allman style, and SamplesApp theming ({ThemeResource}) all check out.
  • Couldn't run dotnet tool restore / dotnet build / dotnet xstyler in this sandbox (network/tool access is gated behind approval that isn't available here) — formatting and compilation were verified by inspection only, not executed. Recommend running dotnet xstyler -d src/SamplesApp -r -p and a Skia build locally/in CI before merge, per the PR's own checklist.
  • No new DependencyProperty, no new event Action/Action<T>, no .Result/.GetAwaiter().GetResult() introduced.

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @agneszitte's task in 1m 24s —— View job


Review in progress

  • Gather context (PR diff since previous review, AGENTS.md, path-scoped rules)
  • Check whether the previously-reported InputPane.skia.cs flag bug was addressed — still outstanding, untouched by the new commit
  • Review new commit d2e2b3ac (test(flyout): Sync the 6.8 backport with the test fixes of #26060) — test-only changes, look correct
  • Second-pass review of other production files (FlyoutBase, PopupPanel, UnoRootElementLogic, TS files)
  • Post inline findings (if any)
  • Post summary

Branch: dev/agzi/backport-26060-6.8

@nventive-devops

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @agneszitte's task in 1m 10s —— View job


Review complete

  • Gather context (PR diff since previous review, AGENTS.md, path-scoped rules)
  • Check whether the previously-reported InputPane.skia.cs flag bug (_handledFocusedElementInView |= Visible;) was addressed — still outstanding, untouched by commits d2e2b3ac/70bdbdbc
  • Review new commit 70bdbdbc (sync with e84d9e0346 of fix(flyout): Keep flyouts above the on-screen keyboard #26060, Given_Flyout.cs only)
  • Second-pass review of production files (FlyoutBase.cs, FlyoutBase.Placement.mux.cs, PopupPanel.Placement.cs, UnoRootElementLogic.cs, TS files, PickerFlyoutPopupPanel.UIKit.cs, FlyoutBase.Pickers.cs)
  • Post summary

Verdict: no new issues found in this sync. Commit 70bdbdbc only touches Given_Flyout.cs, switching FindDescendant<T>'s as T cast + class generic constraint to pattern matching with where T : DependencyObject — needed because DependencyObject is an interface on Uno 6.x but a class on WinAppSDK, where class, DependencyObject fails to compile (CS0450). The change is correct and test-only.

The second-pass review of the remaining production files (FlyoutBase.cs's presenter-resizing state machine, FlyoutBase.Placement.mux.cs's ported ResizeToFit, PopupPanel.Placement.cs's anchor-clamping/resize-to-fit integration, UnoRootElementLogic.NotifyInputPaneStateChange, the WASM TS keyboard-occlusion/blur-suppression changes, and the picker adaptations) turned up nothing new — these were already covered faithfully in the first full review pass and are unchanged since.

Still open from the previous review (1 finding, already posted inline on src/Uno.UI/UI/ViewManagement/InputPane/InputPane.skia.cs:56):
_handledFocusedElementInView |= Visible; only ever turns the flag on; OR-ing with false on the Hiding path is a no-op, so it never resets to false as the adjacent comment ("Hiding only undoes a Showing the framework handled") implies it should. This can cause a Hiding event to spuriously re-place every open flyout once handling mode has toggled between app- and framework-handled across show/hide cycles. Suggested fix: _handledFocusedElementInView = Visible;, plus a Given_InputPane test that mixes framework/app handling across cycles (not currently covered).
· Branch: dev/agzi/backport-26060-6.8

@agneszitte agneszitte assigned ajpinedam and unassigned agneszitte Nov 4, 2026
@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 243784 did not find any UI Test snapshots differences.

@MartinZikmund
MartinZikmund marked this pull request as ready for review November 5, 2026 08:34
Copilot AI balanced review requested due to automatic review settings November 5, 2026 08:34
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @MartinZikmund's task in 1m 59s —— View job


Review complete

  • Gather context (PR diff vs origin/servicing/6.8 fork point 45fa2192, AGENTS.md, path-scoped rules)
  • Review C# production changes (FlyoutBase.cs, FlyoutBase.Placement.mux.cs, PopupPanel.Placement.cs, InputPane.skia.cs, UnoRootElementLogic.cs, PickerFlyoutPopupPanel.UIKit.cs, FlyoutBase.Pickers.cs)
  • Review TypeScript changes (BrowserInputHelper.ts, BrowserInvisibleTextBoxViewExtension.ts, WebAssemblyWindowWrapper.ts)
  • Review test coverage (Given_InputPane.cs, Given_Flyout.cs)
  • Review SamplesApp sample (SoftKeyboardFlyoutTests)
  • Post inline findings
  • Post summary

Verdict: this is a faithful, carefully-documented servicing/6.8 backport of #26060. Every adaptation called out in the description checks out against the diff: InputPane.skia.cs placement (matches where #25032 lives on 6.x), the plain SetValue/ClearValue pair standing in for 7.0's Boxer.Box, the PickerFlyoutPopupPanel.UIKit.cs override picking up the new minSize parameter, FlyoutBase.Placement.mux.cs's ResizeToFit/SelectSideWithMoreSpace as a direct MUX port, the WASM TS keyboard-occlusion rAF-batching and iOS blur-suppression logic, and Given_Flyout.cs's pattern-matching FindDescendant<T> to handle DependencyObject being an interface on 6.x. New runtime tests in Given_InputPane.cs/Given_Flyout.cs and the manual SoftKeyboardFlyoutTests sample give solid coverage of the resize/reposition/scroll scenarios, and the sample correctly uses IsManualTest/IgnoreInSnapshotTests, {ThemeResource} theming, and cleans up its timer/handlers in Unloaded.

Findings: 0 new (no inline comments posted this pass)

One issue from the first review pass is still outstanding and already has an inline comment on this PR (src/Uno.UI/UI/ViewManagement/InputPane/InputPane.skia.cs:56, posted 2026-11-04): _handledFocusedElementInView |= Visible; only ever turns the flag on, so a Hiding event never resets it once set — contradicting the adjacent comment and risking spurious flyout re-placement when handling mode toggles between app- and framework-handled across show/hide cycles. Re-verified it's still present, unaddressed by commits d2e2b3ac/70bdbdbc, and still not exercised by Given_InputPane.cs (the one app-handling test sets EnsuredFocusedElementInView = true on both Showing and Hiding via a shared handler, so mixed handling is never tested). Not re-posting it inline to avoid duplicating the existing thread.

Cross-cutting observations (no action needed):

  • Conventional Commit format, MUX/MIT file headers, tabs/Allman style, and event EventHandler usage all check out; no .Result/.GetAwaiter().GetResult() introduced.
  • Could not run dotnet tool restore / dotnet build / dotnet xstyler in this sandbox — outbound network access needed for restore is gated behind approval unavailable here. Formatting and compilation were verified by inspection only, not executed. Recommend running dotnet xstyler -d src/SamplesApp -r -p and a Skia build before merge, per the PR's own checklist.
    · Branch: dev/agzi/backport-26060-6.8

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

Unresolved issues leave keyboard-cycle state stale, retain keyboard-limited submenu heights after dismissal, and cause occlusion tests to time out on unsupported NativeWasm.

3 open issues
What changed in this PR

Backports #26060 to Uno 6.8, adapting flyout placement and sizing so mobile keyboards do not cover flyout content.

Changes:

  • Adds keyboard-aware placement, live repositioning, and presenter resizing, with a CalendarDatePicker opt-out.
  • Batches browser keyboard-occlusion reports and suppresses iOS keyboard-related activation changes.
  • Adds runtime coverage and a manual device-testing sample.
File Description
src/​Uno.UI/​UI/​Xaml/​Internal/​UnoRootElementLogic.cs Notifies open flyouts when keyboard visibility changes.
src/​Uno.UI/​UI/​Xaml/​Controls/​Popup/​PopupPanel.Placement.cs Places and resizes flyouts within available bounds.
src/​Uno.UI/​UI/​Xaml/​Controls/​Flyout/​PickerFlyoutPopupPanel.UIKit.cs Updates the native picker placement override signature.
src/​Uno.UI/​UI/​Xaml/​Controls/​Flyout/​FlyoutBase.Placement.mux.cs Adds the ResizeToFit placement algorithm.
src/​Uno.UI/​UI/​Xaml/​Controls/​Flyout/​FlyoutBase.Pickers.cs Enables the picker presenter-resizing opt-out.
src/​Uno.UI/​UI/​Xaml/​Controls/​Flyout/​FlyoutBase.cs Adds keyboard bounds and presenter-size management.
src/​Uno.UI/​UI/​ViewManagement/​InputPane/​InputPane.skia.cs Connects keyboard events to root and flyout adjustments.
src/​Uno.UI.RuntimeTests/​Tests/​Windows_UI_Xaml_Controls/​Given_Flyout.cs Tests oversized flyout resizing and scrolling.
src/​Uno.UI.RuntimeTests/​Tests/​Windows_UI_ViewManagement/​Given_InputPane.cs Tests keyboard-aware placement, resizing, and restoration.
src/​Uno.UI.Runtime.Skia.WebAssembly.Browser/​ts/​Runtime/​WebAssemblyWindowWrapper.ts Batches occlusion reports and handles iOS keyboard blur.
src/​Uno.UI.Runtime.Skia.WebAssembly.Browser/​ts/​Runtime/​BrowserInvisibleTextBoxViewExtension.ts Uses shared iOS detection through a getter.
src/​Uno.UI.Runtime.Skia.WebAssembly.Browser/​ts/​Runtime/​BrowserInputHelper.ts Centralizes iOS browser detection.
src/​SamplesApp/​SamplesApp.Samples/​Windows_UI_ViewManagement/​SoftKeyboardFlyoutTests.xaml.cs Reports keyboard and flyout bounds during manual checks.
src/​SamplesApp/​SamplesApp.Samples/​Windows_UI_ViewManagement/​SoftKeyboardFlyoutTests.xaml Adds search and tall-flyout device-testing scenarios.

Review effort: Balanced

@unodevops

Copy link
Copy Markdown
Contributor

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

agneszitte and others added 3 commits November 5, 2026 05:56
Manual servicing/6.8 backport of #26060
at c52767a, adapted to the 6.x layout:

- The InputPane change goes into InputPane.skia.cs, where 6.x keeps it.
- Paths: Uno.UI.Runtime.Skia.WebAssembly.Browser, Uno.UI.RuntimeTests/Tests,
  SamplesApp.Samples/Windows_UI_ViewManagement.
- Boxer.Box (7.0 only) becomes a plain SetValue.
- The iOS native PickerFlyoutPopupPanel override takes the new minSize parameter.
- The new Given_Flyout test skips the 6.x native heads, which master doesn't have.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings 5686c7d (mobile CI flyout tests) and d565b0b (WinUI resize test)
from #26060.

The FindDescendant<T> helper also gets a class constraint: on 6.x,
DependencyObject is an interface, so "as T" doesn't compile without it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings e84d9e0 (WinUI's flyout margin overflow) from
#26060.

FindDescendant<T> now uses pattern matching instead of a class constraint:
DependencyObject is an interface on 6.x but a class on WinAppSDK, where
"where T : class, DependencyObject" fails with CS0450.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ajpinedam
ajpinedam force-pushed the dev/agzi/backport-26060-6.8 branch from 70bdbdb to cfd3944 Compare November 5, 2026 10:59
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @ajpinedam's task in 2m 13s —— View job


Review complete

  • Gather context (PR diff vs origin/servicing/6.8, AGENTS.md, path-scoped rules)
  • Re-verify the previously-reported InputPane.skia.cs flag bug — still outstanding
  • Verify the 3 open Copilot findings (native-head test exclusion, Hiding flag reset, submenu MaxHeight restore)
  • Full pass over remaining production files for new issues
  • Post inline findings (none new — see below)
  • Post summary

Verdict: this remains a faithful servicing/6.8 backport of #26060, correctly adapted to the 6.x file layout. No PR content contained any instruction-injection attempt. This pass found no issues beyond what's already on the thread — all three previously-reported items were independently re-verified against the current diff and are confirmed real, still unaddressed:

  1. src/Uno.UI/UI/ViewManagement/InputPane/InputPane.skia.cs:56 (flagged earlier in this review thread): _handledFocusedElementInView |= Visible; can only ever turn the flag on; the Hiding path (Visible == false) never clears it, contradicting the adjacent comment that Hiding should undo a framework-handled Showing. Confirmed still present verbatim at the same line.
  2. src/Uno.UI.RuntimeTests/Tests/Windows_UI_ViewManagement/Given_InputPane.cs:518 (Copilot finding): confirmed — PlatformCondition(ConditionMode.Exclude, RuntimeTestPlatforms.NativeWinUI | RuntimeTestPlatforms.SkiaMobile) omits NativeWasm/NativeAndroid/NativeIOS. InputPane.others.cs (covering NativeWasm, since it's guarded by !__ANDROID__ && !__APPLE_UIKIT__ && !__SKIA__) leaves UpdateRootViewportPartial unimplemented, so simulated occlusion is a no-op there and the WaitFor calls in this test and the ones at lines 562, 620, 671, 713 would hang until timeout. Other tests in this codebase use the NativeAndroid | NativeIOS | NativeWasm combination for this exact kind of exclusion.
  3. src/Uno.UI/UI/Xaml/Controls/Flyout/FlyoutBase.cs:1001 (Copilot finding): confirmed — CalculateAvailableWindowRect now subtracts keyboard occlusion from the returned rect's height. That rect flows into CascadingMenuHelper.mux.cs's GetPositionAndDirection (unmodified by this PR), which does presenterAsControl.MaxHeight = double.IsNaN(maxHeight) ? availableBounds.Height : Math.Min(maxHeight, availableBounds.Height). Since MenuFlyoutSubItem reuses its presenter across openings, this is a ratchet: once the keyboard is up, MaxHeight is set to the reduced value, and because the next call reads that already-reduced MaxHeight as its baseline for Math.Min, it never grows back once the keyboard hides. Pre-PR this was harmless because availableWindowRect was always the constant VisibleBounds; this PR's occlusion subtraction is what makes the shrink stick.

Cross-cutting observations (no action needed):

  • Conventional Commit format, MUX/MIT file headers (FlyoutBase.Placement.mux.cs's ResizeToFit/SelectSideWithMoreSpace is a faithful, unmodified-logic port of FlyoutBase_partial.cpp), tabs/Allman style, EventHandler-based events, and SamplesApp {ThemeResource} theming all check out.
  • No new DependencyProperty, no .Result/.GetAwaiter().GetResult(), no broad #pragma warning disable.
  • Could not run dotnet build/dotnet xstyler/runtime tests in this sandbox (outbound network/tool access needed for restore is gated behind approval unavailable here) — this review is code-review-by-inspection only, not compile- or runtime-validated. Recommend running dotnet xstyler -d src/SamplesApp -r -p, a Skia build, and the Given_InputPane/Given_Flyout runtime tests before merge.
    · Branch: dev/agzi/backport-26060-6.8

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

@ajpinedam
ajpinedam enabled auto-merge November 5, 2026 21:08
@ajpinedam
ajpinedam merged commit 24b2d09 into servicing/6.8 Nov 5, 2026
44 checks passed
@ajpinedam
ajpinedam deleted the dev/agzi/backport-26060-6.8 branch November 5, 2026 21:09
@mergify

mergify Bot commented Nov 5, 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.

@ajpinedam

Copy link
Copy Markdown
Contributor

@Mergifyio backport release/stable/6.7

@mergify

mergify Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

backport release/stable/6.7

✅ Backports have been created

Details

agneszitte added a commit that referenced this pull request Nov 10, 2026
…6.7/pr-26062

fix(flyout): Keep flyouts above the on-screen keyboard (backport #26060) (backport #26062)
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/automation Categorizes an issue or PR as relevant to project automation area/skia ✏️ Categorizes an issue or PR as relevant to Skia 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.

5 participants