22#include "uia_classes.h"
24#include "wine/rbtree.h"
166 V_BOOL(
v) =
val ? VARIANT_TRUE : VARIANT_FALSE;
188 SIZE_T max_capacity, new_capacity;
191 if (
count <= *capacity)
195 if (
count > max_capacity)
198 new_capacity =
max(1, *capacity);
199 while (new_capacity <
count && new_capacity <= max_capacity / 2)
201 if (new_capacity <
count)
202 new_capacity =
count;
208 *elements = new_elements;
209 *capacity = new_capacity;
221 LONG child_id, IProxyProviderWinEventSink *
sink);
227 BOOL get_hwnd_providers,
int node_flags);
242 BOOL clientside_only);
252 void *cback_data, HUIAEVENT *huiaevent);
256 HUIANODE *clientside_nav_node_out);
270 BOOL is_root_acc, IRawElementProviderSimple **elprov);
COMPILER_DEPENDENT_UINT64 UINT64
static struct sockaddr_in sa
_ACRTIMP void *__cdecl _recalloc(void *, size_t, size_t) __WINE_ALLOC_SIZE(2
GLuint GLuint GLsizei count
GLsizei GLenum GLboolean sink
static IPrintDialogCallback callback
struct UiaEventArgs simple_args
struct uia_event::@594::@595 clientside
IWineUiaEventAdviser ** event_advisers
IWineUiaEvent IWineUiaEvent_iface
struct uia_event_map_entry * event_map_entry
BOOL event_thread_started
BOOL desktop_subtree_event
struct uia_event::@594::@596 serverside
SIZE_T event_advisers_arr_size
IWineUiaEvent * event_iface
struct list event_list_entry
BOOL ignore_clientside_hwnd_provs
BOOL ignore_com_threading
struct uia_provider_thread_map_entry * map
IWineUiaProvider * prov[PROV_TYPE_COUNT]
DWORD git_cookie[PROV_TYPE_COUNT]
struct list prov_thread_list_entry
IWineUiaNode IWineUiaNode_iface
struct list node_map_list_entry
IRawElementProviderSimple * elprov
BOOL refuse_hwnd_node_providers
IWineUiaProvider IWineUiaProvider_iface
#define CONTAINING_RECORD(address, type, field)
BOOL uia_hwnd_is_visible(HWND hwnd)
const struct uia_control_type_info * uia_control_type_info_from_id(CONTROLTYPEID control_type_id)
HRESULT uia_event_add_provider_event_adviser(IRawElementProviderAdviseEvents *advise_events, struct uia_event *event)
void uia_hwnd_map_init(struct rb_tree *hwnd_map)
HRESULT uia_cache_request_clone(struct UiaCacheRequest *dst, struct UiaCacheRequest *src)
int get_node_provider_type_at_idx(struct uia_node *node, int idx)
HRESULT uia_condition_check(HUIANODE node, struct UiaCondition *condition)
HRESULT create_serverside_uia_event(struct uia_event **out_event, LONG process_id, LONG event_cookie)
static struct uia_provider * impl_from_IWineUiaProvider(IWineUiaProvider *iface)
HRESULT register_interface_in_git(IUnknown *iface, REFIID riid, DWORD *ret_cookie)
HRESULT create_msaa_provider(IAccessible *acc, LONG child_id, HWND hwnd, BOOL root_acc_known, BOOL is_root_acc, IRawElementProviderSimple **elprov)
const struct uia_event_info * uia_event_info_from_id(EVENTID event_id)
HRESULT get_interface_in_git(REFIID riid, DWORD git_cookie, IUnknown **ret_iface)
static void get_variant_for_node(HUIANODE node, VARIANT *v)
@ NODE_FLAG_IGNORE_CLIENTSIDE_HWND_PROVS
@ NODE_FLAG_IGNORE_COM_THREADING
void uia_stop_provider_thread(void)
BOOL uia_is_top_level_hwnd(HWND hwnd)
BOOL uia_hwnd_map_check_hwnd(struct rb_tree *hwnd_map, HWND hwnd)
HRESULT UiaWineEventCallback(struct uia_event *, struct uia_event_args *, SAFEARRAY *, BSTR)
HRESULT uia_add_clientside_event(HUIANODE huianode, EVENTID event_id, enum TreeScope scope, PROPERTYID *prop_ids, int prop_ids_count, struct UiaCacheRequest *cache_req, SAFEARRAY *rt_id, UiaWineEventCallback *cback, void *cback_data, HUIAEVENT *huiaevent)
HRESULT create_uia_iface(IUnknown **iface, BOOL is_cui8)
HRESULT uia_hwnd_map_add_hwnd(struct rb_tree *hwnd_map, HWND hwnd)
HRESULT attach_event_to_uia_node(HUIANODE node, struct uia_event *event)
LRESULT uia_lresult_from_node(HUIANODE huianode)
HRESULT respond_to_win_event_on_node_provider(IWineUiaNode *node, int idx, DWORD win_event, HWND hwnd, LONG obj_id, LONG child_id, IProxyProviderWinEventSink *sink)
HRESULT get_safearray_bounds(SAFEARRAY *sa, LONG *lbound, LONG *elems)
HRESULT uia_event_add_win_event_hwnd(struct uia_event *event, HWND hwnd)
HRESULT clone_uia_node(HUIANODE in_node, HUIANODE *out_node)
void uia_hwnd_map_destroy(struct rb_tree *hwnd_map)
HRESULT write_runtime_id_base(SAFEARRAY *sa, HWND hwnd)
HRESULT create_uia_node_from_hwnd(HWND hwnd, HUIANODE *out_node, int node_flags)
void uia_provider_thread_remove_node(HUIANODE node)
HRESULT uia_event_check_node_within_event_scope(struct uia_event *event, HUIANODE node, SAFEARRAY *rt_id, HUIANODE *clientside_nav_node_out)
HRESULT uia_com_win_event_callback(DWORD event_id, HWND hwnd, LONG obj_id, LONG child_id, DWORD thread_id, DWORD event_time)
HRESULT navigate_uia_node(struct uia_node *node, int nav_dir, HUIANODE *out_node)
void uia_hwnd_map_remove_hwnd(struct rb_tree *hwnd_map, HWND hwnd)
const struct uia_pattern_info * uia_pattern_info_from_id(PATTERNID pattern_id)
BOOL uia_clientside_event_start_event_thread(struct uia_event *event)
static struct uia_node * impl_from_IWineUiaNode(IWineUiaNode *iface)
HRESULT uia_node_from_lresult(LRESULT lr, HUIANODE *huianode, int node_flags)
HRESULT create_msaa_provider_from_hwnd(HWND hwnd, int in_child_id, IRawElementProviderSimple **ret_elprov)
static void variant_init_bool(VARIANT *v, BOOL val)
HRESULT unregister_interface_in_git(DWORD git_cookie)
HRESULT UiaWineEventForEachCallback(struct uia_event *, void *)
HRESULT get_safearray_dim_bounds(SAFEARRAY *sa, UINT dim, LONG *lbound, LONG *elems)
HRESULT uia_event_advise_node(struct uia_event *event, HUIANODE node)
HRESULT create_node_from_node_provider(IWineUiaNode *node, int idx, LONG flags, VARIANT *ret_val)
const struct uia_prop_info * uia_prop_info_from_id(PROPERTYID prop_id)
void uia_node_lresult_release(LRESULT lr)
HRESULT create_uia_node_from_elprov(IRawElementProviderSimple *elprov, HUIANODE *out_node, BOOL get_hwnd_providers, int node_flags)
void uia_cache_request_destroy(struct UiaCacheRequest *cache_req)
HRESULT uia_event_for_each(int event_id, UiaWineEventForEachCallback *callback, void *user_data, BOOL clientside_only)
HRESULT create_base_hwnd_provider(HWND hwnd, IRawElementProviderSimple **elprov)
HRESULT uia_event_invoke(HUIANODE node, HUIANODE nav_start_node, struct uia_event_args *args, struct uia_event *event)
@ PROV_METHOD_FLAG_RETURN_NODE_LRES
static void variant_init_i4(VARIANT *v, int val)
int uia_compare_safearrays(SAFEARRAY *sa1, SAFEARRAY *sa2, int prop_type)
static BOOL uia_array_reserve(void **elements, SIZE_T *capacity, SIZE_T count, SIZE_T size)
HRESULT get_focus_from_node_provider(IWineUiaNode *node, int idx, LONG flags, VARIANT *ret_val)
BOOL uia_condition_matched(HRESULT hr)
HRESULT uia_event_add_serverside_event_adviser(IWineUiaEvent *serverside_event, struct uia_event *event)