react-native-windows icon indicating copy to clipboard operation
react-native-windows copied to clipboard

Remove assumptions that XamlRoot::Content() matches Window size

Open rozele opened this issue 2 years ago • 2 comments

Problem Description

There are at least two callsites that assume that the XamlRoot Size or the ActualSize of the XamlRoot::Content matches the size of the XAML Islands HWND:

  • https://github.com/microsoft/react-native-windows/blob/003602b90aeda1b2a43702c6a9307c0f01010e59/vnext/Microsoft.ReactNative/Modules/LogBoxModule.cpp#L48-L54
  • https://github.com/microsoft/react-native-windows/blob/cc7095ce487625a9a0a9b99b4b8df4043698eb78/vnext/Microsoft.ReactNative/Modules/AlertModule.cpp#L67-L85

While this is generally a good assumption, this may not always be the case. For example, in our app, we've worked around a XAML Islands bug https://github.com/microsoft/microsoft-ui-xaml/issues/2101 by making the root Grid larger than the HWND by a factor equivalent to the DPI scale factor.

Steps To Reproduce

There's no immediate repro in this repo, but one way to repro is to try and build a drag and drop handler for a XAML Islands react-native-windows app, and see that the full window is not a valid drop target for high DPI scale settings.

Expected Results

React Native Windows may want to assume that the root level content or XamlRoot matches the HWND size by default, but we should allow apps to override this behavior with a "window sizing root" target element that does match the window size.

CLI version

npx react-native --version

Environment

npx react-native info

Target Platform Version

No response

Target Device(s)

No response

Visual Studio Version

No response

Build Configuration

No response

Snack, code example, screenshot, or link to a repository

No response

rozele avatar Jun 28 '22 15:06 rozele

Discussed a bit in triage, several possible options/concerns. Alert module should support both Win32 style modal dialog as well as the UWP style (smoke screen). Needs design. @stmoy ?

asklar avatar Jun 30 '22 18:06 asklar

@rozele I think the PR description has an incomplete sentence:

As such, we need to

lyahdav avatar Jun 30 '22 22:06 lyahdav