[MSCTF] Sync with Wine Staging 4.18. CORE-16441

This commit is contained in:
Amine Khaldi 2019-11-09 22:02:02 +01:00
parent 4c4918afe9
commit ac50127e48
11 changed files with 155 additions and 61 deletions

View file

@ -18,9 +18,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#ifdef __REACTOS__
#include <wchar.h>
#endif
#define COBJMACROS
@ -33,7 +34,6 @@
#include "winerror.h"
#include "objbase.h"
#include "wine/unicode.h"
#include "msctf.h"
#include "msctf_internal.h"
@ -115,7 +115,7 @@ static HRESULT WINAPI CategoryMgr_RegisterCategory ( ITfCategoryMgr *iface,
TRACE("(%p) %s %s %s\n",This,debugstr_guid(rclsid), debugstr_guid(rcatid), debugstr_guid(rguid));
StringFromGUID2(rclsid, buf, 39);
sprintfW(fullkey,fmt,szwSystemTIPKey,buf);
swprintf(fullkey,fmt,szwSystemTIPKey,buf);
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,fullkey, 0, KEY_READ | KEY_WRITE,
&tipkey ) != ERROR_SUCCESS)
@ -123,7 +123,7 @@ static HRESULT WINAPI CategoryMgr_RegisterCategory ( ITfCategoryMgr *iface,
StringFromGUID2(rcatid, buf, 39);
StringFromGUID2(rguid, buf2, 39);
sprintfW(fullkey,fmt2,ctg,ctg,buf,buf2);
swprintf(fullkey,fmt2,ctg,ctg,buf,buf2);
res = RegCreateKeyExW(tipkey, fullkey, 0, NULL, 0, KEY_READ | KEY_WRITE,
NULL, &catkey, NULL);
@ -131,7 +131,7 @@ static HRESULT WINAPI CategoryMgr_RegisterCategory ( ITfCategoryMgr *iface,
if (!res)
{
sprintfW(fullkey,fmt2,ctg,itm,buf2,buf);
swprintf(fullkey,fmt2,ctg,itm,buf2,buf);
res = RegCreateKeyExW(tipkey, fullkey, 0, NULL, 0, KEY_READ | KEY_WRITE,
NULL, &itmkey, NULL);
@ -163,7 +163,7 @@ static HRESULT WINAPI CategoryMgr_UnregisterCategory ( ITfCategoryMgr *iface,
TRACE("(%p) %s %s %s\n",This,debugstr_guid(rclsid), debugstr_guid(rcatid), debugstr_guid(rguid));
StringFromGUID2(rclsid, buf, 39);
sprintfW(fullkey,fmt,szwSystemTIPKey,buf);
swprintf(fullkey,fmt,szwSystemTIPKey,buf);
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,fullkey, 0, KEY_READ | KEY_WRITE,
&tipkey ) != ERROR_SUCCESS)
@ -171,11 +171,9 @@ static HRESULT WINAPI CategoryMgr_UnregisterCategory ( ITfCategoryMgr *iface,
StringFromGUID2(rcatid, buf, 39);
StringFromGUID2(rguid, buf2, 39);
sprintfW(fullkey,fmt2,ctg,ctg,buf,buf2);
sprintfW(fullkey,fmt2,ctg,itm,buf2,buf);
swprintf(fullkey,fmt2,ctg,ctg,buf,buf2);
RegDeleteTreeW(tipkey, fullkey);
sprintfW(fullkey,fmt2,ctg,itm,buf2,buf);
swprintf(fullkey,fmt2,ctg,itm,buf2,buf);
RegDeleteTreeW(tipkey, fullkey);
RegCloseKey(tipkey);
@ -216,7 +214,7 @@ static HRESULT WINAPI CategoryMgr_FindClosestCategory ( ITfCategoryMgr *iface,
return E_INVALIDARG;
StringFromGUID2(rguid, buf, 39);
sprintfW(fullkey,fmt,szwSystemTIPKey,buf,buf);
swprintf(fullkey,fmt,szwSystemTIPKey,buf,buf);
*pcatid = GUID_NULL;
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,fullkey, 0, KEY_READ, &key ) !=

View file

@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#define COBJMACROS
@ -35,8 +33,6 @@
#include "oleauto.h"
#include "olectl.h"
#include "wine/unicode.h"
#include "msctf.h"
#include "msctf_internal.h"

View file

@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#define COBJMACROS
@ -34,8 +32,6 @@
#include "objbase.h"
#include "olectl.h"
#include "wine/unicode.h"
#include "msctf.h"
#include "msctf_internal.h"
@ -45,7 +41,7 @@ typedef struct tagContext {
ITfContext ITfContext_iface;
ITfSource ITfSource_iface;
/* const ITfContextCompositionVtbl *ContextCompositionVtbl; */
/* const ITfContextOwnerCompositionServicesVtbl *ContextOwnerCompositionServicesVtbl; */
ITfContextOwnerCompositionServices ITfContextOwnerCompositionServices_iface;
/* const ITfContextOwnerServicesVtbl *ContextOwnerServicesVtbl; */
ITfInsertAtSelection ITfInsertAtSelection_iface;
/* const ITfMouseTrackerVtbl *MouseTrackerVtbl; */
@ -93,6 +89,11 @@ static inline Context *impl_from_ITfSource(ITfSource *iface)
return CONTAINING_RECORD(iface, Context, ITfSource_iface);
}
static inline Context *impl_from_ITfContextOwnerCompositionServices(ITfContextOwnerCompositionServices *iface)
{
return CONTAINING_RECORD(iface, Context, ITfContextOwnerCompositionServices_iface);
}
static inline Context *impl_from_ITfInsertAtSelection(ITfInsertAtSelection *iface)
{
return CONTAINING_RECORD(iface, Context, ITfInsertAtSelection_iface);
@ -154,6 +155,10 @@ static HRESULT WINAPI Context_QueryInterface(ITfContext *iface, REFIID iid, LPVO
{
*ppvOut = &This->ITfSource_iface;
}
else if (IsEqualIID(iid, &IID_ITfContextOwnerCompositionServices))
{
*ppvOut = &This->ITfContextOwnerCompositionServices_iface;
}
else if (IsEqualIID(iid, &IID_ITfInsertAtSelection))
{
*ppvOut = &This->ITfInsertAtSelection_iface;
@ -530,6 +535,9 @@ static const ITfContextVtbl ContextVtbl =
Context_CreateRangeBackup
};
/*****************************************************
* ITfSource functions
*****************************************************/
static HRESULT WINAPI ContextSource_QueryInterface(ITfSource *iface, REFIID iid, LPVOID *ppvOut)
{
Context *This = impl_from_ITfSource(iface);
@ -548,9 +556,6 @@ static ULONG WINAPI ContextSource_Release(ITfSource *iface)
return ITfContext_Release(&This->ITfContext_iface);
}
/*****************************************************
* ITfSource functions
*****************************************************/
static HRESULT WINAPI ContextSource_AdviseSink(ITfSource *iface,
REFIID riid, IUnknown *punk, DWORD *pdwCookie)
{
@ -589,6 +594,80 @@ static const ITfSourceVtbl ContextSourceVtbl =
ContextSource_UnadviseSink
};
/*****************************************************
* ITfContextOwnerCompositionServices functions
*****************************************************/
static HRESULT WINAPI ContextOwnerCompositionServices_QueryInterface(ITfContextOwnerCompositionServices *iface,
REFIID iid, LPVOID *ppvOut)
{
Context *This = impl_from_ITfContextOwnerCompositionServices(iface);
return ITfContext_QueryInterface(&This->ITfContext_iface, iid, ppvOut);
}
static ULONG WINAPI ContextOwnerCompositionServices_AddRef(ITfContextOwnerCompositionServices *iface)
{
Context *This = impl_from_ITfContextOwnerCompositionServices(iface);
return ITfContext_AddRef(&This->ITfContext_iface);
}
static ULONG WINAPI ContextOwnerCompositionServices_Release(ITfContextOwnerCompositionServices *iface)
{
Context *This = impl_from_ITfContextOwnerCompositionServices(iface);
return ITfContext_Release(&This->ITfContext_iface);
}
static HRESULT WINAPI ContextOwnerCompositionServices_StartComposition(ITfContextOwnerCompositionServices *iface,
TfEditCookie ecWrite, ITfRange *pCompositionRange, ITfCompositionSink *pSink, ITfComposition **ppComposition)
{
Context *This = impl_from_ITfContextOwnerCompositionServices(iface);
FIXME("STUB:(%p) %#x %p %p %p\n", This, ecWrite, pCompositionRange, pSink, ppComposition);
return E_NOTIMPL;
}
static HRESULT WINAPI ContextOwnerCompositionServices_EnumCompositions(ITfContextOwnerCompositionServices *iface,
IEnumITfCompositionView **ppEnum)
{
Context *This = impl_from_ITfContextOwnerCompositionServices(iface);
FIXME("STUB:(%p) %p\n", This, ppEnum);
return E_NOTIMPL;
}
static HRESULT WINAPI ContextOwnerCompositionServices_FindComposition(ITfContextOwnerCompositionServices *iface,
TfEditCookie ecRead, ITfRange *pTestRange, IEnumITfCompositionView **ppEnum)
{
Context *This = impl_from_ITfContextOwnerCompositionServices(iface);
FIXME("STUB:(%p) %#x %p %p\n", This, ecRead, pTestRange, ppEnum);
return E_NOTIMPL;
}
static HRESULT WINAPI ContextOwnerCompositionServices_TakeOwnership(ITfContextOwnerCompositionServices *iface,
TfEditCookie ecWrite, ITfCompositionView *pComposition, ITfCompositionSink *pSink, ITfComposition **ppComposition)
{
Context *This = impl_from_ITfContextOwnerCompositionServices(iface);
FIXME("STUB:(%p) %#x %p %p %p\n", This, ecWrite, pComposition, pSink, ppComposition);
return E_NOTIMPL;
}
static HRESULT WINAPI ContextOwnerCompositionServices_TerminateComposition(ITfContextOwnerCompositionServices *iface,
ITfCompositionView *pComposition)
{
Context *This = impl_from_ITfContextOwnerCompositionServices(iface);
FIXME("STUB:(%p) %p\n", This, pComposition);
return E_NOTIMPL;
}
static const ITfContextOwnerCompositionServicesVtbl ContextOwnerCompositionServicesVtbl =
{
ContextOwnerCompositionServices_QueryInterface,
ContextOwnerCompositionServices_AddRef,
ContextOwnerCompositionServices_Release,
ContextOwnerCompositionServices_StartComposition,
ContextOwnerCompositionServices_EnumCompositions,
ContextOwnerCompositionServices_FindComposition,
ContextOwnerCompositionServices_TakeOwnership,
ContextOwnerCompositionServices_TerminateComposition
};
/*****************************************************
* ITfInsertAtSelection functions
*****************************************************/
@ -852,7 +931,7 @@ static HRESULT WINAPI TextStoreACPSink_OnLockGranted(ITextStoreACPSink *iface,
/*TODO: implement ITfEditRecord */
SINK_FOR_EACH(cursor, &This->pTextEditSink, ITfTextEditSink, sink)
{
ITfTextEditSink_OnEndEdit(sink, (ITfContext*) &This->ITfContext_iface, sc, NULL);
ITfTextEditSink_OnEndEdit(sink, &This->ITfContext_iface, sc, NULL);
}
sinkcookie = remove_Cookie(sc);
}
@ -985,6 +1064,7 @@ HRESULT Context_Constructor(TfClientId tidOwner, IUnknown *punk, ITfDocumentMgr
This->ITfContext_iface.lpVtbl= &ContextVtbl;
This->ITfSource_iface.lpVtbl = &ContextSourceVtbl;
This->ITfContextOwnerCompositionServices_iface.lpVtbl = &ContextOwnerCompositionServicesVtbl;
This->ITfInsertAtSelection_iface.lpVtbl = &InsertAtSelectionVtbl;
This->ITfSourceSingle_iface.lpVtbl = &ContextSourceSingleVtbl;
This->ITextStoreACPSink_iface.lpVtbl = &TextStoreACPSinkVtbl;

View file

@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#define COBJMACROS
@ -33,8 +31,6 @@
#include "winerror.h"
#include "objbase.h"
#include "wine/unicode.h"
#include "msctf.h"
#include "msctf_internal.h"
@ -81,11 +77,15 @@ static inline EnumTfContext *impl_from_IEnumTfContexts(IEnumTfContexts *iface)
static void DocumentMgr_Destructor(DocumentMgr *This)
{
ITfThreadMgr *tm;
ITfThreadMgr *tm = NULL;
TRACE("destroying %p\n", This);
TF_GetThreadMgr(&tm);
ThreadMgr_OnDocumentMgrDestruction(tm, &This->ITfDocumentMgr_iface);
if (tm)
{
ThreadMgr_OnDocumentMgrDestruction(tm, &This->ITfDocumentMgr_iface);
ITfThreadMgr_Release(tm);
}
if (This->contextStack[0])
ITfContext_Release(This->contextStack[0]);

View file

@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#define COBJMACROS
@ -29,13 +27,15 @@
#include "winbase.h"
#include "winreg.h"
#include "winuser.h"
#ifdef __REACTOS__
#include <wchar.h>
#include <winnls.h>
#endif
#include "shlwapi.h"
#include "winerror.h"
#include "objbase.h"
#include "olectl.h"
#include "wine/unicode.h"
#include "msctf.h"
#include "msctf_internal.h"
@ -230,7 +230,7 @@ static void add_userkey( REFCLSID rclsid, LANGID langid,
StringFromGUID2(rclsid, buf, 39);
StringFromGUID2(guidProfile, buf2, 39);
sprintfW(fullkey,szwFullLangfmt,szwSystemTIPKey,buf,szwLngp,langid,buf2);
swprintf(fullkey,szwFullLangfmt,szwSystemTIPKey,buf,szwLngp,langid,buf2);
res = RegCreateKeyExW(HKEY_CURRENT_USER,fullkey, 0, NULL, 0,
KEY_READ | KEY_WRITE, NULL, &key, &disposition);
@ -303,7 +303,7 @@ static HRESULT WINAPI InputProcessorProfiles_Register(
TRACE("(%p) %s\n",This,debugstr_guid(rclsid));
StringFromGUID2(rclsid, buf, 39);
sprintfW(fullkey,szwTipfmt,szwSystemTIPKey,buf);
swprintf(fullkey,szwTipfmt,szwSystemTIPKey,buf);
if (RegCreateKeyExW(HKEY_LOCAL_MACHINE,fullkey, 0, NULL, 0,
KEY_READ | KEY_WRITE, NULL, &tipkey, NULL) != ERROR_SUCCESS)
@ -324,7 +324,7 @@ static HRESULT WINAPI InputProcessorProfiles_Unregister(
TRACE("(%p) %s\n",This,debugstr_guid(rclsid));
StringFromGUID2(rclsid, buf, 39);
sprintfW(fullkey,szwTipfmt,szwSystemTIPKey,buf);
swprintf(fullkey,szwTipfmt,szwSystemTIPKey,buf);
RegDeleteTreeW(HKEY_LOCAL_MACHINE, fullkey);
RegDeleteTreeW(HKEY_CURRENT_USER, fullkey);
@ -355,14 +355,14 @@ static HRESULT WINAPI InputProcessorProfiles_AddLanguageProfile(
debugstr_wn(pchIconFile,cchFile),uIconIndex);
StringFromGUID2(rclsid, buf, 39);
sprintfW(fullkey,szwTipfmt,szwSystemTIPKey,buf);
swprintf(fullkey,szwTipfmt,szwSystemTIPKey,buf);
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,fullkey, 0, KEY_READ | KEY_WRITE,
&tipkey ) != ERROR_SUCCESS)
return E_FAIL;
StringFromGUID2(guidProfile, buf, 39);
sprintfW(fullkey,fmt2,szwLngp,langid,buf);
swprintf(fullkey,fmt2,szwLngp,langid,buf);
res = RegCreateKeyExW(tipkey,fullkey, 0, NULL, 0, KEY_READ | KEY_WRITE,
NULL, &fmtkey, &disposition);
@ -421,7 +421,7 @@ static HRESULT WINAPI InputProcessorProfiles_GetDefaultLanguageProfile(
return E_INVALIDARG;
StringFromGUID2(catid, buf, 39);
sprintfW(fullkey, szwDefaultFmt, szwSystemCTFKey, szwAssemblies, langid, buf);
swprintf(fullkey, szwDefaultFmt, szwSystemCTFKey, szwAssemblies, langid, buf);
if (RegOpenKeyExW(HKEY_CURRENT_USER, fullkey, 0, KEY_READ | KEY_WRITE,
&hkey ) != ERROR_SUCCESS)
@ -480,7 +480,7 @@ static HRESULT WINAPI InputProcessorProfiles_SetDefaultLanguageProfile(
return E_FAIL;
StringFromGUID2(&catid, buf, 39);
sprintfW(fullkey, szwDefaultFmt, szwSystemCTFKey, szwAssemblies, langid, buf);
swprintf(fullkey, szwDefaultFmt, szwSystemCTFKey, szwAssemblies, langid, buf);
if (RegCreateKeyExW(HKEY_CURRENT_USER, fullkey, 0, NULL, 0, KEY_READ | KEY_WRITE,
NULL, &hkey, NULL ) != ERROR_SUCCESS)
@ -644,7 +644,7 @@ static HRESULT WINAPI InputProcessorProfiles_EnableLanguageProfile(
StringFromGUID2(rclsid, buf, 39);
StringFromGUID2(guidProfile, buf2, 39);
sprintfW(fullkey,szwFullLangfmt,szwSystemTIPKey,buf,szwLngp,langid,buf2);
swprintf(fullkey,szwFullLangfmt,szwSystemTIPKey,buf,szwLngp,langid,buf2);
res = RegOpenKeyExW(HKEY_CURRENT_USER, fullkey, 0, KEY_READ | KEY_WRITE, &key);
@ -677,7 +677,7 @@ static HRESULT WINAPI InputProcessorProfiles_IsEnabledLanguageProfile(
StringFromGUID2(rclsid, buf, 39);
StringFromGUID2(guidProfile, buf2, 39);
sprintfW(fullkey,szwFullLangfmt,szwSystemTIPKey,buf,szwLngp,langid,buf2);
swprintf(fullkey,szwFullLangfmt,szwSystemTIPKey,buf,szwLngp,langid,buf2);
res = RegOpenKeyExW(HKEY_CURRENT_USER, fullkey, 0, KEY_READ | KEY_WRITE, &key);
@ -721,7 +721,7 @@ static HRESULT WINAPI InputProcessorProfiles_EnableLanguageProfileByDefault(
StringFromGUID2(rclsid, buf, 39);
StringFromGUID2(guidProfile, buf2, 39);
sprintfW(fullkey,szwFullLangfmt,szwSystemTIPKey,buf,szwLngp,langid,buf2);
swprintf(fullkey,szwFullLangfmt,szwSystemTIPKey,buf,szwLngp,langid,buf2);
res = RegOpenKeyExW(HKEY_LOCAL_MACHINE, fullkey, 0, KEY_READ | KEY_WRITE, &key);
@ -1191,7 +1191,7 @@ static INT next_LanguageProfile(EnumTfLanguageProfiles *This, CLSID clsid, TF_LA
if (This->langkey == NULL)
{
sprintfW(fullkey,fmt,This->szwCurrentClsid,szwLngp,This->langid);
swprintf(fullkey,fmt,This->szwCurrentClsid,szwLngp,This->langid);
res = RegOpenKeyExW(This->tipkey, fullkey, 0, KEY_READ | KEY_WRITE, &This->langkey);
if (res)
{
@ -1315,7 +1315,7 @@ static HRESULT WINAPI EnumTfLanguageProfiles_Clone( IEnumTfLanguageProfiles *ifa
WCHAR fullkey[168];
static const WCHAR fmt[] = {'%','s','\\','%','s','\\','0','x','%','0','8','x',0};
sprintfW(fullkey,fmt,This->szwCurrentClsid,szwLngp,This->langid);
swprintf(fullkey,fmt,This->szwCurrentClsid,szwLngp,This->langid);
res = RegOpenKeyExW(new_This->tipkey, fullkey, 0, KEY_READ | KEY_WRITE, &This->langkey);
new_This->lang_index = This->lang_index;
}

View file

@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#include <stdio.h>

View file

@ -32,6 +32,9 @@
#define COOKIE_MAGIC_DMSINK 0x0070
#define COOKIE_MAGIC_THREADFOCUSSINK 0x0080
#define COOKIE_MAGIC_KEYTRACESINK 0x0090
#define COOKIE_MAGIC_UIELEMENTSINK 0x00a0
#define COOKIE_MAGIC_INPUTPROCESSORPROFILEACTIVATIONSINK 0x00b0
#define COOKIE_MAGIC_ACTIVELANGSINK 0x00c0
extern DWORD tlsIndex DECLSPEC_HIDDEN;
extern TfClientId processId DECLSPEC_HIDDEN;

View file

@ -2,9 +2,8 @@
#ifndef _MSCTF_PRECOMP_H
#define _MSCTF_PRECOMP_H
#include <wine/config.h>
#include <stdarg.h>
#include <wchar.h>
#define WIN32_NO_STATUS
#define _INC_WINDOWS
@ -21,7 +20,6 @@
#include <shlwapi.h>
#include <wine/list.h>
#include <wine/unicode.h>
#include <wine/debug.h>
#include "msctf_internal.h"

View file

@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#define COBJMACROS
@ -33,8 +31,6 @@
#include "winerror.h"
#include "objbase.h"
#include "wine/unicode.h"
#include "msctf.h"
#include "msctf_internal.h"

View file

@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#define COBJMACROS
@ -34,8 +32,6 @@
#include "objbase.h"
#include "olectl.h"
#include "wine/unicode.h"
#include "msctf.h"
#include "msctf_internal.h"
@ -100,6 +96,8 @@ typedef struct tagACLMulti {
struct list PreservedKeyNotifySink;
struct list ThreadFocusSink;
struct list ThreadMgrEventSink;
struct list UIElementSink;
struct list InputProcessorProfileActivationSink;
} ThreadMgr;
typedef struct tagEnumTfDocumentMgr {
@ -176,6 +174,8 @@ static void ThreadMgr_Destructor(ThreadMgr *This)
free_sinks(&This->PreservedKeyNotifySink);
free_sinks(&This->ThreadFocusSink);
free_sinks(&This->ThreadMgrEventSink);
free_sinks(&This->UIElementSink);
free_sinks(&This->InputProcessorProfileActivationSink);
LIST_FOR_EACH_SAFE(cursor, cursor2, &This->CurrentPreservedKeys)
{
@ -621,6 +621,13 @@ static HRESULT WINAPI ThreadMgrSource_AdviseSink(ITfSource *iface,
return advise_sink(&This->ThreadFocusSink, &IID_ITfThreadFocusSink, COOKIE_MAGIC_THREADFOCUSSINK, punk, pdwCookie);
}
if (IsEqualIID(riid, &IID_ITfActiveLanguageProfileNotifySink))
{
WARN("semi-stub for ITfActiveLanguageProfileNotifySink: sink won't be used.\n");
return advise_sink(&This->ActiveLanguageProfileNotifySink, &IID_ITfActiveLanguageProfileNotifySink,
COOKIE_MAGIC_ACTIVELANGSINK, punk, pdwCookie);
}
if (IsEqualIID(riid, &IID_ITfKeyTraceEventSink))
{
WARN("semi-stub for ITfKeyTraceEventSink: sink won't be used.\n");
@ -628,6 +635,20 @@ static HRESULT WINAPI ThreadMgrSource_AdviseSink(ITfSource *iface,
COOKIE_MAGIC_KEYTRACESINK, punk, pdwCookie);
}
if (IsEqualIID(riid, &IID_ITfUIElementSink))
{
WARN("semi-stub for ITfUIElementSink: sink won't be used.\n");
return advise_sink(&This->UIElementSink, &IID_ITfUIElementSink,
COOKIE_MAGIC_UIELEMENTSINK, punk, pdwCookie);
}
if (IsEqualIID(riid, &IID_ITfInputProcessorProfileActivationSink))
{
WARN("semi-stub for ITfInputProcessorProfileActivationSink: sink won't be used.\n");
return advise_sink(&This->InputProcessorProfileActivationSink, &IID_ITfInputProcessorProfileActivationSink,
COOKIE_MAGIC_INPUTPROCESSORPROFILEACTIVATIONSINK, punk, pdwCookie);
}
FIXME("(%p) Unhandled Sink: %s\n",This,debugstr_guid(riid));
return E_NOTIMPL;
}
@ -641,6 +662,8 @@ static HRESULT WINAPI ThreadMgrSource_UnadviseSink(ITfSource *iface, DWORD pdwCo
magic = get_Cookie_magic(pdwCookie);
if (magic != COOKIE_MAGIC_TMSINK && magic != COOKIE_MAGIC_THREADFOCUSSINK
&& magic != COOKIE_MAGIC_KEYTRACESINK && magic != COOKIE_MAGIC_UIELEMENTSINK
&& magic != COOKIE_MAGIC_INPUTPROCESSORPROFILEACTIVATIONSINK
&& magic != COOKIE_MAGIC_KEYTRACESINK)
return E_INVALIDARG;
@ -1358,6 +1381,8 @@ HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
list_init(&This->PreservedKeyNotifySink);
list_init(&This->ThreadFocusSink);
list_init(&This->ThreadMgrEventSink);
list_init(&This->UIElementSink);
list_init(&This->InputProcessorProfileActivationSink);
TRACE("returning %p\n", This);
*ppOut = (IUnknown *)&This->ITfThreadMgrEx_iface;

View file

@ -107,7 +107,7 @@ dll/win32/msadp32.acm # Synced to WineStaging-4.0
dll/win32/mscat32 # Synced to WineStaging-4.18
dll/win32/mscms # Synced to WineStaging-4.18
dll/win32/mscoree # Synced to Wine-1.5.4
dll/win32/msctf # Synced to WineStaging-4.0
dll/win32/msctf # Synced to WineStaging-4.18
dll/win32/msftedit # Synced to WineStaging-3.3
dll/win32/msg711.acm # Synced to WineStaging-4.0
dll/win32/msgsm32.acm # Synced to WineStaging-4.0