CARVIEW |
Select Language
HTTP/2 200
date: Tue, 29 Jul 2025 02:47:57 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-repository-download: git clone https://github.com/microsoft/react-native-windows.git
etag: W/"4c6f15a5529ec931ff378565a681bd8e"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=dr9COuDmKopGaN25V1Yj%2FdtZCPtuNVUqK2%2B%2FJ2y%2FEdQDKwpt6EWdnx2Rp2L9yaCr9TQxGPvN5VXIrGmnEhpI58lCJefLajnCXQMjV7BjxhstjhGBgSbQRSEqehsx3GKZBWSyCB3C4JXs1VnhC8PIaCK5aQxNu7D2NI4AQ2OygMt9gMqcyXe1fEii0c9ewQO5FKBXQ5qb%2BGzCDjsMFwMjsJIA3mXdIO%2FfvgD6eTj8LEzi62h2Mh5HhLSz6h6u0mMqs1xoFnEyvSUddjbsFbtbZQ%3D%3D--nWCEMm411RwrIslb--dIuVZuuVsrHJaRvVYVIqNw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.630349066.1753757276; Path=/; Domain=github.com; Expires=Wed, 29 Jul 2026 02:47:56 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Wed, 29 Jul 2026 02:47:56 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: B092:317B9A:1E876C:2D3E64:6888365C
Simplify Flyout and Popup coordinate spaces (#11822) · microsoft/react-native-windows@d603706 · GitHub
Copy file name to clipboard
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Modules/NativeUIManager.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/FlyoutViewManager.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/PopupViewManager.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/ShadowNodeBase.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/ShadowNodeBase.h
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/TextViewManager.cpp
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit d603706
authored
Simplify Flyout and Popup coordinate spaces (#11822)
* Simplify Flyout and Popup coordinate spaces
We are seeing some issues with pointer event handling in XAML Islands
apps. It appears that part of the issue has to do with the coordinate
spaces not exactly lining up. It is too difficult to reason about the
coordinate spaces when there are minor differences in measurement
behavior. The coordinate spaces for TouchEventHandler and
UIManager.measure need to line up exactly for Pressable to work as
expected (as Pressable calls UIManager.measure to ensure the pointer is
still in the hit box after a pointerMove event occurs).
TouchEventHandler transforms the RoutedPointerEventArgs
pointer position to the view passed to the TouchEventHandler:
UIManager.measure measures against either the ReactRootView or the view
corresponding to the last ancestor before a ShadowNode with IsWindowed
set to true.
This latter logic is the part in UIManager.measure is the part that
complicates the reasoning about coordinate spaces. Even though it's
designed to measure against the same native component, it's an extra
(and arguably unnecessary) step to figuring out if the coordinate spaces
match. It's much simpler to assume that all coordinate spaces are
relative to the ReactRootView.
This change should probably be marked as breaking, even though it could
conceivably be considered a bug fix. Breaking in part because the X/Y
positions returned from UIManager.measure will no longer be relative to
the Flyout or Popup root. Also breaking because `pointerEvents` values
for nodes above the Flyout will now impact the Flyout.
For example:
```
<View pointerEvents="none">
<Flyout isOpen={true}>
<Button title="Click Me" onPress={() => alert("Pressed")} />
</Flyout>
</View>
```
Previously, the Flyout content would not respect the ancestors
`pointerEvents` value. With this change, the pointer event will
propagate through the entire tree, and respect any
`"box-none"` or `"none"` props for ancestors in the main window.
* Change files1 parent 53456b7 commit d603706Copy full SHA for d603706
File tree
Expand file treeCollapse file tree
7 files changed
+26
-51
lines changedFilter options
- change
- vnext/Microsoft.ReactNative
- Modules
- Views
Expand file treeCollapse file tree
7 files changed
+26
-51
lines changedchange/react-native-windows-4a09e136-8bbd-4b99-95ab-fdaed43e9292.json
Copy file name to clipboard+7Lines changed: 7 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + |
vnext/Microsoft.ReactNative/Modules/NativeUIManager.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Modules/NativeUIManager.cpp+4-27Lines changed: 4 additions & 27 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
999 | 999 |
| |
1000 | 1000 |
| |
1001 | 1001 |
| |
1002 |
| - | |
1003 |
| - | |
1004 |
| - | |
1005 |
| - | |
1006 |
| - | |
1007 |
| - | |
1008 |
| - | |
1009 |
| - | |
1010 |
| - | |
1011 |
| - | |
1012 |
| - | |
1013 |
| - | |
1014 |
| - | |
1015 |
| - | |
1016 |
| - | |
1017 |
| - | |
1018 |
| - | |
1019 |
| - | |
1020 |
| - | |
| 1002 | + | |
| 1003 | + | |
1021 | 1004 |
| |
1022 |
| - | |
1023 |
| - | |
1024 |
| - | |
1025 |
| - | |
1026 |
| - | |
1027 |
| - | |
1028 |
| - | |
1029 |
| - | |
| 1005 | + | |
| 1006 | + | |
1030 | 1007 |
| |
1031 | 1008 |
| |
1032 | 1009 |
| |
|
vnext/Microsoft.ReactNative/Views/FlyoutViewManager.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/FlyoutViewManager.cpp+1-5Lines changed: 1 addition & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
114 | 114 |
| |
115 | 115 |
| |
116 | 116 |
| |
117 |
| - | |
118 |
| - | |
119 |
| - | |
120 |
| - | |
121 | 117 |
| |
122 | 118 |
| |
123 | 119 |
| |
| |||
152 | 148 |
| |
153 | 149 |
| |
154 | 150 |
| |
155 |
| - | |
| 151 | + | |
156 | 152 |
| |
157 | 153 |
| |
158 | 154 |
| |
|
vnext/Microsoft.ReactNative/Views/PopupViewManager.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/PopupViewManager.cpp+1-5Lines changed: 1 addition & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
44 | 44 |
| |
45 | 45 |
| |
46 | 46 |
| |
47 |
| - | |
48 |
| - | |
49 |
| - | |
50 |
| - | |
51 | 47 |
| |
52 | 48 |
| |
53 | 49 |
| |
| |||
132 | 128 |
| |
133 | 129 |
| |
134 | 130 |
| |
135 |
| - | |
| 131 | + | |
136 | 132 |
| |
137 | 133 |
| |
138 | 134 |
| |
|
vnext/Microsoft.ReactNative/Views/ShadowNodeBase.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/ShadowNodeBase.cpp+11Lines changed: 11 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
143 | 143 |
| |
144 | 144 |
| |
145 | 145 |
| |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
146 | 157 |
| |
147 | 158 |
| |
148 | 159 |
| |
|
vnext/Microsoft.ReactNative/Views/ShadowNodeBase.h
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/ShadowNodeBase.h+2-3Lines changed: 2 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
98 | 98 |
| |
99 | 99 |
| |
100 | 100 |
| |
101 |
| - | |
102 |
| - | |
103 |
| - | |
104 | 101 |
| |
105 | 102 |
| |
106 | 103 |
| |
| |||
136 | 133 |
| |
137 | 134 |
| |
138 | 135 |
| |
| 136 | + | |
| 137 | + | |
139 | 138 |
| |
140 | 139 |
| |
141 | 140 |
| |
|
vnext/Microsoft.ReactNative/Views/TextViewManager.cpp
Copy file name to clipboardExpand all lines: vnext/Microsoft.ReactNative/Views/TextViewManager.cpp-11Lines changed: 0 additions & 11 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
180 | 180 |
| |
181 | 181 |
| |
182 | 182 |
| |
183 |
| - | |
184 |
| - | |
185 |
| - | |
186 |
| - | |
187 |
| - | |
188 |
| - | |
189 |
| - | |
190 |
| - | |
191 |
| - | |
192 |
| - | |
193 |
| - | |
194 | 183 |
| |
195 | 184 |
| |
196 | 185 |
| |
|
You can’t perform that action at this time.
0 commit comments