react-native-windows 0.74.0-preview.3 → 0.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Microsoft.ReactNative/CompositionComponentView.idl +18 -3
- package/Microsoft.ReactNative/CompositionContext.idl +5 -5
- package/Microsoft.ReactNative/CompositionRootView.idl +22 -8
- package/Microsoft.ReactNative/CompositionSwitcher.idl +2 -2
- package/Microsoft.ReactNative/CompositionUIService.idl +8 -6
- package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +8 -1
- package/Microsoft.ReactNative/Fabric/AbiViewProps.h +7 -2
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +4 -3
- package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +5 -5
- package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.h +2 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +181 -154
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +8 -8
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +13 -13
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +14 -11
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +36 -12
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +16 -10
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +15 -4
- package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp +20 -9
- package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.h +6 -4
- package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +5 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +180 -128
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +25 -19
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.h +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +16 -22
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +5 -5
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +9 -10
- package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +5 -5
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +6 -5
- package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +5 -5
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +5 -2
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +7 -3
- package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +2 -2
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +36 -35
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +6 -6
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +9 -9
- package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +6 -6
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +25 -19
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +6 -6
- package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +13 -3
- package/Microsoft.ReactNative/Fabric/Composition/Theme.h +16 -8
- package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +3 -3
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +5 -8
- package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +3 -3
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +1 -1
- package/Microsoft.ReactNative/Fabric/IComponentViewRegistry.h +1 -1
- package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +2 -1
- package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +7 -5
- package/Microsoft.ReactNative/Theme.idl +12 -1
- package/Microsoft.ReactNative/Utils/KeyboardUtils.cpp +10 -2
- package/Microsoft.ReactNative/Utils/KeyboardUtils.h +4 -1
- package/Microsoft.ReactNative/ViewProps.idl +11 -1
- package/Microsoft.ReactNative/packages.lock.json +70 -42
- package/Microsoft.ReactNative.Cxx/AutoDraw.h +6 -4
- package/Microsoft.ReactNative.Cxx/{CompositionSwitcher.interop.h → CompositionSwitcher.Experimental.interop.h} +3 -3
- package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +2 -0
- package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +2 -11
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.props +1 -1
- package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +5 -3
- package/PropertySheets/Generated/PackageVersion.g.props +2 -2
- package/Scripts/OfficeReact.Win32.nuspec +2 -0
- package/package.json +8 -5
- package/templates/cpp-app/windows/MyApp/MyApp.cpp +2 -7
|
@@ -3,24 +3,24 @@
|
|
|
3
3
|
#pragma once
|
|
4
4
|
|
|
5
5
|
#ifdef USE_WINUI3
|
|
6
|
-
#include "Composition.MicrosoftCompositionContextHelper.g.h"
|
|
6
|
+
#include "Composition.Experimental.MicrosoftCompositionContextHelper.g.h"
|
|
7
7
|
#endif
|
|
8
|
-
#include "Composition.SystemCompositionContextHelper.g.h"
|
|
8
|
+
#include "Composition.Experimental.SystemCompositionContextHelper.g.h"
|
|
9
9
|
|
|
10
10
|
#include <d2d1_1.h>
|
|
11
11
|
#include <windows.ui.composition.interop.h>
|
|
12
12
|
#include <winrt/Windows.UI.Composition.h>
|
|
13
13
|
#include "CompositionHelpers.h"
|
|
14
14
|
|
|
15
|
-
namespace winrt::Microsoft::ReactNative::Composition {
|
|
15
|
+
namespace winrt::Microsoft::ReactNative::Composition::Experimental {
|
|
16
16
|
#ifdef USE_WINUI3
|
|
17
17
|
using CompositionContextHelper = MicrosoftCompositionContextHelper;
|
|
18
18
|
#else
|
|
19
19
|
using CompositionContextHelper = SystemCompositionContextHelper;
|
|
20
20
|
#endif
|
|
21
|
-
} // namespace winrt::Microsoft::ReactNative::Composition
|
|
21
|
+
} // namespace winrt::Microsoft::ReactNative::Composition::Experimental
|
|
22
22
|
|
|
23
|
-
namespace winrt::Microsoft::ReactNative::Composition::implementation {
|
|
23
|
+
namespace winrt::Microsoft::ReactNative::Composition::Experimental::implementation {
|
|
24
24
|
|
|
25
25
|
struct SystemCompositionContextHelper : SystemCompositionContextHelperT<SystemCompositionContextHelper> {
|
|
26
26
|
SystemCompositionContextHelper() = default;
|
|
@@ -48,9 +48,9 @@ struct MicrosoftCompositionContextHelper : MicrosoftCompositionContextHelperT<Mi
|
|
|
48
48
|
};
|
|
49
49
|
#endif
|
|
50
50
|
|
|
51
|
-
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
51
|
+
} // namespace winrt::Microsoft::ReactNative::Composition::Experimental::implementation
|
|
52
52
|
|
|
53
|
-
namespace winrt::Microsoft::ReactNative::Composition::factory_implementation {
|
|
53
|
+
namespace winrt::Microsoft::ReactNative::Composition::Experimental::factory_implementation {
|
|
54
54
|
|
|
55
55
|
struct SystemCompositionContextHelper
|
|
56
56
|
: SystemCompositionContextHelperT<SystemCompositionContextHelper, implementation::SystemCompositionContextHelper> {
|
|
@@ -62,4 +62,4 @@ struct MicrosoftCompositionContextHelper : MicrosoftCompositionContextHelperT<
|
|
|
62
62
|
implementation::MicrosoftCompositionContextHelper> {};
|
|
63
63
|
#endif
|
|
64
64
|
|
|
65
|
-
} // namespace winrt::Microsoft::ReactNative::Composition::factory_implementation
|
|
65
|
+
} // namespace winrt::Microsoft::ReactNative::Composition::Experimental::factory_implementation
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
|
|
2
2
|
#include "pch.h"
|
|
3
3
|
#include "CompositionContextHelper.h"
|
|
4
|
-
#if __has_include("Composition.SystemCompositionContextHelper.g.cpp")
|
|
5
|
-
#include "Composition.SystemCompositionContextHelper.g.cpp"
|
|
4
|
+
#if __has_include("Composition.Experimental.SystemCompositionContextHelper.g.cpp")
|
|
5
|
+
#include "Composition.Experimental.SystemCompositionContextHelper.g.cpp"
|
|
6
6
|
#endif
|
|
7
7
|
#ifdef USE_WINUI3
|
|
8
|
-
#if __has_include("Composition.MicrosoftCompositionContextHelper.g.cpp")
|
|
9
|
-
#include "Composition.MicrosoftCompositionContextHelper.g.cpp"
|
|
8
|
+
#if __has_include("Composition.Experimental.MicrosoftCompositionContextHelper.g.cpp")
|
|
9
|
+
#include "Composition.Experimental.MicrosoftCompositionContextHelper.g.cpp"
|
|
10
10
|
#endif
|
|
11
11
|
#endif
|
|
12
12
|
|
|
13
|
-
namespace winrt::Microsoft::ReactNative::Composition::implementation {
|
|
13
|
+
namespace winrt::Microsoft::ReactNative::Composition::Experimental::implementation {
|
|
14
14
|
|
|
15
15
|
ICompositionContext SystemCompositionContextHelper::CreateContext(
|
|
16
16
|
winrt::Windows::UI::Composition::Compositor const &) noexcept {
|
|
@@ -45,35 +45,35 @@ winrt::Windows::UI::Composition::ICompositionSurface SystemCompositionContextHel
|
|
|
45
45
|
|
|
46
46
|
#ifdef USE_WINUI3
|
|
47
47
|
ICompositionContext MicrosoftCompositionContextHelper::CreateContext(
|
|
48
|
-
winrt::
|
|
48
|
+
winrt::Microsoft::UI::Composition::Compositor const &) noexcept {
|
|
49
49
|
return nullptr;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
IVisual MicrosoftCompositionContextHelper::CreateVisual(winrt::
|
|
52
|
+
IVisual MicrosoftCompositionContextHelper::CreateVisual(winrt::Microsoft::UI::Composition::Visual const &) noexcept {
|
|
53
53
|
return nullptr;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
winrt::
|
|
56
|
+
winrt::Microsoft::UI::Composition::Compositor MicrosoftCompositionContextHelper::InnerCompositor(
|
|
57
57
|
ICompositionContext) noexcept {
|
|
58
58
|
return nullptr;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
winrt::
|
|
61
|
+
winrt::Microsoft::UI::Composition::Visual MicrosoftCompositionContextHelper::InnerVisual(IVisual) noexcept {
|
|
62
62
|
return nullptr;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
winrt::
|
|
65
|
+
winrt::Microsoft::UI::Composition::DropShadow MicrosoftCompositionContextHelper::InnerDropShadow(IDropShadow) noexcept {
|
|
66
66
|
return nullptr;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
winrt::
|
|
69
|
+
winrt::Microsoft::UI::Composition::CompositionBrush MicrosoftCompositionContextHelper::InnerBrush(IBrush) noexcept {
|
|
70
70
|
return nullptr;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
winrt::
|
|
73
|
+
winrt::Microsoft::UI::Composition::ICompositionSurface MicrosoftCompositionContextHelper::InnerSurface(
|
|
74
74
|
IDrawingSurfaceBrush) noexcept {
|
|
75
75
|
return nullptr;
|
|
76
76
|
}
|
|
77
77
|
#endif
|
|
78
78
|
|
|
79
|
-
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
79
|
+
} // namespace winrt::Microsoft::ReactNative::Composition::Experimental::implementation
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#include "CompositionContextHelper.h"
|
|
15
15
|
#include "ReactNativeHost.h"
|
|
16
16
|
|
|
17
|
+
#include <winrt/Microsoft.ReactNative.Composition.Experimental.h>
|
|
17
18
|
#include "CompositionRootAutomationProvider.h"
|
|
18
19
|
#include "CompositionRootView.h"
|
|
19
20
|
|
|
@@ -35,19 +36,16 @@ void CompositionHwndHost::Initialize(uint64_t hwnd) noexcept {
|
|
|
35
36
|
winrt::Microsoft::ReactNative::Composition::implementation::CompositionUIService::GetCompositionContext(
|
|
36
37
|
ReactViewHost().ReactNativeHost().InstanceSettings().Properties());
|
|
37
38
|
#if USE_WINUI3
|
|
38
|
-
if (auto liftedCompositor =
|
|
39
|
-
MicrosoftCompositionContextHelper::InnerCompositor(
|
|
39
|
+
if (auto liftedCompositor =
|
|
40
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerCompositor(
|
|
41
|
+
compositionContext)) {
|
|
40
42
|
m_compRootView = winrt::Microsoft::ReactNative::CompositionRootView(liftedCompositor);
|
|
41
|
-
m_compRootView.SetWindow(reinterpret_cast<uint64_t>(m_hwnd));
|
|
42
43
|
|
|
43
44
|
auto bridge = winrt::Microsoft::UI::Content::DesktopChildSiteBridge::Create(
|
|
44
45
|
liftedCompositor, winrt::Microsoft::UI::GetWindowIdFromWindow(m_hwnd));
|
|
45
46
|
|
|
46
47
|
auto island = m_compRootView.Island();
|
|
47
48
|
|
|
48
|
-
auto invScale = 1.0f / ScaleFactor();
|
|
49
|
-
m_compRootView.RootVisual().Scale({invScale, invScale, invScale});
|
|
50
|
-
|
|
51
49
|
bridge.Connect(island);
|
|
52
50
|
bridge.Show();
|
|
53
51
|
|
|
@@ -55,11 +53,12 @@ void CompositionHwndHost::Initialize(uint64_t hwnd) noexcept {
|
|
|
55
53
|
bridge.ResizePolicy(winrt::Microsoft::UI::Content::ContentSizePolicy::ResizeContentToParentWindow);
|
|
56
54
|
} else {
|
|
57
55
|
m_compRootView = winrt::Microsoft::ReactNative::CompositionRootView();
|
|
58
|
-
m_compRootView.
|
|
56
|
+
m_compRootView.as<winrt::Microsoft::ReactNative::Composition::Experimental::IInternalCompositionRootView>()
|
|
57
|
+
.SetWindow(reinterpret_cast<uint64_t>(m_hwnd));
|
|
59
58
|
|
|
60
59
|
#endif
|
|
61
60
|
auto compositor =
|
|
62
|
-
winrt::Microsoft::ReactNative::Composition::
|
|
61
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::SystemCompositionContextHelper::InnerCompositor(
|
|
63
62
|
compositionContext);
|
|
64
63
|
auto interop = compositor.as<ABI::Windows::UI::Composition::Desktop::ICompositorDesktopInterop>();
|
|
65
64
|
winrt::Windows::UI::Composition::Desktop::DesktopWindowTarget target{nullptr};
|
|
@@ -74,8 +73,10 @@ void CompositionHwndHost::Initialize(uint64_t hwnd) noexcept {
|
|
|
74
73
|
root.Comment(L"Root Visual");
|
|
75
74
|
target.Root(root);
|
|
76
75
|
|
|
77
|
-
m_compRootView.
|
|
78
|
-
|
|
76
|
+
m_compRootView.as<winrt::Microsoft::ReactNative::Composition::Experimental::IInternalCompositionRootView>()
|
|
77
|
+
.InternalRootVisual(
|
|
78
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::SystemCompositionContextHelper::CreateVisual(
|
|
79
|
+
target.Root()));
|
|
79
80
|
|
|
80
81
|
#if USE_WINUI3
|
|
81
82
|
}
|
|
@@ -122,7 +123,9 @@ LRESULT CompositionHwndHost::TranslateMessage(int msg, uint64_t wParam, int64_t
|
|
|
122
123
|
#if USE_WINUI3
|
|
123
124
|
if (!m_compRootView.Island()) // When using Island hosting we dont need to forward window messages
|
|
124
125
|
#endif
|
|
125
|
-
return static_cast<LRESULT>(
|
|
126
|
+
return static_cast<LRESULT>(
|
|
127
|
+
m_compRootView.as<winrt::Microsoft::ReactNative::Composition::Experimental::IInternalCompositionRootView>()
|
|
128
|
+
.SendMessage(msg, wParam, lParam));
|
|
126
129
|
}
|
|
127
130
|
return 0;
|
|
128
131
|
}
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
#ifdef USE_WINUI3
|
|
35
35
|
#include <winrt/Microsoft.UI.Content.h>
|
|
36
|
+
#include <winrt/Microsoft.UI.Input.h>
|
|
36
37
|
#endif
|
|
37
38
|
|
|
38
39
|
namespace winrt::Microsoft::ReactNative::implementation {
|
|
@@ -126,7 +127,7 @@ inline Mso::Future<void> CompositionReactViewInstance::PostInUIQueue(TAction &&a
|
|
|
126
127
|
CompositionRootView::CompositionRootView() noexcept {}
|
|
127
128
|
|
|
128
129
|
#ifdef USE_WINUI3
|
|
129
|
-
CompositionRootView::CompositionRootView(winrt::Microsoft::UI::Composition::Compositor compositor) noexcept
|
|
130
|
+
CompositionRootView::CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept
|
|
130
131
|
: m_compositor(compositor) {}
|
|
131
132
|
#endif
|
|
132
133
|
|
|
@@ -151,11 +152,17 @@ void CompositionRootView::ReactViewHost(winrt::Microsoft::ReactNative::IReactVie
|
|
|
151
152
|
}
|
|
152
153
|
}
|
|
153
154
|
|
|
154
|
-
winrt::Microsoft::
|
|
155
|
+
winrt::Microsoft::UI::Composition::Visual CompositionRootView::RootVisual() noexcept {
|
|
156
|
+
return winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerVisual(
|
|
157
|
+
m_rootVisual);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual CompositionRootView::InternalRootVisual() noexcept {
|
|
155
161
|
return m_rootVisual;
|
|
156
162
|
}
|
|
157
163
|
|
|
158
|
-
void CompositionRootView::
|
|
164
|
+
void CompositionRootView::InternalRootVisual(
|
|
165
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual const &value) noexcept {
|
|
159
166
|
if (m_rootVisual != value) {
|
|
160
167
|
assert(!m_rootVisual);
|
|
161
168
|
m_rootVisual = value;
|
|
@@ -164,19 +171,29 @@ void CompositionRootView::RootVisual(winrt::Microsoft::ReactNative::Composition:
|
|
|
164
171
|
}
|
|
165
172
|
|
|
166
173
|
void CompositionRootView::AddRenderedVisual(
|
|
167
|
-
const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
|
|
174
|
+
const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept {
|
|
168
175
|
assert(!m_hasRenderedVisual);
|
|
169
|
-
|
|
176
|
+
InternalRootVisual().InsertAt(visual, 0);
|
|
170
177
|
m_hasRenderedVisual = true;
|
|
171
178
|
}
|
|
172
179
|
|
|
173
180
|
void CompositionRootView::RemoveRenderedVisual(
|
|
174
|
-
const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
|
|
181
|
+
const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept {
|
|
175
182
|
assert(m_hasRenderedVisual);
|
|
176
|
-
|
|
183
|
+
InternalRootVisual().Remove(visual);
|
|
177
184
|
m_hasRenderedVisual = false;
|
|
178
185
|
}
|
|
179
186
|
|
|
187
|
+
bool CompositionRootView::TrySetFocus() noexcept {
|
|
188
|
+
#ifdef USE_WINUI3
|
|
189
|
+
if (m_island) {
|
|
190
|
+
auto focusController = winrt::Microsoft::UI::Input::InputFocusController::GetForIsland(m_island);
|
|
191
|
+
return focusController.TrySetFocus();
|
|
192
|
+
}
|
|
193
|
+
#endif
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
|
|
180
197
|
winrt::Windows::Foundation::Size CompositionRootView::Size() noexcept {
|
|
181
198
|
return m_size;
|
|
182
199
|
}
|
|
@@ -214,6 +231,11 @@ float CompositionRootView::ScaleFactor() noexcept {
|
|
|
214
231
|
void CompositionRootView::ScaleFactor(float value) noexcept {
|
|
215
232
|
if (m_scaleFactor != value) {
|
|
216
233
|
m_scaleFactor = value;
|
|
234
|
+
// Lifted ContentIslands apply a scale that we need to reverse
|
|
235
|
+
if (auto rootView = RootVisual()) {
|
|
236
|
+
auto invScale = 1.0f / value;
|
|
237
|
+
rootView.Scale({invScale, invScale, invScale});
|
|
238
|
+
}
|
|
217
239
|
UpdateRootVisualSize();
|
|
218
240
|
}
|
|
219
241
|
}
|
|
@@ -430,7 +452,7 @@ void CompositionRootView::ClearLoadingUI() noexcept {
|
|
|
430
452
|
if (!m_loadingVisual)
|
|
431
453
|
return;
|
|
432
454
|
|
|
433
|
-
|
|
455
|
+
InternalRootVisual().Remove(m_loadingVisual);
|
|
434
456
|
|
|
435
457
|
m_loadingVisual = nullptr;
|
|
436
458
|
m_loadingActivityVisual = nullptr;
|
|
@@ -462,7 +484,7 @@ void CompositionRootView::ShowInstanceError() noexcept {
|
|
|
462
484
|
ClearLoadingUI();
|
|
463
485
|
}
|
|
464
486
|
|
|
465
|
-
Composition::IDrawingSurfaceBrush CompositionRootView::CreateLoadingVisualBrush() noexcept {
|
|
487
|
+
Composition::Experimental::IDrawingSurfaceBrush CompositionRootView::CreateLoadingVisualBrush() noexcept {
|
|
466
488
|
auto compContext =
|
|
467
489
|
winrt::Microsoft::ReactNative::Composition::implementation::CompositionUIService::GetCompositionContext(
|
|
468
490
|
m_context.Properties().Handle());
|
|
@@ -476,7 +498,7 @@ Composition::IDrawingSurfaceBrush CompositionRootView::CreateLoadingVisualBrush(
|
|
|
476
498
|
|
|
477
499
|
POINT offset;
|
|
478
500
|
{
|
|
479
|
-
::Microsoft::ReactNative::Composition::AutoDrawDrawingSurface autoDraw(drawingSurface, &offset);
|
|
501
|
+
::Microsoft::ReactNative::Composition::AutoDrawDrawingSurface autoDraw(drawingSurface, m_scaleFactor, &offset);
|
|
480
502
|
if (auto d2dDeviceContext = autoDraw.GetRenderTarget()) {
|
|
481
503
|
d2dDeviceContext->Clear(D2D1::ColorF(D2D1::ColorF::Green));
|
|
482
504
|
|
|
@@ -543,7 +565,7 @@ void CompositionRootView::ShowInstanceLoading() noexcept {
|
|
|
543
565
|
|
|
544
566
|
UpdateLoadingVisualSize();
|
|
545
567
|
|
|
546
|
-
|
|
568
|
+
InternalRootVisual().InsertAt(m_loadingVisual, m_hasRenderedVisual ? 1 : 0);
|
|
547
569
|
}
|
|
548
570
|
|
|
549
571
|
winrt::Windows::Foundation::Size CompositionRootView::Measure(
|
|
@@ -617,7 +639,9 @@ winrt::Microsoft::UI::Content::ContentIsland CompositionRootView::Island() noexc
|
|
|
617
639
|
if (!m_island) {
|
|
618
640
|
auto rootVisual = m_compositor.CreateSpriteVisual();
|
|
619
641
|
|
|
620
|
-
|
|
642
|
+
InternalRootVisual(
|
|
643
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::CreateVisual(
|
|
644
|
+
rootVisual));
|
|
621
645
|
m_island = winrt::Microsoft::UI::Content::ContentIsland::Create(rootVisual);
|
|
622
646
|
|
|
623
647
|
m_island.AutomationProviderRequested(
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#include <FocusNavigationResult.g.h>
|
|
8
8
|
|
|
9
9
|
#include <ReactContext.h>
|
|
10
|
+
#include <winrt/Microsoft.ReactNative.Composition.Experimental.h>
|
|
10
11
|
#include <winrt/Microsoft.ReactNative.h>
|
|
11
12
|
#include "CompositionEventHandler.h"
|
|
12
13
|
#include "ReactHost/React.h"
|
|
@@ -40,11 +41,13 @@ struct FocusNavigationResult : FocusNavigationResultT<FocusNavigationResult> {
|
|
|
40
41
|
const bool m_wasFocusMoved;
|
|
41
42
|
};
|
|
42
43
|
|
|
43
|
-
struct CompositionRootView
|
|
44
|
+
struct CompositionRootView
|
|
45
|
+
: CompositionRootViewT<CompositionRootView, Composition::Experimental::IInternalCompositionRootView>,
|
|
46
|
+
::Microsoft::ReactNative::ICompositionRootView {
|
|
44
47
|
CompositionRootView() noexcept;
|
|
45
48
|
|
|
46
49
|
#ifdef USE_WINUI3
|
|
47
|
-
CompositionRootView(winrt::Microsoft::UI::Composition::Compositor compositor) noexcept;
|
|
50
|
+
CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept;
|
|
48
51
|
winrt::Microsoft::UI::Content::ContentIsland Island() noexcept;
|
|
49
52
|
#endif
|
|
50
53
|
|
|
@@ -52,9 +55,11 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
|
|
|
52
55
|
ReactNative::IReactViewHost ReactViewHost() noexcept;
|
|
53
56
|
void ReactViewHost(ReactNative::IReactViewHost const &value) noexcept;
|
|
54
57
|
|
|
58
|
+
winrt::Microsoft::UI::Composition::Visual RootVisual() noexcept;
|
|
59
|
+
|
|
55
60
|
// property RootVisual
|
|
56
|
-
winrt::Microsoft::ReactNative::Composition::IVisual
|
|
57
|
-
void
|
|
61
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual InternalRootVisual() noexcept;
|
|
62
|
+
void InternalRootVisual(winrt::Microsoft::ReactNative::Composition::Experimental::IVisual const &value) noexcept;
|
|
58
63
|
|
|
59
64
|
// property Size
|
|
60
65
|
winrt::Windows::Foundation::Size Size() noexcept;
|
|
@@ -64,8 +69,9 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
|
|
|
64
69
|
float ScaleFactor() noexcept;
|
|
65
70
|
void ScaleFactor(float value) noexcept;
|
|
66
71
|
|
|
67
|
-
void AddRenderedVisual(const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept;
|
|
68
|
-
void RemoveRenderedVisual(const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept;
|
|
72
|
+
void AddRenderedVisual(const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept;
|
|
73
|
+
void RemoveRenderedVisual(const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept;
|
|
74
|
+
bool TrySetFocus() noexcept;
|
|
69
75
|
|
|
70
76
|
winrt::Microsoft::ReactNative::Composition::Theme Theme() noexcept;
|
|
71
77
|
void Theme(const winrt::Microsoft::ReactNative::Composition::Theme &value) noexcept;
|
|
@@ -125,9 +131,9 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
|
|
|
125
131
|
winrt::Microsoft::ReactNative::IReactViewHost m_reactViewHost;
|
|
126
132
|
winrt::Microsoft::ReactNative::ReactViewOptions m_reactViewOptions;
|
|
127
133
|
std::shared_ptr<::Microsoft::ReactNative::CompositionEventHandler> m_CompositionEventHandler;
|
|
128
|
-
winrt::Microsoft::ReactNative::Composition::IVisual m_rootVisual{nullptr};
|
|
129
|
-
winrt::Microsoft::ReactNative::Composition::ISpriteVisual m_loadingVisual{nullptr};
|
|
130
|
-
winrt::Microsoft::ReactNative::Composition::IActivityVisual m_loadingActivityVisual{nullptr};
|
|
134
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual m_rootVisual{nullptr};
|
|
135
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual m_loadingVisual{nullptr};
|
|
136
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IActivityVisual m_loadingActivityVisual{nullptr};
|
|
131
137
|
winrt::Microsoft::ReactNative::Composition::Theme m_theme{nullptr};
|
|
132
138
|
winrt::Microsoft::ReactNative::ReactNotificationSubscription m_themeChangedSubscription{nullptr};
|
|
133
139
|
winrt::Microsoft::ReactNative::Composition::Theme::ThemeChanged_revoker m_themeChangedRevoker;
|
|
@@ -140,7 +146,7 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
|
|
|
140
146
|
void ShowInstanceLoading() noexcept;
|
|
141
147
|
void UpdateRootVisualSize() noexcept;
|
|
142
148
|
void UpdateLoadingVisualSize() noexcept;
|
|
143
|
-
Composition::IDrawingSurfaceBrush CreateLoadingVisualBrush() noexcept;
|
|
149
|
+
Composition::Experimental::IDrawingSurfaceBrush CreateLoadingVisualBrush() noexcept;
|
|
144
150
|
};
|
|
145
151
|
|
|
146
152
|
} // namespace winrt::Microsoft::ReactNative::implementation
|
|
@@ -29,17 +29,28 @@ struct CompositionReactViewInstance
|
|
|
29
29
|
|
|
30
30
|
CompositionRootView::CompositionRootView() noexcept {}
|
|
31
31
|
|
|
32
|
+
CompositionRootView::CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept {}
|
|
33
|
+
|
|
32
34
|
ReactNative::IReactViewHost CompositionRootView::ReactViewHost() noexcept {
|
|
33
35
|
return nullptr;
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
void CompositionRootView::ReactViewHost(winrt::Microsoft::ReactNative::IReactViewHost const &) noexcept {}
|
|
37
39
|
|
|
38
|
-
winrt::Microsoft::
|
|
40
|
+
winrt::Microsoft::UI::Composition::Visual CompositionRootView::RootVisual() noexcept {
|
|
41
|
+
return nullptr;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual CompositionRootView::InternalRootVisual() noexcept {
|
|
39
45
|
return nullptr;
|
|
40
46
|
}
|
|
41
47
|
|
|
42
|
-
void CompositionRootView::
|
|
48
|
+
void CompositionRootView::InternalRootVisual(
|
|
49
|
+
const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &) noexcept {}
|
|
50
|
+
|
|
51
|
+
winrt::Microsoft::UI::Content::ContentIsland CompositionRootView::Island() noexcept {
|
|
52
|
+
return nullptr;
|
|
53
|
+
}
|
|
43
54
|
|
|
44
55
|
winrt::Windows::Foundation::Size CompositionRootView::Size() noexcept {
|
|
45
56
|
return {};
|
|
@@ -106,11 +117,11 @@ void CompositionRootView::ShowInstanceError() noexcept {}
|
|
|
106
117
|
|
|
107
118
|
void CompositionRootView::ShowInstanceLoading() noexcept {}
|
|
108
119
|
|
|
109
|
-
Windows::Foundation::Size CompositionRootView::Measure(Windows::Foundation::Size const &) const {
|
|
120
|
+
winrt::Windows::Foundation::Size CompositionRootView::Measure(winrt::Windows::Foundation::Size const &) const {
|
|
110
121
|
return {};
|
|
111
122
|
}
|
|
112
123
|
|
|
113
|
-
Windows::Foundation::Size CompositionRootView::Arrange(Windows::Foundation::Size) const {
|
|
124
|
+
winrt::Windows::Foundation::Size CompositionRootView::Arrange(winrt::Windows::Foundation::Size) const {
|
|
114
125
|
return {};
|
|
115
126
|
}
|
|
116
127
|
|
|
@@ -10,21 +10,32 @@
|
|
|
10
10
|
|
|
11
11
|
namespace winrt::Microsoft::ReactNative::Composition::implementation {
|
|
12
12
|
|
|
13
|
-
static const ReactPropertyId<ICompositionContext> &CompositionContextPropertyId() noexcept {
|
|
14
|
-
static const ReactPropertyId<ICompositionContext> prop{
|
|
13
|
+
static const ReactPropertyId<Experimental::ICompositionContext> &CompositionContextPropertyId() noexcept {
|
|
14
|
+
static const ReactPropertyId<Experimental::ICompositionContext> prop{
|
|
15
|
+
L"ReactNative.Composition", L"CompositionContext"};
|
|
15
16
|
return prop;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
void CompositionUIService::
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
ReactPropertyBag(
|
|
19
|
+
void CompositionUIService::SetCompositor(
|
|
20
|
+
const winrt::Microsoft::ReactNative::ReactInstanceSettings &settings,
|
|
21
|
+
const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept {
|
|
22
|
+
ReactPropertyBag properties(settings.Properties());
|
|
23
|
+
properties.Set(
|
|
24
|
+
CompositionContextPropertyId(),
|
|
25
|
+
winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::CreateContext(
|
|
26
|
+
compositor));
|
|
22
27
|
// Default to using Bridgeless mode when using fabric
|
|
23
|
-
winrt::Microsoft::ReactNative::implementation::QuirkSettings::SetIsBridgeless(
|
|
24
|
-
ReactPropertyBag(properties), !!compositionContext);
|
|
28
|
+
winrt::Microsoft::ReactNative::implementation::QuirkSettings::SetIsBridgeless(properties, !!compositor);
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
winrt::Microsoft::UI::Composition::Compositor CompositionUIService::GetCompositor(
|
|
32
|
+
const IReactPropertyBag &properties) noexcept {
|
|
33
|
+
return winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerCompositor(
|
|
34
|
+
GetCompositionContext(properties));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
Experimental::ICompositionContext CompositionUIService::GetCompositionContext(
|
|
38
|
+
const IReactPropertyBag &properties) noexcept {
|
|
28
39
|
return ReactPropertyBag(properties).Get(CompositionContextPropertyId());
|
|
29
40
|
}
|
|
30
41
|
|
|
@@ -3,17 +3,19 @@
|
|
|
3
3
|
|
|
4
4
|
#pragma once
|
|
5
5
|
#include "Composition.CompositionUIService.g.h"
|
|
6
|
+
#include <winrt/Microsoft.ReactNative.Composition.Experimental.h>
|
|
6
7
|
|
|
7
8
|
namespace winrt::Microsoft::ReactNative::Composition::implementation {
|
|
8
9
|
|
|
9
10
|
struct CompositionUIService : CompositionUIServiceT<CompositionUIService> {
|
|
10
11
|
CompositionUIService() = default;
|
|
11
12
|
|
|
12
|
-
static void
|
|
13
|
-
const
|
|
14
|
-
const
|
|
13
|
+
static void SetCompositor(
|
|
14
|
+
const winrt::Microsoft::ReactNative::ReactInstanceSettings &settings,
|
|
15
|
+
const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept;
|
|
16
|
+
static winrt::Microsoft::UI::Composition::Compositor GetCompositor(const IReactPropertyBag &properties) noexcept;
|
|
15
17
|
|
|
16
|
-
static ICompositionContext GetCompositionContext(const IReactPropertyBag &properties) noexcept;
|
|
18
|
+
static Experimental::ICompositionContext GetCompositionContext(const IReactPropertyBag &properties) noexcept;
|
|
17
19
|
};
|
|
18
20
|
|
|
19
21
|
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
#include "CompositionUIService.h"
|
|
7
7
|
|
|
8
8
|
#include "Composition.CompositionUIService.g.cpp"
|
|
9
|
+
#include <winrt/Microsoft.UI.Composition.h>
|
|
9
10
|
|
|
10
11
|
namespace winrt::Microsoft::ReactNative::Composition::implementation {
|
|
11
12
|
|
|
12
|
-
void CompositionUIService::
|
|
13
|
+
void CompositionUIService::SetCompositor(
|
|
14
|
+
ReactInstanceSettings const &,
|
|
15
|
+
winrt::Microsoft::UI::Composition::Compositor const &) noexcept {}
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
winrt::Microsoft::UI::Composition::Compositor CompositionUIService::GetCompositor(const IReactPropertyBag &) noexcept {
|
|
15
18
|
return nullptr;
|
|
16
19
|
}
|
|
17
20
|
|