Author: akhaldi
Date: Mon Jul 20 21:52:13 2015
New Revision: 68483
URL:
http://svn.reactos.org/svn/reactos?rev=68483&view=rev
Log:
[OLEACC] Sync with Wine Staging 1.7.47. CORE-9924
Added:
trunk/reactos/dll/win32/oleacc/guid.c (with props)
trunk/reactos/dll/win32/oleacc/oleacc_classes_r.rgs
- copied, changed from r68415, trunk/reactos/dll/win32/oleacc/oleacc_classes.rgs
trunk/reactos/dll/win32/oleacc/oleacc_classes_t.rgs (with props)
Removed:
trunk/reactos/dll/win32/oleacc/oleacc_classes.rgs
Modified:
trunk/reactos/dll/win32/oleacc/CMakeLists.txt
trunk/reactos/dll/win32/oleacc/client.c
trunk/reactos/dll/win32/oleacc/main.c
trunk/reactos/dll/win32/oleacc/oleacc.rc
trunk/reactos/dll/win32/oleacc/oleacc.spec
trunk/reactos/dll/win32/oleacc/oleacc_classes.idl
trunk/reactos/dll/win32/oleacc/oleacc_private.h
trunk/reactos/dll/win32/oleacc/propservice.c
trunk/reactos/dll/win32/oleacc/window.c
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/oleacc/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/CMakeList…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/CMakeLists.txt [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -1,5 +1,10 @@
-add_definitions(-D__WINESRC__)
+add_definitions(
+ -D__WINESRC__
+ -DENTRY_PREFIX=OLEACC_
+ -DPROXY_DELEGATION
+ -DWINE_REGISTER_DLL)
+
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
spec2def(oleacc.dll oleacc.spec ADD_IMPORTLIB)
@@ -8,25 +13,31 @@
main.c
propservice.c
window.c
- oleacc_private.h)
+ oleacc_private.h
+ ${CMAKE_CURRENT_BINARY_DIR}/proxy.dlldata.c)
+add_idl_headers(oleacc_idlheader oleacc_classes.idl)
add_typelib(oleacc_classes.idl)
+add_rpcproxy_files(oleacc_classes.idl)
list(APPEND oleacc_rc_deps
- ${CMAKE_CURRENT_SOURCE_DIR}/oleacc_classes.rgs
+ ${CMAKE_CURRENT_SOURCE_DIR}/oleacc_classes_r.rgs
+ ${CMAKE_CURRENT_SOURCE_DIR}/oleacc_classes_t.rgs
${CMAKE_CURRENT_BINARY_DIR}/oleacc_classes.tlb)
set_source_files_properties(oleacc.rc PROPERTIES OBJECT_DEPENDS
"${oleacc_rc_deps}")
add_library(oleacc SHARED
${SOURCE}
+ guid.c
oleacc.rc
+ ${CMAKE_CURRENT_BINARY_DIR}/oleacc_classes_p.c
${CMAKE_CURRENT_BINARY_DIR}/oleacc_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/oleacc.def)
-add_dependencies(oleacc stdole2)
+add_dependencies(oleacc oleacc_idlheader stdole2)
set_module_type(oleacc win32dll)
-target_link_libraries(oleacc uuid wine)
-add_importlibs(oleacc oleaut32 ole32 user32 msvcrt kernel32 ntdll)
+target_link_libraries(oleacc uuid wine ${PSEH_LIB})
+add_importlibs(oleacc oleaut32 ole32 user32 rpcrt4 msvcrt kernel32 ntdll)
add_pch(oleacc oleacc_private.h SOURCE)
add_cd_file(TARGET oleacc DESTINATION reactos/system32 FOR all)
Modified: trunk/reactos/dll/win32/oleacc/client.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/client.c?…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/client.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/client.c [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -21,10 +21,12 @@
typedef struct {
IAccessible IAccessible_iface;
IOleWindow IOleWindow_iface;
+ IEnumVARIANT IEnumVARIANT_iface;
LONG ref;
HWND hwnd;
+ HWND enum_pos;
} Client;
static inline Client* impl_from_Client(IAccessible *iface)
@@ -44,6 +46,8 @@
*ppv = iface;
}else if(IsEqualIID(riid, &IID_IOleWindow)) {
*ppv = &This->IOleWindow_iface;
+ }else if(IsEqualIID(riid, &IID_IEnumVARIANT)) {
+ *ppv = &This->IEnumVARIANT_iface;
}else {
WARN("no interface: %s\n", debugstr_guid(riid));
*ppv = NULL;
@@ -137,8 +141,11 @@
VARIANT varChildID, IDispatch **ppdispChild)
{
Client *This = impl_from_Client(iface);
- FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varChildID),
ppdispChild);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varChildID),
ppdispChild);
+
+ *ppdispChild = NULL;
+ return E_INVALIDARG;
}
static HRESULT WINAPI Client_get_accName(IAccessible *iface, VARIANT varID, BSTR
*pszName)
@@ -486,6 +493,128 @@
Client_OleWindow_ContextSensitiveHelp
};
+static inline Client* impl_from_Client_EnumVARIANT(IEnumVARIANT *iface)
+{
+ return CONTAINING_RECORD(iface, Client, IEnumVARIANT_iface);
+}
+
+static HRESULT WINAPI Client_EnumVARIANT_QueryInterface(IEnumVARIANT *iface, REFIID riid,
void **ppv)
+{
+ Client *This = impl_from_Client_EnumVARIANT(iface);
+ return IAccessible_QueryInterface(&This->IAccessible_iface, riid, ppv);
+}
+
+static ULONG WINAPI Client_EnumVARIANT_AddRef(IEnumVARIANT *iface)
+{
+ Client *This = impl_from_Client_EnumVARIANT(iface);
+ return IAccessible_AddRef(&This->IAccessible_iface);
+}
+
+static ULONG WINAPI Client_EnumVARIANT_Release(IEnumVARIANT *iface)
+{
+ Client *This = impl_from_Client_EnumVARIANT(iface);
+ return IAccessible_Release(&This->IAccessible_iface);
+}
+
+static HRESULT WINAPI Client_EnumVARIANT_Next(IEnumVARIANT *iface,
+ ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched)
+{
+ Client *This = impl_from_Client_EnumVARIANT(iface);
+ HWND cur = This->enum_pos, next;
+ ULONG fetched = 0;
+ HRESULT hr;
+
+ TRACE("(%p)->(%u %p %p)\n", This, celt, rgVar, pCeltFetched);
+
+ if(!celt) {
+ if(pCeltFetched)
+ *pCeltFetched = 0;
+ return S_OK;
+ }
+
+ if(!This->enum_pos)
+ next = GetWindow(This->hwnd, GW_CHILD);
+ else
+ next = GetWindow(This->enum_pos, GW_HWNDNEXT);
+
+ while(next) {
+ cur = next;
+
+ V_VT(rgVar+fetched) = VT_DISPATCH;
+ hr = AccessibleObjectFromWindow(cur, OBJID_WINDOW,
+ &IID_IDispatch, (void**)&V_DISPATCH(rgVar+fetched));
+ if(FAILED(hr)) {
+ V_VT(rgVar+fetched) = VT_EMPTY;
+ while(fetched > 0) {
+ VariantClear(rgVar+fetched-1);
+ fetched--;
+ }
+ if(pCeltFetched)
+ *pCeltFetched = 0;
+ return hr;
+ }
+ fetched++;
+ if(fetched == celt)
+ break;
+
+ next = GetWindow(cur, GW_HWNDNEXT);
+ }
+
+ This->enum_pos = cur;
+ if(pCeltFetched)
+ *pCeltFetched = fetched;
+ return celt == fetched ? S_OK : S_FALSE;
+}
+
+static HRESULT WINAPI Client_EnumVARIANT_Skip(IEnumVARIANT *iface, ULONG celt)
+{
+ Client *This = impl_from_Client_EnumVARIANT(iface);
+ HWND next;
+
+ TRACE("(%p)->(%u)\n", This, celt);
+
+ while(celt) {
+ if(!This->enum_pos)
+ next = GetWindow(This->hwnd, GW_CHILD);
+ else
+ next = GetWindow(This->enum_pos, GW_HWNDNEXT);
+ if(!next)
+ return S_FALSE;
+
+ This->enum_pos = next;
+ celt--;
+ }
+
+ return S_OK;
+}
+
+static HRESULT WINAPI Client_EnumVARIANT_Reset(IEnumVARIANT *iface)
+{
+ Client *This = impl_from_Client_EnumVARIANT(iface);
+
+ TRACE("(%p)\n", This);
+
+ This->enum_pos = 0;
+ return S_OK;
+}
+
+static HRESULT WINAPI Client_EnumVARIANT_Clone(IEnumVARIANT *iface, IEnumVARIANT
**ppEnum)
+{
+ Client *This = impl_from_Client_EnumVARIANT(iface);
+ FIXME("(%p)->(%p)\n", This, ppEnum);
+ return E_NOTIMPL;
+}
+
+static const IEnumVARIANTVtbl ClientEnumVARIANTVtbl = {
+ Client_EnumVARIANT_QueryInterface,
+ Client_EnumVARIANT_AddRef,
+ Client_EnumVARIANT_Release,
+ Client_EnumVARIANT_Next,
+ Client_EnumVARIANT_Skip,
+ Client_EnumVARIANT_Reset,
+ Client_EnumVARIANT_Clone
+};
+
HRESULT create_client_object(HWND hwnd, const IID *iid, void **obj)
{
Client *client;
@@ -500,8 +629,10 @@
client->IAccessible_iface.lpVtbl = &ClientVtbl;
client->IOleWindow_iface.lpVtbl = &ClientOleWindowVtbl;
+ client->IEnumVARIANT_iface.lpVtbl = &ClientEnumVARIANTVtbl;
client->ref = 1;
client->hwnd = hwnd;
+ client->enum_pos = 0;
hres = IAccessible_QueryInterface(&client->IAccessible_iface, iid, obj);
IAccessible_Release(&client->IAccessible_iface);
Added: trunk/reactos/dll/win32/oleacc/guid.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/guid.c?re…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/guid.c (added)
+++ trunk/reactos/dll/win32/oleacc/guid.c [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -0,0 +1,15 @@
+/* DO NOT USE THE PRECOMPILED HEADER FOR THIS FILE! */
+
+#include <stdarg.h>
+
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+#define COM_NO_WINDOWS_H
+
+#include <windef.h>
+#include <winbase.h>
+#include <objbase.h>
+#include <initguid.h>
+#include <oleacc_classes.h>
+
+/* NO CODE HERE, THIS IS JUST REQUIRED FOR THE GUID DEFINITIONS */
Propchange: trunk/reactos/dll/win32/oleacc/guid.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/oleacc/main.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/main.c?re…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/main.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/main.c [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -39,6 +39,11 @@
static const WCHAR richedit20wW[] =
{'R','i','c','h','E','d','i','t','2','0','W',0};
typedef HRESULT (WINAPI *accessible_create)(HWND, const IID*, void**);
+
+extern HRESULT WINAPI OLEACC_DllGetClassObject(REFCLSID, REFIID, void**)
DECLSPEC_HIDDEN;
+extern BOOL WINAPI OLEACC_DllMain(HINSTANCE, DWORD, void*) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI OLEACC_DllRegisterServer(void) DECLSPEC_HIDDEN;
+extern HRESULT WINAPI OLEACC_DllUnregisterServer(void) DECLSPEC_HIDDEN;
static struct {
const WCHAR *name;
@@ -397,25 +402,45 @@
DisableThreadLibraryCalls(hinstDLL);
break;
}
- return TRUE;
+
+ return OLEACC_DllMain(hinstDLL, fdwReason, lpvReserved);
}
HRESULT WINAPI DllRegisterServer(void)
{
- TRACE("()\n");
- return __wine_register_resources(oleacc_handle);
+ return OLEACC_DllRegisterServer();
}
HRESULT WINAPI DllUnregisterServer(void)
{
- TRACE("()\n");
- return __wine_unregister_resources(oleacc_handle);
+ return OLEACC_DllUnregisterServer();
+}
+
+HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, void **ppv)
+{
+ if(IsEqualGUID(&CLSID_CAccPropServices, rclsid)) {
+ TRACE("(CLSID_CAccPropServices %s %p)\n", debugstr_guid(iid), ppv);
+ return get_accpropservices_factory(iid, ppv);
+ }
+
+ if(IsEqualGUID(&CLSID_PSFactoryBuffer, rclsid)) {
+ TRACE("(CLSID_PSFactoryBuffer %s %p)\n", debugstr_guid(iid), ppv);
+ return OLEACC_DllGetClassObject(rclsid, iid, ppv);
+ }
+
+ FIXME("%s %s %p: stub\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
+ return E_NOTIMPL;
}
void WINAPI GetOleaccVersionInfo(DWORD* pVersion, DWORD* pBuild)
{
+#ifdef __REACTOS__
*pVersion = MAKELONG(2,4); /* Windows XP version of oleacc: 4.2.5406.0 */
*pBuild = MAKELONG(0,5406);
+#else
+ *pVersion = MAKELONG(0,7); /* Windows 7 version of oleacc: 7.0.0.0 */
+ *pBuild = MAKELONG(0,0);
+#endif
}
HANDLE WINAPI GetProcessHandleFromHwnd(HWND hwnd)
@@ -559,3 +584,50 @@
return LoadStringA(oleacc_handle, state_id, tmp, sizeof(tmp));
}
}
+
+HRESULT WINAPI AccessibleChildren(IAccessible *container,
+ LONG start, LONG count, VARIANT *children, LONG *children_cnt)
+{
+ IEnumVARIANT *ev;
+ LONG i, child_no;
+ HRESULT hr;
+
+ TRACE("%p %d %d %p %p\n", container, start, count, children,
children_cnt);
+
+ if(!container || !children || !children_cnt)
+ return E_INVALIDARG;
+
+ for(i=0; i<count; i++)
+ VariantInit(children+i);
+
+ hr = IAccessible_QueryInterface(container, &IID_IEnumVARIANT, (void**)&ev);
+ if(SUCCEEDED(hr)) {
+ hr = IEnumVARIANT_Reset(ev);
+ if(SUCCEEDED(hr))
+ hr = IEnumVARIANT_Skip(ev, start);
+ if(SUCCEEDED(hr))
+ hr = IEnumVARIANT_Next(ev, count, children, (ULONG*)children_cnt);
+ IEnumVARIANT_Release(ev);
+ return hr;
+ }
+
+ hr = IAccessible_get_accChildCount(container, &child_no);
+ if(FAILED(hr))
+ return hr;
+
+ for(i=0; i<count && start+i+1<=child_no; i++) {
+ IDispatch *disp;
+
+ V_VT(children+i) = VT_I4;
+ V_I4(children+i) = start+i+1;
+
+ hr = IAccessible_get_accChild(container, children[i], &disp);
+ if(SUCCEEDED(hr) && disp) {
+ V_VT(children+i) = VT_DISPATCH;
+ V_DISPATCH(children+i) = disp;
+ }
+ }
+
+ *children_cnt = i;
+ return i==count ? S_OK : S_FALSE;
+}
Modified: trunk/reactos/dll/win32/oleacc/oleacc.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/oleacc.rc…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/oleacc.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/oleacc.rc [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -24,7 +24,8 @@
#include "resource.h"
1 TYPELIB "oleacc_classes.tlb"
-1 WINE_REGISTRY "oleacc_classes.rgs"
+1 WINE_REGISTRY "oleacc_classes_r.rgs"
+2 WINE_REGISTRY "oleacc_classes_t.rgs"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
Modified: trunk/reactos/dll/win32/oleacc/oleacc.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/oleacc.sp…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/oleacc.spec [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/oleacc.spec [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -1,4 +1,4 @@
-@ stub AccessibleChildren
+@ stdcall AccessibleChildren(ptr long long ptr ptr)
@ stub AccessibleObjectFromEvent
@ stdcall AccessibleObjectFromPoint(int64 ptr ptr)
@ stdcall AccessibleObjectFromWindow(ptr long ptr ptr)
Modified: trunk/reactos/dll/win32/oleacc/oleacc_classes.idl
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/oleacc_cl…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/oleacc_classes.idl [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/oleacc_classes.idl [iso-8859-1] Mon Jul 20 21:52:13
2015
@@ -17,5 +17,13 @@
*/
#pragma makedep regtypelib
+#pragma makedep proxy
+#pragma makedep register
#include "oleacc.idl"
+
+[
+ threading(both),
+ uuid(03022430-abc4-11d0-bde2-00aa001a1953) /* IAccessibleHandler */
+]
+coclass PSFactoryBuffer { interface IFactoryBuffer; }
Removed: trunk/reactos/dll/win32/oleacc/oleacc_classes.rgs
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/oleacc_cl…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/oleacc_classes.rgs [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/oleacc_classes.rgs (removed)
@@ -1,20 +0,0 @@
-HKCR
-{
- NoRemove Typelib
- {
- NoRemove '{1EA4DBF0-3C3B-11CF-810C-00AA00389B71}'
- {
- '1.1' = s 'Accessibility'
- {
- '0' { win32 = s '%MODULE%' }
- FLAGS = s '4'
- }
- }
- }
- NoRemove Interface
- {
- }
- NoRemove CLSID
- {
- }
-}
Copied: trunk/reactos/dll/win32/oleacc/oleacc_classes_r.rgs (from r68415,
trunk/reactos/dll/win32/oleacc/oleacc_classes.rgs)
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/oleacc_cl…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/oleacc_classes.rgs [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/oleacc_classes_r.rgs [iso-8859-1] Mon Jul 20 21:52:13
2015
@@ -1,20 +1,38 @@
HKCR
{
- NoRemove Typelib
- {
- NoRemove '{1EA4DBF0-3C3B-11CF-810C-00AA00389B71}'
- {
- '1.1' = s 'Accessibility'
- {
- '0' { win32 = s '%MODULE%' }
- FLAGS = s '4'
- }
- }
- }
NoRemove Interface
{
+ '{618736E0-3C3D-11CF-810C-00AA00389B71}' = s 'IAccessible'
+ {
+ NumMethods = s 28
+ ProxyStubClsid32 = s '{03022430-ABC4-11D0-BDE2-00AA001A1953}'
+ }
+ '{03022430-ABC4-11D0-BDE2-00AA001A1953}' = s
'IAccessibleHandler'
+ {
+ NumMethods = s 4
+ ProxyStubClsid32 = s '{03022430-ABC4-11D0-BDE2-00AA001A1953}'
+ }
+ '{7852B78D-1CFD-41C1-A615-9C0C85960B5F}' = s 'IAccIdentity'
+ {
+ NumMethods = s 4
+ ProxyStubClsid32 = s '{03022430-ABC4-11D0-BDE2-00AA001A1953}'
+ }
+ '{76C0DBBB-15E0-4E7B-B61B-20EEEA2001E0}' = s 'IAccPropServer'
+ {
+ NumMethods = s 4
+ ProxyStubClsid32 = s '{03022430-ABC4-11D0-BDE2-00AA001A1953}'
+ }
+ '{6E26E776-04F0-495D-80E4-3330352E3169}' = s 'IAccPropServices'
+ {
+ NumMethods = s 18
+ ProxyStubClsid32 = s '{03022430-ABC4-11D0-BDE2-00AA001A1953}'
+ }
}
NoRemove CLSID
{
+ '{03022430-ABC4-11D0-BDE2-00AA001A1953}' = s 'PSFactoryBuffer'
+ {
+ InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both'
}
+ }
}
}
Added: trunk/reactos/dll/win32/oleacc/oleacc_classes_t.rgs
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/oleacc_cl…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/oleacc_classes_t.rgs (added)
+++ trunk/reactos/dll/win32/oleacc/oleacc_classes_t.rgs [iso-8859-1] Mon Jul 20 21:52:13
2015
@@ -0,0 +1,26 @@
+HKCR
+{
+ NoRemove Typelib
+ {
+ NoRemove '{1EA4DBF0-3C3B-11CF-810C-00AA00389B71}'
+ {
+ '1.1' = s 'Accessibility'
+ {
+ '0' { win32 = s '%MODULE%' }
+ FLAGS = s '4'
+ }
+ }
+ }
+ NoRemove Interface
+ {
+ }
+ NoRemove CLSID
+ {
+ '{B5F8350B-0548-48B1-A6EE-88BD00B4A5E7}' = s 'CAccPropServices'
+ {
+ InprocServer32 = s '%MODULE%' { val ThreadingModel = s
'Apartment' }
+ TypeLib = s '{1EA4DBF0-3C3B-11CF-810C-00AA00389B71}'
+ Version = s '1.1'
+ }
+ }
+}
Propchange: trunk/reactos/dll/win32/oleacc/oleacc_classes_t.rgs
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/oleacc/oleacc_private.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/oleacc_pr…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/oleacc_private.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/oleacc_private.h [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -28,13 +28,14 @@
#include <windef.h>
#include <winbase.h>
#include <ole2.h>
-#include <oleacc.h>
+#include <oleacc_classes.h>
#include <wine/debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(oleacc);
HRESULT create_client_object(HWND, const IID*, void**) DECLSPEC_HIDDEN;
HRESULT create_window_object(HWND, const IID*, void**) DECLSPEC_HIDDEN;
+HRESULT get_accpropservices_factory(REFIID, void**) DECLSPEC_HIDDEN;
int convert_child_id(VARIANT *v) DECLSPEC_HIDDEN;
Modified: trunk/reactos/dll/win32/oleacc/propservice.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/propservi…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/propservice.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/propservice.c [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -236,13 +236,7 @@
static IClassFactory CAccPropServicesFactory = { &CAccPropServicesFactoryVtbl };
-HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, void **ppv)
-{
- if(IsEqualGUID(&CLSID_CAccPropServices, rclsid)) {
- TRACE("(CLSID_CAccPropServices %s %p)\n", debugstr_guid(iid), ppv);
- return IClassFactory_QueryInterface(&CAccPropServicesFactory, iid, ppv);
- }
-
- FIXME("%s %s %p: stub\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
- return E_NOTIMPL;
-}
+HRESULT get_accpropservices_factory(REFIID riid, void **ppv)
+{
+ return IClassFactory_QueryInterface(&CAccPropServicesFactory, riid, ppv);
+}
Modified: trunk/reactos/dll/win32/oleacc/window.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleacc/window.c?…
==============================================================================
--- trunk/reactos/dll/win32/oleacc/window.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/oleacc/window.c [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -21,6 +21,7 @@
typedef struct {
IAccessible IAccessible_iface;
IOleWindow IOleWindow_iface;
+ IEnumVARIANT IEnumVARIANT_iface;
LONG ref;
} Window;
@@ -42,6 +43,8 @@
*ppv = iface;
}else if(IsEqualIID(riid, &IID_IOleWindow)) {
*ppv = &This->IOleWindow_iface;
+ }else if(IsEqualIID(riid, &IID_IEnumVARIANT)) {
+ *ppv = &This->IEnumVARIANT_iface;
}else {
WARN("no interface: %s\n", debugstr_guid(riid));
*ppv = NULL;
@@ -339,6 +342,68 @@
Window_OleWindow_ContextSensitiveHelp
};
+static inline Window* impl_from_Window_EnumVARIANT(IEnumVARIANT *iface)
+{
+ return CONTAINING_RECORD(iface, Window, IEnumVARIANT_iface);
+}
+
+static HRESULT WINAPI Window_EnumVARIANT_QueryInterface(IEnumVARIANT *iface, REFIID riid,
void **ppv)
+{
+ Window *This = impl_from_Window_EnumVARIANT(iface);
+ return IAccessible_QueryInterface(&This->IAccessible_iface, riid, ppv);
+}
+
+static ULONG WINAPI Window_EnumVARIANT_AddRef(IEnumVARIANT *iface)
+{
+ Window *This = impl_from_Window_EnumVARIANT(iface);
+ return IAccessible_AddRef(&This->IAccessible_iface);
+}
+
+static ULONG WINAPI Window_EnumVARIANT_Release(IEnumVARIANT *iface)
+{
+ Window *This = impl_from_Window_EnumVARIANT(iface);
+ return IAccessible_Release(&This->IAccessible_iface);
+}
+
+static HRESULT WINAPI Window_EnumVARIANT_Next(IEnumVARIANT *iface,
+ ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched)
+{
+ Window *This = impl_from_Window_EnumVARIANT(iface);
+ FIXME("(%p)->(%u %p %p)\n", This, celt, rgVar, pCeltFetched);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_EnumVARIANT_Skip(IEnumVARIANT *iface, ULONG celt)
+{
+ Window *This = impl_from_Window_EnumVARIANT(iface);
+ FIXME("(%p)->(%u)\n", This, celt);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_EnumVARIANT_Reset(IEnumVARIANT *iface)
+{
+ Window *This = impl_from_Window_EnumVARIANT(iface);
+ FIXME("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_EnumVARIANT_Clone(IEnumVARIANT *iface, IEnumVARIANT
**ppEnum)
+{
+ Window *This = impl_from_Window_EnumVARIANT(iface);
+ FIXME("(%p)->(%p)\n", This, ppEnum);
+ return E_NOTIMPL;
+}
+
+static const IEnumVARIANTVtbl WindowEnumVARIANTVtbl = {
+ Window_EnumVARIANT_QueryInterface,
+ Window_EnumVARIANT_AddRef,
+ Window_EnumVARIANT_Release,
+ Window_EnumVARIANT_Next,
+ Window_EnumVARIANT_Skip,
+ Window_EnumVARIANT_Reset,
+ Window_EnumVARIANT_Clone
+};
+
HRESULT create_window_object(HWND hwnd, const IID *iid, void **obj)
{
Window *window;
@@ -353,6 +418,7 @@
window->IAccessible_iface.lpVtbl = &WindowVtbl;
window->IOleWindow_iface.lpVtbl = &WindowOleWindowVtbl;
+ window->IEnumVARIANT_iface.lpVtbl = &WindowEnumVARIANTVtbl;
window->ref = 1;
hres = IAccessible_QueryInterface(&window->IAccessible_iface, iid, obj);
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Mon Jul 20 21:52:13 2015
@@ -146,7 +146,7 @@
reactos/dll/win32/odbc32 # Synced to WineStaging-1.7.37. Depends on port of
Linux ODBC.
reactos/dll/win32/odbccp32 # Synced to WineStaging-1.7.47
reactos/dll/win32/ole32 # Synced to WineStaging-1.7.47
-reactos/dll/win32/oleacc # Synced to WineStaging-1.7.37
+reactos/dll/win32/oleacc # Synced to WineStaging-1.7.47
reactos/dll/win32/oleaut32 # Synced to WineStaging-1.7.37
reactos/dll/win32/olecli32 # Synced to WineStaging-1.7.37
reactos/dll/win32/oledlg # Synced to WineStaging-1.7.37