* Sync to Wine 1.3.37.

svn path=/trunk/; revision=55250
This commit is contained in:
Amine Khaldi 2012-01-27 17:31:52 +00:00
parent 617f816f13
commit 839270d4f0
17 changed files with 282 additions and 152 deletions

View file

@ -20,7 +20,6 @@ list(APPEND SOURCE
langbarmgr.c
msctf.c
range.c
regsvr.c
threadmgr.c
version.rc
${CMAKE_CURRENT_BINARY_DIR}/msctf_stubs.c

View file

@ -41,10 +41,15 @@
WINE_DEFAULT_DEBUG_CHANNEL(msctf);
typedef struct tagCategoryMgr {
const ITfCategoryMgrVtbl *CategoryMgrVtbl;
ITfCategoryMgr ITfCategoryMgr_iface;
LONG refCount;
} CategoryMgr;
static inline CategoryMgr *impl_from_ITfCategoryMgr(ITfCategoryMgr *iface)
{
return CONTAINING_RECORD(iface, CategoryMgr, ITfCategoryMgr_iface);
}
static void CategoryMgr_Destructor(CategoryMgr *This)
{
TRACE("destroying %p\n", This);
@ -53,7 +58,7 @@ static void CategoryMgr_Destructor(CategoryMgr *This)
static HRESULT WINAPI CategoryMgr_QueryInterface(ITfCategoryMgr *iface, REFIID iid, LPVOID *ppvOut)
{
CategoryMgr *This = (CategoryMgr *)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
*ppvOut = NULL;
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfCategoryMgr))
@ -73,13 +78,13 @@ static HRESULT WINAPI CategoryMgr_QueryInterface(ITfCategoryMgr *iface, REFIID i
static ULONG WINAPI CategoryMgr_AddRef(ITfCategoryMgr *iface)
{
CategoryMgr *This = (CategoryMgr *)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
return InterlockedIncrement(&This->refCount);
}
static ULONG WINAPI CategoryMgr_Release(ITfCategoryMgr *iface)
{
CategoryMgr *This = (CategoryMgr *)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
ULONG ret;
ret = InterlockedDecrement(&This->refCount);
@ -100,7 +105,7 @@ static HRESULT WINAPI CategoryMgr_RegisterCategory ( ITfCategoryMgr *iface,
WCHAR buf2[39];
ULONG res;
HKEY tipkey,catkey,itmkey;
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
static const WCHAR ctg[] = {'C','a','t','e','g','o','r','y',0};
static const WCHAR itm[] = {'I','t','e','m',0};
@ -148,7 +153,7 @@ static HRESULT WINAPI CategoryMgr_UnregisterCategory ( ITfCategoryMgr *iface,
WCHAR buf[39];
WCHAR buf2[39];
HKEY tipkey;
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
static const WCHAR ctg[] = {'C','a','t','e','g','o','r','y',0};
static const WCHAR itm[] = {'I','t','e','m',0};
@ -180,7 +185,7 @@ static HRESULT WINAPI CategoryMgr_UnregisterCategory ( ITfCategoryMgr *iface,
static HRESULT WINAPI CategoryMgr_EnumCategoriesInItem ( ITfCategoryMgr *iface,
REFGUID rguid, IEnumGUID **ppEnum)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -188,7 +193,7 @@ static HRESULT WINAPI CategoryMgr_EnumCategoriesInItem ( ITfCategoryMgr *iface,
static HRESULT WINAPI CategoryMgr_EnumItemsInCategory ( ITfCategoryMgr *iface,
REFGUID rcatid, IEnumGUID **ppEnum)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -198,12 +203,12 @@ static HRESULT WINAPI CategoryMgr_FindClosestCategory ( ITfCategoryMgr *iface,
{
static const WCHAR fmt[] = { '%','s','\\','%','s','\\','C','a','t','e','g','o','r','y','\\','I','t','e','m','\\','%','s',0};
WCHAR fullkey[110];
WCHAR fullkey[120];
WCHAR buf[39];
HKEY key;
HRESULT hr = S_FALSE;
INT index = 0;
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
TRACE("(%p)\n",This);
@ -263,7 +268,7 @@ static HRESULT WINAPI CategoryMgr_RegisterGUIDDescription (
ITfCategoryMgr *iface, REFCLSID rclsid, REFGUID rguid,
const WCHAR *pchDesc, ULONG cch)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -271,7 +276,7 @@ static HRESULT WINAPI CategoryMgr_RegisterGUIDDescription (
static HRESULT WINAPI CategoryMgr_UnregisterGUIDDescription (
ITfCategoryMgr *iface, REFCLSID rclsid, REFGUID rguid)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -279,7 +284,7 @@ static HRESULT WINAPI CategoryMgr_UnregisterGUIDDescription (
static HRESULT WINAPI CategoryMgr_GetGUIDDescription ( ITfCategoryMgr *iface,
REFGUID rguid, BSTR *pbstrDesc)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -287,7 +292,7 @@ static HRESULT WINAPI CategoryMgr_GetGUIDDescription ( ITfCategoryMgr *iface,
static HRESULT WINAPI CategoryMgr_RegisterGUIDDWORD ( ITfCategoryMgr *iface,
REFCLSID rclsid, REFGUID rguid, DWORD dw)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -295,7 +300,7 @@ static HRESULT WINAPI CategoryMgr_RegisterGUIDDWORD ( ITfCategoryMgr *iface,
static HRESULT WINAPI CategoryMgr_UnregisterGUIDDWORD ( ITfCategoryMgr *iface,
REFCLSID rclsid, REFGUID rguid)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -303,7 +308,7 @@ static HRESULT WINAPI CategoryMgr_UnregisterGUIDDWORD ( ITfCategoryMgr *iface,
static HRESULT WINAPI CategoryMgr_GetGUIDDWORD ( ITfCategoryMgr *iface,
REFGUID rguid, DWORD *pdw)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -315,7 +320,7 @@ static HRESULT WINAPI CategoryMgr_RegisterGUID ( ITfCategoryMgr *iface,
DWORD index;
GUID *checkguid;
DWORD id;
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
TRACE("(%p) %s %p\n",This,debugstr_guid(rguid),pguidatom);
@ -350,7 +355,7 @@ static HRESULT WINAPI CategoryMgr_RegisterGUID ( ITfCategoryMgr *iface,
static HRESULT WINAPI CategoryMgr_GetGUID ( ITfCategoryMgr *iface,
TfGuidAtom guidatom, GUID *pguid)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
TRACE("(%p) %i\n",This,guidatom);
@ -368,7 +373,7 @@ static HRESULT WINAPI CategoryMgr_GetGUID ( ITfCategoryMgr *iface,
static HRESULT WINAPI CategoryMgr_IsEqualTfGuidAtom ( ITfCategoryMgr *iface,
TfGuidAtom guidatom, REFGUID rguid, BOOL *pfEqual)
{
CategoryMgr *This = (CategoryMgr*)iface;
CategoryMgr *This = impl_from_ITfCategoryMgr(iface);
TRACE("(%p) %i %s %p\n",This,guidatom,debugstr_guid(rguid),pfEqual);
@ -418,7 +423,7 @@ HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
if (This == NULL)
return E_OUTOFMEMORY;
This->CategoryMgrVtbl= &CategoryMgr_CategoryMgrVtbl;
This->ITfCategoryMgr_iface.lpVtbl = &CategoryMgr_CategoryMgrVtbl;
This->refCount = 1;
TRACE("returning %p\n", This);

View file

@ -284,7 +284,7 @@ HRESULT CompartmentMgr_Constructor(IUnknown *pUnkOuter, REFIID riid, IUnknown **
}
/**************************************************
* IEnumGUID implementaion for ITfCompartmentMgr::EnumCompartments
* IEnumGUID implementation for ITfCompartmentMgr::EnumCompartments
**************************************************/
static void CompartmentEnumGuid_Destructor(CompartmentEnumGuid *This)
{

View file

@ -262,7 +262,7 @@ static HRESULT WINAPI Context_RequestEditSession (ITfContext *iface,
if (!This->pITextStoreACP)
{
FIXME("No ITextStoreACP avaliable\n");
FIXME("No ITextStoreACP available\n");
*phrSession = E_FAIL;
return E_FAIL;
}

View file

@ -31,12 +31,17 @@
WINE_DEFAULT_DEBUG_CHANNEL(msctf);
typedef struct tagDisplayAttributeMgr {
const ITfDisplayAttributeMgrVtbl *DisplayAttributeMgrVtbl;
ITfDisplayAttributeMgr ITfDisplayAttributeMgr_iface;
LONG refCount;
} DisplayAttributeMgr;
static inline DisplayAttributeMgr *impl_from_ITfDisplayAttributeMgr(ITfDisplayAttributeMgr *iface)
{
return CONTAINING_RECORD(iface, DisplayAttributeMgr, ITfDisplayAttributeMgr_iface);
}
static void DisplayAttributeMgr_Destructor(DisplayAttributeMgr *This)
{
TRACE("destroying %p\n", This);
@ -46,7 +51,7 @@ static void DisplayAttributeMgr_Destructor(DisplayAttributeMgr *This)
static HRESULT WINAPI DisplayAttributeMgr_QueryInterface(ITfDisplayAttributeMgr *iface, REFIID iid, LPVOID *ppvOut)
{
DisplayAttributeMgr *This = (DisplayAttributeMgr *)iface;
DisplayAttributeMgr *This = impl_from_ITfDisplayAttributeMgr(iface);
*ppvOut = NULL;
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfDisplayAttributeMgr))
@ -66,13 +71,13 @@ static HRESULT WINAPI DisplayAttributeMgr_QueryInterface(ITfDisplayAttributeMgr
static ULONG WINAPI DisplayAttributeMgr_AddRef(ITfDisplayAttributeMgr *iface)
{
DisplayAttributeMgr *This = (DisplayAttributeMgr *)iface;
DisplayAttributeMgr *This = impl_from_ITfDisplayAttributeMgr(iface);
return InterlockedIncrement(&This->refCount);
}
static ULONG WINAPI DisplayAttributeMgr_Release(ITfDisplayAttributeMgr *iface)
{
DisplayAttributeMgr *This = (DisplayAttributeMgr *)iface;
DisplayAttributeMgr *This = impl_from_ITfDisplayAttributeMgr(iface);
ULONG ret;
ret = InterlockedDecrement(&This->refCount);
@ -87,7 +92,7 @@ static ULONG WINAPI DisplayAttributeMgr_Release(ITfDisplayAttributeMgr *iface)
static HRESULT WINAPI DisplayAttributeMgr_OnUpdateInfo(ITfDisplayAttributeMgr *iface)
{
DisplayAttributeMgr *This = (DisplayAttributeMgr *)iface;
DisplayAttributeMgr *This = impl_from_ITfDisplayAttributeMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -95,7 +100,7 @@ static HRESULT WINAPI DisplayAttributeMgr_OnUpdateInfo(ITfDisplayAttributeMgr *i
static HRESULT WINAPI DisplayAttributeMgr_EnumDisplayAttributeInfo(ITfDisplayAttributeMgr *iface, IEnumTfDisplayAttributeInfo **ppEnum)
{
DisplayAttributeMgr *This = (DisplayAttributeMgr *)iface;
DisplayAttributeMgr *This = impl_from_ITfDisplayAttributeMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -103,7 +108,7 @@ static HRESULT WINAPI DisplayAttributeMgr_EnumDisplayAttributeInfo(ITfDisplayAtt
static HRESULT WINAPI DisplayAttributeMgr_GetDisplayAttributeInfo(ITfDisplayAttributeMgr *iface, REFGUID guid, ITfDisplayAttributeInfo **ppInfo, CLSID *pclsidOwner)
{
DisplayAttributeMgr *This = (DisplayAttributeMgr *)iface;
DisplayAttributeMgr *This = impl_from_ITfDisplayAttributeMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -130,7 +135,7 @@ HRESULT DisplayAttributeMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
if (This == NULL)
return E_OUTOFMEMORY;
This->DisplayAttributeMgrVtbl= &DisplayAttributeMgr_DisplayAttributeMgrVtbl;
This->ITfDisplayAttributeMgr_iface.lpVtbl = &DisplayAttributeMgr_DisplayAttributeMgrVtbl;
This->refCount = 1;
TRACE("returning %p\n", This);

View file

@ -41,8 +41,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(msctf);
typedef struct tagDocumentMgr {
const ITfDocumentMgrVtbl *DocumentMgrVtbl;
const ITfSourceVtbl *SourceVtbl;
ITfDocumentMgr ITfDocumentMgr_iface;
ITfSource ITfSource_iface;
LONG refCount;
/* Aggregation */
@ -53,7 +53,7 @@ typedef struct tagDocumentMgr {
} DocumentMgr;
typedef struct tagEnumTfContext {
const IEnumTfContextsVtbl *Vtbl;
IEnumTfContexts IEnumTfContexts_iface;
LONG refCount;
DWORD index;
@ -62,9 +62,19 @@ typedef struct tagEnumTfContext {
static HRESULT EnumTfContext_Constructor(DocumentMgr* mgr, IEnumTfContexts **ppOut);
static inline DocumentMgr *impl_from_ITfSourceVtbl(ITfSource *iface)
static inline DocumentMgr *impl_from_ITfDocumentMgr(ITfDocumentMgr *iface)
{
return (DocumentMgr *)((char *)iface - FIELD_OFFSET(DocumentMgr,SourceVtbl));
return CONTAINING_RECORD(iface, DocumentMgr, ITfDocumentMgr_iface);
}
static inline DocumentMgr *impl_from_ITfSource(ITfSource *iface)
{
return CONTAINING_RECORD(iface, DocumentMgr, ITfSource_iface);
}
static inline EnumTfContext *impl_from_IEnumTfContexts(IEnumTfContexts *iface)\
{
return CONTAINING_RECORD(iface, EnumTfContext, IEnumTfContexts_iface);
}
static void DocumentMgr_Destructor(DocumentMgr *This)
@ -73,7 +83,7 @@ static void DocumentMgr_Destructor(DocumentMgr *This)
TRACE("destroying %p\n", This);
TF_GetThreadMgr(&tm);
ThreadMgr_OnDocumentMgrDestruction(tm, (ITfDocumentMgr*)This);
ThreadMgr_OnDocumentMgrDestruction(tm, &This->ITfDocumentMgr_iface);
if (This->contextStack[0])
ITfContext_Release(This->contextStack[0]);
@ -85,7 +95,7 @@ static void DocumentMgr_Destructor(DocumentMgr *This)
static HRESULT WINAPI DocumentMgr_QueryInterface(ITfDocumentMgr *iface, REFIID iid, LPVOID *ppvOut)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
*ppvOut = NULL;
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfDocumentMgr))
@ -94,7 +104,7 @@ static HRESULT WINAPI DocumentMgr_QueryInterface(ITfDocumentMgr *iface, REFIID i
}
else if (IsEqualIID(iid, &IID_ITfSource))
{
*ppvOut = &This->SourceVtbl;
*ppvOut = &This->ITfSource_iface;
}
else if (IsEqualIID(iid, &IID_ITfCompartmentMgr))
{
@ -113,13 +123,13 @@ static HRESULT WINAPI DocumentMgr_QueryInterface(ITfDocumentMgr *iface, REFIID i
static ULONG WINAPI DocumentMgr_AddRef(ITfDocumentMgr *iface)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
return InterlockedIncrement(&This->refCount);
}
static ULONG WINAPI DocumentMgr_Release(ITfDocumentMgr *iface)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
ULONG ret;
ret = InterlockedDecrement(&This->refCount);
@ -136,14 +146,14 @@ static HRESULT WINAPI DocumentMgr_CreateContext(ITfDocumentMgr *iface,
DWORD dwFlags, IUnknown *punk, ITfContext **ppic,
TfEditCookie *pecTextStore)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
TRACE("(%p) 0x%x 0x%x %p %p %p\n",This,tidOwner,dwFlags,punk,ppic,pecTextStore);
return Context_Constructor(tidOwner, punk, iface, ppic, pecTextStore);
}
static HRESULT WINAPI DocumentMgr_Push(ITfDocumentMgr *iface, ITfContext *pic)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
ITfContext *check;
TRACE("(%p) %p\n",This,pic);
@ -168,7 +178,7 @@ static HRESULT WINAPI DocumentMgr_Push(ITfDocumentMgr *iface, ITfContext *pic)
static HRESULT WINAPI DocumentMgr_Pop(ITfDocumentMgr *iface, DWORD dwFlags)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
TRACE("(%p) 0x%x\n",This,dwFlags);
if (dwFlags == TF_POPF_ALL)
@ -210,7 +220,7 @@ static HRESULT WINAPI DocumentMgr_Pop(ITfDocumentMgr *iface, DWORD dwFlags)
static HRESULT WINAPI DocumentMgr_GetTop(ITfDocumentMgr *iface, ITfContext **ppic)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
TRACE("(%p)\n",This);
if (!ppic)
return E_INVALIDARG;
@ -225,7 +235,7 @@ static HRESULT WINAPI DocumentMgr_GetTop(ITfDocumentMgr *iface, ITfContext **ppi
static HRESULT WINAPI DocumentMgr_GetBase(ITfDocumentMgr *iface, ITfContext **ppic)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
ITfContext *tgt;
TRACE("(%p)\n",This);
@ -247,7 +257,7 @@ static HRESULT WINAPI DocumentMgr_GetBase(ITfDocumentMgr *iface, ITfContext **pp
static HRESULT WINAPI DocumentMgr_EnumContexts(ITfDocumentMgr *iface, IEnumTfContexts **ppEnum)
{
DocumentMgr *This = (DocumentMgr *)iface;
DocumentMgr *This = impl_from_ITfDocumentMgr(iface);
TRACE("(%p) %p\n",This,ppEnum);
return EnumTfContext_Constructor(This, ppEnum);
}
@ -269,20 +279,20 @@ static const ITfDocumentMgrVtbl DocumentMgr_DocumentMgrVtbl =
static HRESULT WINAPI Source_QueryInterface(ITfSource *iface, REFIID iid, LPVOID *ppvOut)
{
DocumentMgr *This = impl_from_ITfSourceVtbl(iface);
return DocumentMgr_QueryInterface((ITfDocumentMgr*)This, iid, *ppvOut);
DocumentMgr *This = impl_from_ITfSource(iface);
return DocumentMgr_QueryInterface(&This->ITfDocumentMgr_iface, iid, *ppvOut);
}
static ULONG WINAPI Source_AddRef(ITfSource *iface)
{
DocumentMgr *This = impl_from_ITfSourceVtbl(iface);
return DocumentMgr_AddRef((ITfDocumentMgr*)This);
DocumentMgr *This = impl_from_ITfSource(iface);
return DocumentMgr_AddRef(&This->ITfDocumentMgr_iface);
}
static ULONG WINAPI Source_Release(ITfSource *iface)
{
DocumentMgr *This = impl_from_ITfSourceVtbl(iface);
return DocumentMgr_Release((ITfDocumentMgr*)This);
DocumentMgr *This = impl_from_ITfSource(iface);
return DocumentMgr_Release(&This->ITfDocumentMgr_iface);
}
/*****************************************************
@ -291,14 +301,14 @@ static ULONG WINAPI Source_Release(ITfSource *iface)
static HRESULT WINAPI DocumentMgrSource_AdviseSink(ITfSource *iface,
REFIID riid, IUnknown *punk, DWORD *pdwCookie)
{
DocumentMgr *This = impl_from_ITfSourceVtbl(iface);
DocumentMgr *This = impl_from_ITfSource(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI DocumentMgrSource_UnadviseSink(ITfSource *iface, DWORD pdwCookie)
{
DocumentMgr *This = impl_from_ITfSourceVtbl(iface);
DocumentMgr *This = impl_from_ITfSource(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -321,20 +331,20 @@ HRESULT DocumentMgr_Constructor(ITfThreadMgrEventSink *ThreadMgrSink, ITfDocumen
if (This == NULL)
return E_OUTOFMEMORY;
This->DocumentMgrVtbl= &DocumentMgr_DocumentMgrVtbl;
This->SourceVtbl = &DocumentMgr_SourceVtbl;
This->ITfDocumentMgr_iface.lpVtbl = &DocumentMgr_DocumentMgrVtbl;
This->ITfSource_iface.lpVtbl = &DocumentMgr_SourceVtbl;
This->refCount = 1;
This->ThreadMgrSink = ThreadMgrSink;
CompartmentMgr_Constructor((IUnknown*)This, &IID_IUnknown, (IUnknown**)&This->CompartmentMgr);
TRACE("returning %p\n", This);
*ppOut = (ITfDocumentMgr*)This;
*ppOut = &This->ITfDocumentMgr_iface;
return S_OK;
}
/**************************************************
* IEnumTfContexts implementaion
* IEnumTfContexts implementation
**************************************************/
static void EnumTfContext_Destructor(EnumTfContext *This)
{
@ -344,7 +354,7 @@ static void EnumTfContext_Destructor(EnumTfContext *This)
static HRESULT WINAPI EnumTfContext_QueryInterface(IEnumTfContexts *iface, REFIID iid, LPVOID *ppvOut)
{
EnumTfContext *This = (EnumTfContext *)iface;
EnumTfContext *This = impl_from_IEnumTfContexts(iface);
*ppvOut = NULL;
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_IEnumTfContexts))
@ -364,13 +374,13 @@ static HRESULT WINAPI EnumTfContext_QueryInterface(IEnumTfContexts *iface, REFII
static ULONG WINAPI EnumTfContext_AddRef(IEnumTfContexts *iface)
{
EnumTfContext *This = (EnumTfContext*)iface;
EnumTfContext *This = impl_from_IEnumTfContexts(iface);
return InterlockedIncrement(&This->refCount);
}
static ULONG WINAPI EnumTfContext_Release(IEnumTfContexts *iface)
{
EnumTfContext *This = (EnumTfContext *)iface;
EnumTfContext *This = impl_from_IEnumTfContexts(iface);
ULONG ret;
ret = InterlockedDecrement(&This->refCount);
@ -382,7 +392,7 @@ static ULONG WINAPI EnumTfContext_Release(IEnumTfContexts *iface)
static HRESULT WINAPI EnumTfContext_Next(IEnumTfContexts *iface,
ULONG ulCount, ITfContext **rgContext, ULONG *pcFetched)
{
EnumTfContext *This = (EnumTfContext *)iface;
EnumTfContext *This = impl_from_IEnumTfContexts(iface);
ULONG fetched = 0;
TRACE("(%p)\n",This);
@ -411,7 +421,7 @@ static HRESULT WINAPI EnumTfContext_Next(IEnumTfContexts *iface,
static HRESULT WINAPI EnumTfContext_Skip( IEnumTfContexts* iface, ULONG celt)
{
EnumTfContext *This = (EnumTfContext *)iface;
EnumTfContext *This = impl_from_IEnumTfContexts(iface);
TRACE("(%p)\n",This);
This->index += celt;
return S_OK;
@ -419,7 +429,7 @@ static HRESULT WINAPI EnumTfContext_Skip( IEnumTfContexts* iface, ULONG celt)
static HRESULT WINAPI EnumTfContext_Reset( IEnumTfContexts* iface)
{
EnumTfContext *This = (EnumTfContext *)iface;
EnumTfContext *This = impl_from_IEnumTfContexts(iface);
TRACE("(%p)\n",This);
This->index = 0;
return S_OK;
@ -428,7 +438,7 @@ static HRESULT WINAPI EnumTfContext_Reset( IEnumTfContexts* iface)
static HRESULT WINAPI EnumTfContext_Clone( IEnumTfContexts *iface,
IEnumTfContexts **ppenum)
{
EnumTfContext *This = (EnumTfContext *)iface;
EnumTfContext *This = impl_from_IEnumTfContexts(iface);
HRESULT res;
TRACE("(%p)\n",This);
@ -438,7 +448,7 @@ static HRESULT WINAPI EnumTfContext_Clone( IEnumTfContexts *iface,
res = EnumTfContext_Constructor(This->docmgr, ppenum);
if (SUCCEEDED(res))
{
EnumTfContext *new_This = (EnumTfContext *)*ppenum;
EnumTfContext *new_This = impl_from_IEnumTfContexts(*ppenum);
new_This->index = This->index;
}
return res;
@ -463,11 +473,11 @@ static HRESULT EnumTfContext_Constructor(DocumentMgr *mgr, IEnumTfContexts **ppO
if (This == NULL)
return E_OUTOFMEMORY;
This->Vtbl= &IEnumTfContexts_Vtbl;
This->IEnumTfContexts_iface.lpVtbl = &IEnumTfContexts_Vtbl;
This->refCount = 1;
This->docmgr = mgr;
TRACE("returning %p\n", This);
*ppOut = (IEnumTfContexts*)This;
*ppOut = &This->IEnumTfContexts_iface;
return S_OK;
}

View file

@ -782,7 +782,7 @@ HRESULT InputProcessorProfiles_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut
}
/**************************************************
* IEnumGUID implementaion for ITfInputProcessorProfiles::EnumInputProcessorInfo
* IEnumGUID implementation for ITfInputProcessorProfiles::EnumInputProcessorInfo
**************************************************/
static void ProfilesEnumGuid_Destructor(ProfilesEnumGuid *This)
{
@ -935,7 +935,7 @@ static HRESULT ProfilesEnumGuid_Constructor(IEnumGUID **ppOut)
}
/**************************************************
* IEnumTfLanguageProfiles implementaion
* IEnumTfLanguageProfiles implementation
**************************************************/
static void EnumTfLanguageProfiles_Destructor(EnumTfLanguageProfiles *This)
{

View file

@ -31,12 +31,17 @@
WINE_DEFAULT_DEBUG_CHANNEL(msctf);
typedef struct tagLangBarMgr {
const ITfLangBarMgrVtbl *LangBarMgrVtbl;
ITfLangBarMgr ITfLangBarMgr_iface;
LONG refCount;
} LangBarMgr;
static inline LangBarMgr *impl_from_ITfLangBarMgr(ITfLangBarMgr *iface)
{
return CONTAINING_RECORD(iface, LangBarMgr, ITfLangBarMgr_iface);
}
static void LangBarMgr_Destructor(LangBarMgr *This)
{
TRACE("destroying %p\n", This);
@ -46,7 +51,7 @@ static void LangBarMgr_Destructor(LangBarMgr *This)
static HRESULT WINAPI LangBarMgr_QueryInterface(ITfLangBarMgr *iface, REFIID iid, LPVOID *ppvOut)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
*ppvOut = NULL;
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfLangBarMgr))
@ -66,13 +71,13 @@ static HRESULT WINAPI LangBarMgr_QueryInterface(ITfLangBarMgr *iface, REFIID iid
static ULONG WINAPI LangBarMgr_AddRef(ITfLangBarMgr *iface)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
return InterlockedIncrement(&This->refCount);
}
static ULONG WINAPI LangBarMgr_Release(ITfLangBarMgr *iface)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
ULONG ret;
ret = InterlockedDecrement(&This->refCount);
@ -87,7 +92,7 @@ static ULONG WINAPI LangBarMgr_Release(ITfLangBarMgr *iface)
static HRESULT WINAPI LangBarMgr_AdviseEventSink( ITfLangBarMgr* iface, ITfLangBarEventSink *pSink, HWND hwnd, DWORD dwflags, DWORD *pdwCookie)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -95,7 +100,7 @@ static HRESULT WINAPI LangBarMgr_AdviseEventSink( ITfLangBarMgr* iface, ITfLangB
static HRESULT WINAPI LangBarMgr_UnAdviseEventSink( ITfLangBarMgr* iface, DWORD dwCookie)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -103,7 +108,7 @@ static HRESULT WINAPI LangBarMgr_UnAdviseEventSink( ITfLangBarMgr* iface, DWORD
static HRESULT WINAPI LangBarMgr_GetThreadMarshalInterface( ITfLangBarMgr* iface, DWORD dwThreadId, DWORD dwType, REFIID riid, IUnknown **ppunk)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -111,7 +116,7 @@ static HRESULT WINAPI LangBarMgr_GetThreadMarshalInterface( ITfLangBarMgr* iface
static HRESULT WINAPI LangBarMgr_GetThreadLangBarItemMgr( ITfLangBarMgr* iface, DWORD dwThreadId, ITfLangBarItemMgr **pplbi, DWORD *pdwThreadid)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -119,7 +124,7 @@ static HRESULT WINAPI LangBarMgr_GetThreadLangBarItemMgr( ITfLangBarMgr* iface,
static HRESULT WINAPI LangBarMgr_GetInputProcessorProfiles( ITfLangBarMgr* iface, DWORD dwThreadId, ITfInputProcessorProfiles **ppaip, DWORD *pdwThreadid)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -127,7 +132,7 @@ static HRESULT WINAPI LangBarMgr_GetInputProcessorProfiles( ITfLangBarMgr* iface
static HRESULT WINAPI LangBarMgr_RestoreLastFocus( ITfLangBarMgr* iface, DWORD *dwThreadId, BOOL fPrev)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -135,7 +140,7 @@ static HRESULT WINAPI LangBarMgr_RestoreLastFocus( ITfLangBarMgr* iface, DWORD *
static HRESULT WINAPI LangBarMgr_SetModalInput( ITfLangBarMgr* iface, ITfLangBarEventSink *pSink, DWORD dwThreadId, DWORD dwFlags)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -143,7 +148,7 @@ static HRESULT WINAPI LangBarMgr_SetModalInput( ITfLangBarMgr* iface, ITfLangBar
static HRESULT WINAPI LangBarMgr_ShowFloating( ITfLangBarMgr* iface, DWORD dwFlags)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -151,7 +156,7 @@ static HRESULT WINAPI LangBarMgr_ShowFloating( ITfLangBarMgr* iface, DWORD dwFla
static HRESULT WINAPI LangBarMgr_GetShowFloatingStatus( ITfLangBarMgr* iface, DWORD *pdwFlags)
{
LangBarMgr *This = (LangBarMgr *)iface;
LangBarMgr *This = impl_from_ITfLangBarMgr(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
@ -184,7 +189,7 @@ HRESULT LangBarMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
if (This == NULL)
return E_OUTOFMEMORY;
This->LangBarMgrVtbl= &LangBarMgr_LangBarMgrVtbl;
This->ITfLangBarMgr_iface.lpVtbl = &LangBarMgr_LangBarMgrVtbl;
This->refCount = 1;
TRACE("returning %p\n", This);

View file

@ -33,6 +33,7 @@
#include "shlwapi.h"
#include "shlguid.h"
#include "comcat.h"
#include "rpcproxy.h"
#include "msctf.h"
#include "msctf_internal.h"
@ -94,11 +95,16 @@ static const struct {
typedef struct tagClassFactory
{
const IClassFactoryVtbl *vtbl;
IClassFactory IClassFactory_iface;
LONG ref;
LPFNCONSTRUCTOR ctor;
} ClassFactory;
static inline ClassFactory *impl_from_IClassFactory(IClassFactory *iface)
{
return CONTAINING_RECORD(iface, ClassFactory, IClassFactory_iface);
}
static void ClassFactory_Destructor(ClassFactory *This)
{
TRACE("Destroying class factory %p\n", This);
@ -121,13 +127,13 @@ static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID r
static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
{
ClassFactory *This = (ClassFactory *)iface;
ClassFactory *This = impl_from_IClassFactory(iface);
return InterlockedIncrement(&This->ref);
}
static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
{
ClassFactory *This = (ClassFactory *)iface;
ClassFactory *This = impl_from_IClassFactory(iface);
ULONG ret = InterlockedDecrement(&This->ref);
if (ret == 0)
@ -137,7 +143,7 @@ static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown *punkOuter, REFIID iid, LPVOID *ppvOut)
{
ClassFactory *This = (ClassFactory *)iface;
ClassFactory *This = impl_from_IClassFactory(iface);
HRESULT ret;
IUnknown *obj;
@ -152,7 +158,7 @@ static HRESULT WINAPI ClassFactory_CreateInstance(IClassFactory *iface, IUnknown
static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock)
{
ClassFactory *This = (ClassFactory *)iface;
ClassFactory *This = impl_from_IClassFactory(iface);
TRACE("(%p)->(%x)\n", This, fLock);
@ -178,7 +184,7 @@ static const IClassFactoryVtbl ClassFactoryVtbl = {
static HRESULT ClassFactory_Constructor(LPFNCONSTRUCTOR ctor, LPVOID *ppvOut)
{
ClassFactory *This = HeapAlloc(GetProcessHeap(),0,sizeof(ClassFactory));
This->vtbl = &ClassFactoryVtbl;
This->IClassFactory_iface.lpVtbl = &ClassFactoryVtbl;
This->ref = 1;
This->ctor = ctor;
*ppvOut = This;
@ -553,6 +559,22 @@ HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID iid, LPVOID *ppvOut)
return CLASS_E_CLASSNOTAVAILABLE;
}
/***********************************************************************
* DllRegisterServer (MSCTF.@)
*/
HRESULT WINAPI DllRegisterServer(void)
{
return __wine_register_resources( MSCTF_hinstance );
}
/***********************************************************************
* DllUnregisterServer (MSCTF.@)
*/
HRESULT WINAPI DllUnregisterServer(void)
{
return __wine_unregister_resources( MSCTF_hinstance );
}
/***********************************************************************
* TF_CreateThreadMgr (MSCTF.@)
*/

View file

@ -17,7 +17,6 @@
<file>langbarmgr.c</file>
<file>msctf.c</file>
<file>range.c</file>
<file>regsvr.c</file>
<file>threadmgr.c</file>
<file>version.rc</file>
<library>wine</library>

View file

@ -0,0 +1,29 @@
HKCR
{
NoRemove Interface
{
}
NoRemove CLSID
{
'{529A9E6B-6587-4F23-AB9E-9C7D683E3C50}' = s 'TF_ThreadMgr'
{
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
}
'{33C53A50-F456-4884-B049-85FD643ECFED}' = s 'TF_InputProcessorProfiles'
{
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
}
'{A4B544A1-438D-4B41-9325-869523E2D6C7}' = s 'TF_CategoryMgr'
{
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
}
'{EBB08C45-6C4A-4FDC-AE53-4EB8C4C7DB8E}' = s 'TF_LangBarMgr'
{
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
}
'{3CE74DE4-53D3-4D74-8B83-431B3828BA53}' = s 'TF_DisplayAttributeMgr'
{
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
}
}
}

View file

@ -0,0 +1,49 @@
/*
* COM Classes for msctf
*
* Copyright 2010 Alexandre Julliard
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
[
threading(apartment),
uuid(529a9e6b-6587-4f23-ab9e-9c7d683e3c50)
]
coclass TF_ThreadMgr { interface ITfThreadMgr; }
[
threading(apartment),
uuid(33c53a50-f456-4884-b049-85fd643ecfed)
]
coclass TF_InputProcessorProfiles { interface ITfInputProcessorProfiles; }
[
threading(apartment),
uuid(a4b544a1-438d-4b41-9325-869523e2d6c7)
]
coclass TF_CategoryMgr { interface ITfCategoryMgr; }
[
threading(apartment),
uuid(ebb08c45-6c4a-4fdc-ae53-4eb8c4c7db8e)
]
coclass TF_LangBarMgr { interface ITfLangBarMgr; }
[
threading(apartment),
uuid(3ce74de4-53d3-4d74-8b83-431b3828ba53)
]
coclass TF_DisplayAttributeMgr { interface ITfDisplayAttributeMgr; }

View file

@ -28,42 +28,42 @@
#define COOKIE_MAGIC_EDITCOOKIE 0x0050
#define COOKIE_MAGIC_COMPARTMENTSINK 0x0060
extern DWORD tlsIndex;
extern TfClientId processId;
extern ITfCompartmentMgr *globalCompartmentMgr;
extern DWORD tlsIndex DECLSPEC_HIDDEN;
extern TfClientId processId DECLSPEC_HIDDEN;
extern ITfCompartmentMgr *globalCompartmentMgr DECLSPEC_HIDDEN;
extern HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut);
extern HRESULT DocumentMgr_Constructor(ITfThreadMgrEventSink*, ITfDocumentMgr **ppOut);
extern HRESULT Context_Constructor(TfClientId tidOwner, IUnknown *punk, ITfDocumentMgr *mgr, ITfContext **ppOut, TfEditCookie *pecTextStore);
extern HRESULT InputProcessorProfiles_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut);
extern HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut);
extern HRESULT Range_Constructor(ITfContext *context, ITextStoreACP *textstore, DWORD lockType, DWORD anchorStart, DWORD anchorEnd, ITfRange **ppOut);
extern HRESULT CompartmentMgr_Constructor(IUnknown *pUnkOuter, REFIID riid, IUnknown **ppOut);
extern HRESULT CompartmentMgr_Destructor(ITfCompartmentMgr *This);
extern HRESULT LangBarMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut);
extern HRESULT DisplayAttributeMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut);
extern HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) DECLSPEC_HIDDEN;
extern HRESULT DocumentMgr_Constructor(ITfThreadMgrEventSink*, ITfDocumentMgr **ppOut) DECLSPEC_HIDDEN;
extern HRESULT Context_Constructor(TfClientId tidOwner, IUnknown *punk, ITfDocumentMgr *mgr, ITfContext **ppOut, TfEditCookie *pecTextStore) DECLSPEC_HIDDEN;
extern HRESULT InputProcessorProfiles_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) DECLSPEC_HIDDEN;
extern HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) DECLSPEC_HIDDEN;
extern HRESULT Range_Constructor(ITfContext *context, ITextStoreACP *textstore, DWORD lockType, DWORD anchorStart, DWORD anchorEnd, ITfRange **ppOut) DECLSPEC_HIDDEN;
extern HRESULT CompartmentMgr_Constructor(IUnknown *pUnkOuter, REFIID riid, IUnknown **ppOut) DECLSPEC_HIDDEN;
extern HRESULT CompartmentMgr_Destructor(ITfCompartmentMgr *This) DECLSPEC_HIDDEN;
extern HRESULT LangBarMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) DECLSPEC_HIDDEN;
extern HRESULT DisplayAttributeMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) DECLSPEC_HIDDEN;
extern HRESULT Context_Initialize(ITfContext *cxt, ITfDocumentMgr *manager);
extern HRESULT Context_Uninitialize(ITfContext *cxt);
extern void ThreadMgr_OnDocumentMgrDestruction(ITfThreadMgr *tm, ITfDocumentMgr *mgr);
extern HRESULT TF_SELECTION_to_TS_SELECTION_ACP(const TF_SELECTION *tf, TS_SELECTION_ACP *tsAcp);
extern HRESULT Context_Initialize(ITfContext *cxt, ITfDocumentMgr *manager) DECLSPEC_HIDDEN;
extern HRESULT Context_Uninitialize(ITfContext *cxt) DECLSPEC_HIDDEN;
extern void ThreadMgr_OnDocumentMgrDestruction(ITfThreadMgr *tm, ITfDocumentMgr *mgr) DECLSPEC_HIDDEN;
extern HRESULT TF_SELECTION_to_TS_SELECTION_ACP(const TF_SELECTION *tf, TS_SELECTION_ACP *tsAcp) DECLSPEC_HIDDEN;
/* cookie function */
extern DWORD generate_Cookie(DWORD magic, LPVOID data);
extern DWORD get_Cookie_magic(DWORD id);
extern LPVOID get_Cookie_data(DWORD id);
extern LPVOID remove_Cookie(DWORD id);
extern DWORD enumerate_Cookie(DWORD magic, DWORD *index);
extern DWORD generate_Cookie(DWORD magic, LPVOID data) DECLSPEC_HIDDEN;
extern DWORD get_Cookie_magic(DWORD id) DECLSPEC_HIDDEN;
extern LPVOID get_Cookie_data(DWORD id) DECLSPEC_HIDDEN;
extern LPVOID remove_Cookie(DWORD id) DECLSPEC_HIDDEN;
extern DWORD enumerate_Cookie(DWORD magic, DWORD *index) DECLSPEC_HIDDEN;
/* activated text services functions */
extern HRESULT add_active_textservice(TF_LANGUAGEPROFILE *lp);
extern BOOL get_active_textservice(REFCLSID rclsid, TF_LANGUAGEPROFILE *lp);
extern HRESULT activate_textservices(ITfThreadMgr *tm);
extern HRESULT deactivate_textservices(void);
extern HRESULT add_active_textservice(TF_LANGUAGEPROFILE *lp) DECLSPEC_HIDDEN;
extern BOOL get_active_textservice(REFCLSID rclsid, TF_LANGUAGEPROFILE *lp) DECLSPEC_HIDDEN;
extern HRESULT activate_textservices(ITfThreadMgr *tm) DECLSPEC_HIDDEN;
extern HRESULT deactivate_textservices(void) DECLSPEC_HIDDEN;
extern CLSID get_textservice_clsid(TfClientId tid);
extern HRESULT get_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown** sink);
extern HRESULT set_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown* sink);
extern CLSID get_textservice_clsid(TfClientId tid) DECLSPEC_HIDDEN;
extern HRESULT get_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown** sink) DECLSPEC_HIDDEN;
extern HRESULT set_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown* sink) DECLSPEC_HIDDEN;
extern const WCHAR szwSystemTIPKey[];
extern const WCHAR szwSystemCTFKey[];

View file

@ -41,7 +41,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(msctf);
typedef struct tagRange {
const ITfRangeVtbl *RangeVtbl;
ITfRange ITfRange_iface;
/* const ITfRangeACPVtb *RangeACPVtbl; */
LONG refCount;
@ -54,6 +54,11 @@ typedef struct tagRange {
} Range;
static inline Range *impl_from_ITfRange(ITfRange *iface)
{
return CONTAINING_RECORD(iface, Range, ITfRange_iface);
}
static void Range_Destructor(Range *This)
{
TRACE("destroying %p\n", This);
@ -62,7 +67,7 @@ static void Range_Destructor(Range *This)
static HRESULT WINAPI Range_QueryInterface(ITfRange *iface, REFIID iid, LPVOID *ppvOut)
{
Range *This = (Range*)iface;
Range *This = impl_from_ITfRange(iface);
*ppvOut = NULL;
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfRange))
@ -82,13 +87,13 @@ static HRESULT WINAPI Range_QueryInterface(ITfRange *iface, REFIID iid, LPVOID *
static ULONG WINAPI Range_AddRef(ITfRange *iface)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
return InterlockedIncrement(&This->refCount);
}
static ULONG WINAPI Range_Release(ITfRange *iface)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
ULONG ret;
ret = InterlockedDecrement(&This->refCount);
@ -104,7 +109,7 @@ static ULONG WINAPI Range_Release(ITfRange *iface)
static HRESULT WINAPI Range_GetText(ITfRange *iface, TfEditCookie ec,
DWORD dwFlags, WCHAR *pchText, ULONG cchMax, ULONG *pcch)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -112,7 +117,7 @@ static HRESULT WINAPI Range_GetText(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_SetText(ITfRange *iface, TfEditCookie ec,
DWORD dwFlags, const WCHAR *pchText, LONG cch)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -120,7 +125,7 @@ static HRESULT WINAPI Range_SetText(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_GetFormattedText(ITfRange *iface, TfEditCookie ec,
IDataObject **ppDataObject)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -128,7 +133,7 @@ static HRESULT WINAPI Range_GetFormattedText(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_GetEmbedded(ITfRange *iface, TfEditCookie ec,
REFGUID rguidService, REFIID riid, IUnknown **ppunk)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -136,7 +141,7 @@ static HRESULT WINAPI Range_GetEmbedded(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_InsertEmbedded(ITfRange *iface, TfEditCookie ec,
DWORD dwFlags, IDataObject *pDataObject)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -144,7 +149,7 @@ static HRESULT WINAPI Range_InsertEmbedded(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_ShiftStart(ITfRange *iface, TfEditCookie ec,
LONG cchReq, LONG *pcch, const TF_HALTCOND *pHalt)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -152,7 +157,7 @@ static HRESULT WINAPI Range_ShiftStart(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_ShiftEnd(ITfRange *iface, TfEditCookie ec,
LONG cchReq, LONG *pcch, const TF_HALTCOND *pHalt)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -160,7 +165,7 @@ static HRESULT WINAPI Range_ShiftEnd(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_ShiftStartToRange(ITfRange *iface, TfEditCookie ec,
ITfRange *pRange, TfAnchor aPos)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -168,7 +173,7 @@ static HRESULT WINAPI Range_ShiftStartToRange(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_ShiftEndToRange(ITfRange *iface, TfEditCookie ec,
ITfRange *pRange, TfAnchor aPos)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -176,7 +181,7 @@ static HRESULT WINAPI Range_ShiftEndToRange(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_ShiftStartRegion(ITfRange *iface, TfEditCookie ec,
TfShiftDir dir, BOOL *pfNoRegion)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -184,7 +189,7 @@ static HRESULT WINAPI Range_ShiftStartRegion(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_ShiftEndRegion(ITfRange *iface, TfEditCookie ec,
TfShiftDir dir, BOOL *pfNoRegion)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -192,7 +197,7 @@ static HRESULT WINAPI Range_ShiftEndRegion(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_IsEmpty(ITfRange *iface, TfEditCookie ec,
BOOL *pfEmpty)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -200,7 +205,7 @@ static HRESULT WINAPI Range_IsEmpty(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_Collapse(ITfRange *iface, TfEditCookie ec,
TfAnchor aPos)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
TRACE("(%p) %i %i\n",This,ec,aPos);
switch (aPos)
@ -221,7 +226,7 @@ static HRESULT WINAPI Range_Collapse(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_IsEqualStart(ITfRange *iface, TfEditCookie ec,
ITfRange *pWith, TfAnchor aPos, BOOL *pfEqual)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -229,7 +234,7 @@ static HRESULT WINAPI Range_IsEqualStart(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_IsEqualEnd(ITfRange *iface, TfEditCookie ec,
ITfRange *pWith, TfAnchor aPos, BOOL *pfEqual)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -237,7 +242,7 @@ static HRESULT WINAPI Range_IsEqualEnd(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_CompareStart(ITfRange *iface, TfEditCookie ec,
ITfRange *pWith, TfAnchor aPos, LONG *plResult)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -245,7 +250,7 @@ static HRESULT WINAPI Range_CompareStart(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_CompareEnd(ITfRange *iface, TfEditCookie ec,
ITfRange *pWith, TfAnchor aPos, LONG *plResult)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -253,7 +258,7 @@ static HRESULT WINAPI Range_CompareEnd(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_AdjustForInsert(ITfRange *iface, TfEditCookie ec,
ULONG cchInsert, BOOL *pfInsertOk)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -261,7 +266,7 @@ static HRESULT WINAPI Range_AdjustForInsert(ITfRange *iface, TfEditCookie ec,
static HRESULT WINAPI Range_GetGravity(ITfRange *iface,
TfGravity *pgStart, TfGravity *pgEnd)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
@ -269,21 +274,21 @@ static HRESULT WINAPI Range_GetGravity(ITfRange *iface,
static HRESULT WINAPI Range_SetGravity(ITfRange *iface, TfEditCookie ec,
TfGravity gStart, TfGravity gEnd)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI Range_Clone(ITfRange *iface, ITfRange **ppClone)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
FIXME("STUB:(%p)\n",This);
return E_NOTIMPL;
}
static HRESULT WINAPI Range_GetContext(ITfRange *iface, ITfContext **ppContext)
{
Range *This = (Range *)iface;
Range *This = impl_from_ITfRange(iface);
TRACE("(%p)\n",This);
if (!ppContext)
return E_INVALIDARG;
@ -331,7 +336,7 @@ HRESULT Range_Constructor(ITfContext *context, ITextStoreACP *textstore, DWORD l
TRACE("(%p) %p %p\n",This, context, textstore);
This->RangeVtbl= &Range_RangeVtbl;
This->ITfRange_iface.lpVtbl = &Range_RangeVtbl;
This->refCount = 1;
This->pITfContext = context;
This->pITextStoreACP = textstore;
@ -339,7 +344,7 @@ HRESULT Range_Constructor(ITfContext *context, ITextStoreACP *textstore, DWORD l
This->anchorStart = anchorStart;
This->anchorEnd = anchorEnd;
*ppOut = (ITfRange*)This;
*ppOut = &This->ITfRange_iface;
TRACE("returning %p\n", This);
return S_OK;

View file

@ -1313,7 +1313,7 @@ HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
}
/**************************************************
* IEnumTfDocumentMgrs implementaion
* IEnumTfDocumentMgrs implementation
**************************************************/
static void EnumTfDocumentMgr_Destructor(EnumTfDocumentMgr *This)
{
@ -1470,5 +1470,5 @@ void ThreadMgr_OnDocumentMgrDestruction(ITfThreadMgr *tm, ITfDocumentMgr *mgr)
return;
}
}
FIXME("ITfDocumenMgr %p not found in this thread\n",mgr);
FIXME("ITfDocumentMgr %p not found in this thread\n",mgr);
}

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
1 WINE_REGISTRY msctf.rgs
#define WINE_FILEDESCRIPTION_STR "Wine Msctf"
#define WINE_FILENAME_STR "msctf.dll"
#define WINE_FILEVERSION 5,1,2600,3319

View file

@ -96,7 +96,7 @@ reactos/dll/win32/msadp32.acm # Synced to Wine-1.3.37
reactos/dll/win32/mscat32 # Autosync
reactos/dll/win32/mscms # Synced to Wine-1.3.37
reactos/dll/win32/mscoree # Autosync
reactos/dll/win32/msctf # Autosync
reactos/dll/win32/msctf # Synced to Wine-1.3.37
reactos/dll/win32/msftedit # Synced to Wine-1.3.37
reactos/dll/win32/msg711.acm # Synced to Wine-1.3.37
reactos/dll/win32/msgsm32.acm # Autosync