@@ -175,6 +175,15 @@ void UpdateUiaProperty(winrt::IInspectable provider, PROPERTYID propId, int oldV
175
175
UiaRaiseAutomationPropertyChangedEvent (spProviderSimple.get (), propId, CComVariant (oldValue), CComVariant (newValue));
176
176
}
177
177
178
+ void UpdateUiaProperty (winrt::IInspectable provider, PROPERTYID propId, long oldValue, long newValue) noexcept {
179
+ auto spProviderSimple = provider.try_as <IRawElementProviderSimple>();
180
+
181
+ if (spProviderSimple == nullptr || oldValue == newValue || !WasUiaPropertyAdvised (spProviderSimple, propId))
182
+ return ;
183
+
184
+ UiaRaiseAutomationPropertyChangedEvent (spProviderSimple.get (), propId, CComVariant (oldValue), CComVariant (newValue));
185
+ }
186
+
178
187
void UpdateUiaProperty (
179
188
winrt::IInspectable provider,
180
189
PROPERTYID propId,
@@ -199,6 +208,29 @@ void UpdateUiaProperty(
199
208
UpdateUiaProperty (provider, propId, oldData, newData);
200
209
}
201
210
211
+ void UpdateUiaPropertiesForAnnotation (
212
+ winrt::IInspectable provider,
213
+ const std::optional<facebook::react::AccessibilityAnnotation> &oldAnnotation,
214
+ const std::optional<facebook::react::AccessibilityAnnotation> &newAnnotation) noexcept {
215
+ // if no value fall back to a default value.
216
+ const auto &old_annotation = oldAnnotation.value_or (facebook::react::AccessibilityAnnotation ());
217
+ const auto &new_annotation = newAnnotation.value_or (facebook::react::AccessibilityAnnotation ());
218
+
219
+ // Update all annotation properties
220
+ UpdateUiaProperty (
221
+ provider,
222
+ UIA_AnnotationAnnotationTypeIdPropertyId,
223
+ GetAnnotationTypeId (old_annotation.typeID ),
224
+ GetAnnotationTypeId (new_annotation.typeID ));
225
+
226
+ UpdateUiaProperty (
227
+ provider, UIA_AnnotationAnnotationTypeNamePropertyId, old_annotation.typeName , new_annotation.typeName );
228
+
229
+ UpdateUiaProperty (provider, UIA_AnnotationAuthorPropertyId, old_annotation.author , new_annotation.author );
230
+
231
+ UpdateUiaProperty (provider, UIA_AnnotationDateTimePropertyId, old_annotation.dateTime , new_annotation.dateTime );
232
+ }
233
+
202
234
long GetLiveSetting (const std::string &liveRegion) noexcept {
203
235
if (liveRegion == " polite" ) {
204
236
return LiveSetting::Polite;
0 commit comments