https://git.reactos.org/?p=reactos.git;a=commitdiff;h=ac50127e48d3bceda3521…
commit ac50127e48d3bceda35215b5adc3ba83a0f3645e
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Sat Nov 9 22:02:02 2019 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sat Nov 9 22:02:02 2019 +0100
[MSCTF] Sync with Wine Staging 4.18. CORE-16441
---
dll/win32/msctf/categorymgr.c | 22 ++++-----
dll/win32/msctf/compartmentmgr.c | 4 --
dll/win32/msctf/context.c | 98 ++++++++++++++++++++++++++++++++++++----
dll/win32/msctf/documentmgr.c | 12 ++---
dll/win32/msctf/inputprocessor.c | 32 ++++++-------
dll/win32/msctf/msctf.c | 2 -
dll/win32/msctf/msctf_internal.h | 3 ++
dll/win32/msctf/precomp.h | 4 +-
dll/win32/msctf/range.c | 4 --
dll/win32/msctf/threadmgr.c | 33 ++++++++++++--
media/doc/README.WINE | 2 +-
11 files changed, 155 insertions(+), 61 deletions(-)
diff --git a/dll/win32/msctf/categorymgr.c b/dll/win32/msctf/categorymgr.c
index ad43833d621..ccba097331e 100644
--- a/dll/win32/msctf/categorymgr.c
+++ b/dll/win32/msctf/categorymgr.c
@@ -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 ) !=
diff --git a/dll/win32/msctf/compartmentmgr.c b/dll/win32/msctf/compartmentmgr.c
index 4fe7b82f94f..4cc25f3f9ab 100644
--- a/dll/win32/msctf/compartmentmgr.c
+++ b/dll/win32/msctf/compartmentmgr.c
@@ -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"
diff --git a/dll/win32/msctf/context.c b/dll/win32/msctf/context.c
index 452895c07e3..63f2bf5455d 100644
--- a/dll/win32/msctf/context.c
+++ b/dll/win32/msctf/context.c
@@ -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;
diff --git a/dll/win32/msctf/documentmgr.c b/dll/win32/msctf/documentmgr.c
index 9fa6b0f0ddf..44856db632b 100644
--- a/dll/win32/msctf/documentmgr.c
+++ b/dll/win32/msctf/documentmgr.c
@@ -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]);
diff --git a/dll/win32/msctf/inputprocessor.c b/dll/win32/msctf/inputprocessor.c
index fdeba38b377..621ac96a984 100644
--- a/dll/win32/msctf/inputprocessor.c
+++ b/dll/win32/msctf/inputprocessor.c
@@ -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;
}
diff --git a/dll/win32/msctf/msctf.c b/dll/win32/msctf/msctf.c
index a19eaa1d338..c6e3a2ca597 100644
--- a/dll/win32/msctf/msctf.c
+++ b/dll/win32/msctf/msctf.c
@@ -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>
diff --git a/dll/win32/msctf/msctf_internal.h b/dll/win32/msctf/msctf_internal.h
index 9d375483616..9d60e18e6f3 100644
--- a/dll/win32/msctf/msctf_internal.h
+++ b/dll/win32/msctf/msctf_internal.h
@@ -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;
diff --git a/dll/win32/msctf/precomp.h b/dll/win32/msctf/precomp.h
index 7e05cac46cc..8ec1662cb1b 100644
--- a/dll/win32/msctf/precomp.h
+++ b/dll/win32/msctf/precomp.h
@@ -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"
diff --git a/dll/win32/msctf/range.c b/dll/win32/msctf/range.c
index dca8983efdb..c4eee2501fb 100644
--- a/dll/win32/msctf/range.c
+++ b/dll/win32/msctf/range.c
@@ -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"
diff --git a/dll/win32/msctf/threadmgr.c b/dll/win32/msctf/threadmgr.c
index 5338e7271c5..16e261539ac 100644
--- a/dll/win32/msctf/threadmgr.c
+++ b/dll/win32/msctf/threadmgr.c
@@ -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;
diff --git a/media/doc/README.WINE b/media/doc/README.WINE
index 3c7b0a15c26..efffbf63cda 100644
--- a/media/doc/README.WINE
+++ b/media/doc/README.WINE
@@ -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