ReactOS 0.4.15-dev-7958-gcd0bb1a
threadmgr.c File Reference
#include <stdarg.h>
#include "wine/debug.h"
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "winuser.h"
#include "shlwapi.h"
#include "winerror.h"
#include "objbase.h"
#include "olectl.h"
#include "msctf.h"
#include "msctf_internal.h"
Include dependency graph for threadmgr.c:

Go to the source code of this file.

Classes

struct  tagPreservedKey
 
struct  tagDocumentMgrs
 
struct  tagAssociatedWindow
 
struct  tagACLMulti
 
struct  tagEnumTfDocumentMgr
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct tagPreservedKey PreservedKey
 
typedef struct tagDocumentMgrs DocumentMgrEntry
 
typedef struct tagAssociatedWindow AssociatedWindow
 
typedef struct tagACLMulti ThreadMgr
 
typedef struct tagEnumTfDocumentMgr EnumTfDocumentMgr
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (msctf)
 
static HRESULT EnumTfDocumentMgr_Constructor (struct list *head, IEnumTfDocumentMgrs **ppOut)
 
static ThreadMgrimpl_from_ITfThreadMgrEx (ITfThreadMgrEx *iface)
 
static ThreadMgrimpl_from_ITfSource (ITfSource *iface)
 
static ThreadMgrimpl_from_ITfKeystrokeMgr (ITfKeystrokeMgr *iface)
 
static ThreadMgrimpl_from_ITfMessagePump (ITfMessagePump *iface)
 
static ThreadMgrimpl_from_ITfClientId (ITfClientId *iface)
 
static ThreadMgrimpl_from_ITfThreadMgrEventSink (ITfThreadMgrEventSink *iface)
 
static ThreadMgrimpl_from_ITfUIElementMgr (ITfUIElementMgr *iface)
 
static ThreadMgrimpl_from_ITfSourceSingle (ITfSourceSingle *iface)
 
static EnumTfDocumentMgrimpl_from_IEnumTfDocumentMgrs (IEnumTfDocumentMgrs *iface)
 
static void ThreadMgr_Destructor (ThreadMgr *This)
 
static HRESULT WINAPI ThreadMgr_QueryInterface (ITfThreadMgrEx *iface, REFIID iid, LPVOID *ppvOut)
 
static ULONG WINAPI ThreadMgr_AddRef (ITfThreadMgrEx *iface)
 
static ULONG WINAPI ThreadMgr_Release (ITfThreadMgrEx *iface)
 
static HRESULT WINAPI ThreadMgr_Activate (ITfThreadMgrEx *iface, TfClientId *id)
 
static HRESULT WINAPI ThreadMgr_Deactivate (ITfThreadMgrEx *iface)
 
static HRESULT WINAPI ThreadMgr_CreateDocumentMgr (ITfThreadMgrEx *iface, ITfDocumentMgr **ppdim)
 
static HRESULT WINAPI ThreadMgr_EnumDocumentMgrs (ITfThreadMgrEx *iface, IEnumTfDocumentMgrs **ppEnum)
 
static HRESULT WINAPI ThreadMgr_GetFocus (ITfThreadMgrEx *iface, ITfDocumentMgr **ppdimFocus)
 
static HRESULT WINAPI ThreadMgr_SetFocus (ITfThreadMgrEx *iface, ITfDocumentMgr *pdimFocus)
 
static LRESULT CALLBACK ThreadFocusHookProc (int nCode, WPARAM wParam, LPARAM lParam)
 
static HRESULT SetupWindowsHook (ThreadMgr *This)
 
static HRESULT WINAPI ThreadMgr_AssociateFocus (ITfThreadMgrEx *iface, HWND hwnd, ITfDocumentMgr *pdimNew, ITfDocumentMgr **ppdimPrev)
 
static HRESULT WINAPI ThreadMgr_IsThreadFocus (ITfThreadMgrEx *iface, BOOL *pfThreadFocus)
 
static HRESULT WINAPI ThreadMgr_GetFunctionProvider (ITfThreadMgrEx *iface, REFCLSID clsid, ITfFunctionProvider **ppFuncProv)
 
static HRESULT WINAPI ThreadMgr_EnumFunctionProviders (ITfThreadMgrEx *iface, IEnumTfFunctionProviders **ppEnum)
 
static HRESULT WINAPI ThreadMgr_GetGlobalCompartment (ITfThreadMgrEx *iface, ITfCompartmentMgr **ppCompMgr)
 
static HRESULT WINAPI ThreadMgr_ActivateEx (ITfThreadMgrEx *iface, TfClientId *id, DWORD flags)
 
static HRESULT WINAPI ThreadMgr_GetActiveFlags (ITfThreadMgrEx *iface, DWORD *flags)
 
static HRESULT WINAPI Source_QueryInterface (ITfSource *iface, REFIID iid, LPVOID *ppvOut)
 
static ULONG WINAPI Source_AddRef (ITfSource *iface)
 
static ULONG WINAPI Source_Release (ITfSource *iface)
 
static HRESULT WINAPI ThreadMgrSource_AdviseSink (ITfSource *iface, REFIID riid, IUnknown *punk, DWORD *pdwCookie)
 
static HRESULT WINAPI ThreadMgrSource_UnadviseSink (ITfSource *iface, DWORD pdwCookie)
 
static HRESULT WINAPI KeystrokeMgr_QueryInterface (ITfKeystrokeMgr *iface, REFIID iid, LPVOID *ppvOut)
 
static ULONG WINAPI KeystrokeMgr_AddRef (ITfKeystrokeMgr *iface)
 
static ULONG WINAPI KeystrokeMgr_Release (ITfKeystrokeMgr *iface)
 
static HRESULT WINAPI KeystrokeMgr_AdviseKeyEventSink (ITfKeystrokeMgr *iface, TfClientId tid, ITfKeyEventSink *pSink, BOOL fForeground)
 
static HRESULT WINAPI KeystrokeMgr_UnadviseKeyEventSink (ITfKeystrokeMgr *iface, TfClientId tid)
 
static HRESULT WINAPI KeystrokeMgr_GetForeground (ITfKeystrokeMgr *iface, CLSID *pclsid)
 
static HRESULT WINAPI KeystrokeMgr_TestKeyDown (ITfKeystrokeMgr *iface, WPARAM wParam, LPARAM lParam, BOOL *pfEaten)
 
static HRESULT WINAPI KeystrokeMgr_TestKeyUp (ITfKeystrokeMgr *iface, WPARAM wParam, LPARAM lParam, BOOL *pfEaten)
 
static HRESULT WINAPI KeystrokeMgr_KeyDown (ITfKeystrokeMgr *iface, WPARAM wParam, LPARAM lParam, BOOL *pfEaten)
 
static HRESULT WINAPI KeystrokeMgr_KeyUp (ITfKeystrokeMgr *iface, WPARAM wParam, LPARAM lParam, BOOL *pfEaten)
 
static HRESULT WINAPI KeystrokeMgr_GetPreservedKey (ITfKeystrokeMgr *iface, ITfContext *pic, const TF_PRESERVEDKEY *pprekey, GUID *pguid)
 
static HRESULT WINAPI KeystrokeMgr_IsPreservedKey (ITfKeystrokeMgr *iface, REFGUID rguid, const TF_PRESERVEDKEY *pprekey, BOOL *pfRegistered)
 
static HRESULT WINAPI KeystrokeMgr_PreserveKey (ITfKeystrokeMgr *iface, TfClientId tid, REFGUID rguid, const TF_PRESERVEDKEY *prekey, const WCHAR *pchDesc, ULONG cchDesc)
 
static HRESULT WINAPI KeystrokeMgr_UnpreserveKey (ITfKeystrokeMgr *iface, REFGUID rguid, const TF_PRESERVEDKEY *pprekey)
 
static HRESULT WINAPI KeystrokeMgr_SetPreservedKeyDescription (ITfKeystrokeMgr *iface, REFGUID rguid, const WCHAR *pchDesc, ULONG cchDesc)
 
static HRESULT WINAPI KeystrokeMgr_GetPreservedKeyDescription (ITfKeystrokeMgr *iface, REFGUID rguid, BSTR *pbstrDesc)
 
static HRESULT WINAPI KeystrokeMgr_SimulatePreservedKey (ITfKeystrokeMgr *iface, ITfContext *pic, REFGUID rguid, BOOL *pfEaten)
 
static HRESULT WINAPI MessagePump_QueryInterface (ITfMessagePump *iface, REFIID iid, LPVOID *ppvOut)
 
static ULONG WINAPI MessagePump_AddRef (ITfMessagePump *iface)
 
static ULONG WINAPI MessagePump_Release (ITfMessagePump *iface)
 
static HRESULT WINAPI MessagePump_PeekMessageA (ITfMessagePump *iface, LPMSG pMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg, BOOL *pfResult)
 
static HRESULT WINAPI MessagePump_GetMessageA (ITfMessagePump *iface, LPMSG pMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, BOOL *pfResult)
 
static HRESULT WINAPI MessagePump_PeekMessageW (ITfMessagePump *iface, LPMSG pMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg, BOOL *pfResult)
 
static HRESULT WINAPI MessagePump_GetMessageW (ITfMessagePump *iface, LPMSG pMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, BOOL *pfResult)
 
static HRESULT WINAPI ClientId_QueryInterface (ITfClientId *iface, REFIID iid, LPVOID *ppvOut)
 
static ULONG WINAPI ClientId_AddRef (ITfClientId *iface)
 
static ULONG WINAPI ClientId_Release (ITfClientId *iface)
 
static HRESULT WINAPI ClientId_GetClientId (ITfClientId *iface, REFCLSID rclsid, TfClientId *ptid)
 
static HRESULT WINAPI ThreadMgrEventSink_QueryInterface (ITfThreadMgrEventSink *iface, REFIID iid, LPVOID *ppvOut)
 
static ULONG WINAPI ThreadMgrEventSink_AddRef (ITfThreadMgrEventSink *iface)
 
static ULONG WINAPI ThreadMgrEventSink_Release (ITfThreadMgrEventSink *iface)
 
static HRESULT WINAPI ThreadMgrEventSink_OnInitDocumentMgr (ITfThreadMgrEventSink *iface, ITfDocumentMgr *pdim)
 
static HRESULT WINAPI ThreadMgrEventSink_OnUninitDocumentMgr (ITfThreadMgrEventSink *iface, ITfDocumentMgr *pdim)
 
static HRESULT WINAPI ThreadMgrEventSink_OnSetFocus (ITfThreadMgrEventSink *iface, ITfDocumentMgr *pdimFocus, ITfDocumentMgr *pdimPrevFocus)
 
static HRESULT WINAPI ThreadMgrEventSink_OnPushContext (ITfThreadMgrEventSink *iface, ITfContext *pic)
 
static HRESULT WINAPI ThreadMgrEventSink_OnPopContext (ITfThreadMgrEventSink *iface, ITfContext *pic)
 
static HRESULT WINAPI UIElementMgr_QueryInterface (ITfUIElementMgr *iface, REFIID iid, void **ppvOut)
 
static ULONG WINAPI UIElementMgr_AddRef (ITfUIElementMgr *iface)
 
static ULONG WINAPI UIElementMgr_Release (ITfUIElementMgr *iface)
 
static HRESULT WINAPI UIElementMgr_BeginUIElement (ITfUIElementMgr *iface, ITfUIElement *element, BOOL *show, DWORD *id)
 
static HRESULT WINAPI UIElementMgr_UpdateUIElement (ITfUIElementMgr *iface, DWORD id)
 
static HRESULT WINAPI UIElementMgr_EndUIElement (ITfUIElementMgr *iface, DWORD id)
 
static HRESULT WINAPI UIElementMgr_GetUIElement (ITfUIElementMgr *iface, DWORD id, ITfUIElement **element)
 
static HRESULT WINAPI UIElementMgr_EnumUIElements (ITfUIElementMgr *iface, IEnumTfUIElements **enum_elements)
 
static HRESULT WINAPI ThreadMgrSourceSingle_QueryInterface (ITfSourceSingle *iface, REFIID iid, LPVOID *ppvOut)
 
static ULONG WINAPI ThreadMgrSourceSingle_AddRef (ITfSourceSingle *iface)
 
static ULONG WINAPI ThreadMgrSourceSingle_Release (ITfSourceSingle *iface)
 
static HRESULT WINAPI ThreadMgrSourceSingle_AdviseSingleSink (ITfSourceSingle *iface, TfClientId tid, REFIID riid, IUnknown *punk)
 
static HRESULT WINAPI ThreadMgrSourceSingle_UnadviseSingleSink (ITfSourceSingle *iface, TfClientId tid, REFIID riid)
 
HRESULT ThreadMgr_Constructor (IUnknown *pUnkOuter, IUnknown **ppOut)
 
static void EnumTfDocumentMgr_Destructor (EnumTfDocumentMgr *This)
 
static HRESULT WINAPI EnumTfDocumentMgr_QueryInterface (IEnumTfDocumentMgrs *iface, REFIID iid, LPVOID *ppvOut)
 
static ULONG WINAPI EnumTfDocumentMgr_AddRef (IEnumTfDocumentMgrs *iface)
 
static ULONG WINAPI EnumTfDocumentMgr_Release (IEnumTfDocumentMgrs *iface)
 
static HRESULT WINAPI EnumTfDocumentMgr_Next (IEnumTfDocumentMgrs *iface, ULONG ulCount, ITfDocumentMgr **rgDocumentMgr, ULONG *pcFetched)
 
static HRESULT WINAPI EnumTfDocumentMgr_Skip (IEnumTfDocumentMgrs *iface, ULONG celt)
 
static HRESULT WINAPI EnumTfDocumentMgr_Reset (IEnumTfDocumentMgrs *iface)
 
static HRESULT WINAPI EnumTfDocumentMgr_Clone (IEnumTfDocumentMgrs *iface, IEnumTfDocumentMgrs **ppenum)
 
void ThreadMgr_OnDocumentMgrDestruction (ITfThreadMgr *iface, ITfDocumentMgr *mgr)
 

Variables

static const ITfThreadMgrExVtbl ThreadMgrExVtbl
 
static const ITfSourceVtbl ThreadMgrSourceVtbl
 
static const ITfKeystrokeMgrVtbl KeystrokeMgrVtbl
 
static const ITfMessagePumpVtbl MessagePumpVtbl
 
static const ITfClientIdVtbl ClientIdVtbl
 
static const ITfThreadMgrEventSinkVtbl ThreadMgrEventSinkVtbl
 
static const ITfUIElementMgrVtbl ThreadMgrUIElementMgrVtbl
 
static const ITfSourceSingleVtbl SourceSingleVtbl
 
static const IEnumTfDocumentMgrsVtbl EnumTfDocumentMgrsVtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 23 of file threadmgr.c.

Typedef Documentation

◆ AssociatedWindow

◆ DocumentMgrEntry

◆ EnumTfDocumentMgr

◆ PreservedKey

◆ ThreadMgr

Function Documentation

◆ ClientId_AddRef()

static ULONG WINAPI ClientId_AddRef ( ITfClientId iface)
static

Definition at line 1059 of file threadmgr.c.

1060{
1062 return ITfThreadMgrEx_AddRef(&This->ITfThreadMgrEx_iface);
1063}
static ThreadMgr * impl_from_ITfClientId(ITfClientId *iface)
Definition: threadmgr.c:133

◆ ClientId_GetClientId()

static HRESULT WINAPI ClientId_GetClientId ( ITfClientId iface,
REFCLSID  rclsid,
TfClientId ptid 
)
static

Definition at line 1071 of file threadmgr.c.

1074{
1076 HRESULT hr;
1077 ITfCategoryMgr *catmgr;
1078
1079 TRACE("(%p) %s\n",This,debugstr_guid(rclsid));
1080
1082 hr = ITfCategoryMgr_RegisterGUID(catmgr,rclsid,ptid);
1083 ITfCategoryMgr_Release(catmgr);
1084
1085 return hr;
1086}
HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
Definition: categorymgr.c:413
#define NULL
Definition: types.h:112
#define debugstr_guid
Definition: kernel32.h:35
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4

◆ ClientId_QueryInterface()

static HRESULT WINAPI ClientId_QueryInterface ( ITfClientId iface,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 1053 of file threadmgr.c.

1054{
1056 return ITfThreadMgrEx_QueryInterface(&This->ITfThreadMgrEx_iface, iid, ppvOut);
1057}

◆ ClientId_Release()

static ULONG WINAPI ClientId_Release ( ITfClientId iface)
static

Definition at line 1065 of file threadmgr.c.

1066{
1068 return ITfThreadMgrEx_Release(&This->ITfThreadMgrEx_iface);
1069}

◆ EnumTfDocumentMgr_AddRef()

static ULONG WINAPI EnumTfDocumentMgr_AddRef ( IEnumTfDocumentMgrs iface)
static

Definition at line 1421 of file threadmgr.c.

1422{
1424 return InterlockedIncrement(&This->refCount);
1425}
#define InterlockedIncrement
Definition: armddk.h:53
static EnumTfDocumentMgr * impl_from_IEnumTfDocumentMgrs(IEnumTfDocumentMgrs *iface)
Definition: threadmgr.c:153

◆ EnumTfDocumentMgr_Clone()

static HRESULT WINAPI EnumTfDocumentMgr_Clone ( IEnumTfDocumentMgrs iface,
IEnumTfDocumentMgrs **  ppenum 
)
static

Definition at line 1489 of file threadmgr.c.

1491{
1493 HRESULT res;
1494
1495 TRACE("(%p)\n",This);
1496
1497 if (ppenum == NULL) return E_POINTER;
1498
1499 res = EnumTfDocumentMgr_Constructor(This->head, ppenum);
1500 if (SUCCEEDED(res))
1501 {
1503 new_This->index = This->index;
1504 }
1505 return res;
1506}
GLuint res
Definition: glext.h:9613
#define SUCCEEDED(hr)
Definition: intsafe.h:50
struct list * index
Definition: threadmgr.c:107
static HRESULT EnumTfDocumentMgr_Constructor(struct list *head, IEnumTfDocumentMgrs **ppOut)
Definition: threadmgr.c:1519
#define E_POINTER
Definition: winerror.h:2365

◆ EnumTfDocumentMgr_Constructor()

static HRESULT EnumTfDocumentMgr_Constructor ( struct list head,
IEnumTfDocumentMgrs **  ppOut 
)
static

Definition at line 1519 of file threadmgr.c.

1520{
1522
1524 if (This == NULL)
1525 return E_OUTOFMEMORY;
1526
1527 This->IEnumTfDocumentMgrs_iface.lpVtbl= &EnumTfDocumentMgrsVtbl;
1528 This->refCount = 1;
1529 This->head = head;
1530 This->index = list_head(This->head);
1531
1532 TRACE("returning %p\n", &This->IEnumTfDocumentMgrs_iface);
1533 *ppOut = &This->IEnumTfDocumentMgrs_iface;
1534 return S_OK;
1535}
struct outqueuenode * head
Definition: adnsresfilter.c:66
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
#define S_OK
Definition: intsafe.h:52
Definition: list.h:15
static const IEnumTfDocumentMgrsVtbl EnumTfDocumentMgrsVtbl
Definition: threadmgr.c:1508

Referenced by EnumTfDocumentMgr_Clone(), and ThreadMgr_EnumDocumentMgrs().

◆ EnumTfDocumentMgr_Destructor()

static void EnumTfDocumentMgr_Destructor ( EnumTfDocumentMgr This)
static

Definition at line 1395 of file threadmgr.c.

1396{
1397 TRACE("destroying %p\n", This);
1399}
#define HeapFree(x, y, z)
Definition: compat.h:735

Referenced by EnumTfDocumentMgr_Release().

◆ EnumTfDocumentMgr_Next()

static HRESULT WINAPI EnumTfDocumentMgr_Next ( IEnumTfDocumentMgrs iface,
ULONG  ulCount,
ITfDocumentMgr **  rgDocumentMgr,
ULONG pcFetched 
)
static

Definition at line 1438 of file threadmgr.c.

1440{
1442 ULONG fetched = 0;
1443
1444 TRACE("(%p)\n",This);
1445
1446 if (rgDocumentMgr == NULL) return E_POINTER;
1447
1448 while (fetched < ulCount)
1449 {
1450 DocumentMgrEntry *mgrentry;
1451 if (This->index == NULL)
1452 break;
1453
1454 mgrentry = LIST_ENTRY(This->index,DocumentMgrEntry,entry);
1455 if (mgrentry == NULL)
1456 break;
1457
1458 *rgDocumentMgr = mgrentry->docmgr;
1459 ITfDocumentMgr_AddRef(*rgDocumentMgr);
1460
1461 This->index = list_next(This->head, This->index);
1462 ++fetched;
1463 ++rgDocumentMgr;
1464 }
1465
1466 if (pcFetched) *pcFetched = fetched;
1467 return fetched == ulCount ? S_OK : S_FALSE;
1468}
uint32_t entry
Definition: isohybrid.c:63
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
Definition: list.h:115
ITfDocumentMgr * docmgr
Definition: threadmgr.c:52
#define LIST_ENTRY(type)
Definition: queue.h:175
uint32_t ULONG
Definition: typedefs.h:59
#define S_FALSE
Definition: winerror.h:2357

◆ EnumTfDocumentMgr_QueryInterface()

static HRESULT WINAPI EnumTfDocumentMgr_QueryInterface ( IEnumTfDocumentMgrs iface,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 1401 of file threadmgr.c.

1402{
1404 *ppvOut = NULL;
1405
1406 if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_IEnumTfDocumentMgrs))
1407 {
1408 *ppvOut = &This->IEnumTfDocumentMgrs_iface;
1409 }
1410
1411 if (*ppvOut)
1412 {
1413 IEnumTfDocumentMgrs_AddRef(iface);
1414 return S_OK;
1415 }
1416
1417 WARN("unsupported interface: %s\n", debugstr_guid(iid));
1418 return E_NOINTERFACE;
1419}
const GUID IID_IUnknown
#define WARN(fmt,...)
Definition: debug.h:112
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ EnumTfDocumentMgr_Release()

static ULONG WINAPI EnumTfDocumentMgr_Release ( IEnumTfDocumentMgrs iface)
static

Definition at line 1427 of file threadmgr.c.

1428{
1430 ULONG ret;
1431
1432 ret = InterlockedDecrement(&This->refCount);
1433 if (ret == 0)
1435 return ret;
1436}
#define InterlockedDecrement
Definition: armddk.h:52
static void EnumTfDocumentMgr_Destructor(EnumTfDocumentMgr *This)
Definition: threadmgr.c:1395
int ret

◆ EnumTfDocumentMgr_Reset()

static HRESULT WINAPI EnumTfDocumentMgr_Reset ( IEnumTfDocumentMgrs iface)
static

Definition at line 1481 of file threadmgr.c.

1482{
1484 TRACE("(%p)\n",This);
1485 This->index = list_head(This->head);
1486 return S_OK;
1487}

◆ EnumTfDocumentMgr_Skip()

static HRESULT WINAPI EnumTfDocumentMgr_Skip ( IEnumTfDocumentMgrs iface,
ULONG  celt 
)
static

Definition at line 1470 of file threadmgr.c.

1471{
1473 ULONG i;
1474
1475 TRACE("(%p)\n",This);
1476 for(i = 0; i < celt && This->index != NULL; i++)
1477 This->index = list_next(This->head, This->index);
1478 return S_OK;
1479}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248

◆ impl_from_IEnumTfDocumentMgrs()

static EnumTfDocumentMgr * impl_from_IEnumTfDocumentMgrs ( IEnumTfDocumentMgrs iface)
inlinestatic

Definition at line 153 of file threadmgr.c.

154{
155 return CONTAINING_RECORD(iface, EnumTfDocumentMgr, IEnumTfDocumentMgrs_iface);
156}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by EnumTfDocumentMgr_AddRef(), EnumTfDocumentMgr_Clone(), EnumTfDocumentMgr_Next(), EnumTfDocumentMgr_QueryInterface(), EnumTfDocumentMgr_Release(), EnumTfDocumentMgr_Reset(), and EnumTfDocumentMgr_Skip().

◆ impl_from_ITfClientId()

static ThreadMgr * impl_from_ITfClientId ( ITfClientId iface)
inlinestatic

Definition at line 133 of file threadmgr.c.

134{
135 return CONTAINING_RECORD(iface, ThreadMgr, ITfClientId_iface);
136}

Referenced by ClientId_AddRef(), ClientId_GetClientId(), ClientId_QueryInterface(), and ClientId_Release().

◆ impl_from_ITfKeystrokeMgr()

◆ impl_from_ITfMessagePump()

static ThreadMgr * impl_from_ITfMessagePump ( ITfMessagePump iface)
inlinestatic

Definition at line 128 of file threadmgr.c.

129{
130 return CONTAINING_RECORD(iface, ThreadMgr, ITfMessagePump_iface);
131}

Referenced by MessagePump_AddRef(), MessagePump_QueryInterface(), and MessagePump_Release().

◆ impl_from_ITfSource()

static ThreadMgr * impl_from_ITfSource ( ITfSource iface)
inlinestatic

Definition at line 118 of file threadmgr.c.

119{
120 return CONTAINING_RECORD(iface, ThreadMgr, ITfSource_iface);
121}

Referenced by Source_AddRef(), Source_QueryInterface(), Source_Release(), ThreadMgrSource_AdviseSink(), and ThreadMgrSource_UnadviseSink().

◆ impl_from_ITfSourceSingle()

static ThreadMgr * impl_from_ITfSourceSingle ( ITfSourceSingle iface)
inlinestatic

◆ impl_from_ITfThreadMgrEventSink()

◆ impl_from_ITfThreadMgrEx()

◆ impl_from_ITfUIElementMgr()

◆ KeystrokeMgr_AddRef()

static ULONG WINAPI KeystrokeMgr_AddRef ( ITfKeystrokeMgr iface)
static

Definition at line 692 of file threadmgr.c.

693{
695 return ITfThreadMgrEx_AddRef(&This->ITfThreadMgrEx_iface);
696}
static ThreadMgr * impl_from_ITfKeystrokeMgr(ITfKeystrokeMgr *iface)
Definition: threadmgr.c:123

◆ KeystrokeMgr_AdviseKeyEventSink()

static HRESULT WINAPI KeystrokeMgr_AdviseKeyEventSink ( ITfKeystrokeMgr iface,
TfClientId  tid,
ITfKeyEventSink pSink,
BOOL  fForeground 
)
static

Definition at line 704 of file threadmgr.c.

706{
708 CLSID textservice;
710
711 TRACE("(%p) %x %p %i\n",This,tid,pSink,fForeground);
712
713 if (!tid || !pSink)
714 return E_INVALIDARG;
715
716 textservice = get_textservice_clsid(tid);
717 if (IsEqualCLSID(&GUID_NULL,&textservice))
718 return E_INVALIDARG;
719
720 get_textservice_sink(tid, &IID_ITfKeyEventSink, (IUnknown**)&check);
721 if (check != NULL)
723
724 if (FAILED(ITfKeyEventSink_QueryInterface(pSink,&IID_ITfKeyEventSink,(LPVOID*) &check)))
725 return E_INVALIDARG;
726
727 set_textservice_sink(tid, &IID_ITfKeyEventSink, (IUnknown*)check);
728
729 if (fForeground)
730 {
731 if (This->foregroundKeyEventSink)
732 {
733 ITfKeyEventSink_OnSetFocus(This->foregroundKeyEventSink, FALSE);
734 ITfKeyEventSink_Release(This->foregroundKeyEventSink);
735 }
736 ITfKeyEventSink_AddRef(check);
737 ITfKeyEventSink_OnSetFocus(check, TRUE);
738 This->foregroundKeyEventSink = check;
739 This->foregroundTextService = textservice;
740 }
741 return S_OK;
742}
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define check(expected, result)
Definition: dplayx.c:32
#define FAILED(hr)
Definition: intsafe.h:51
#define GUID_NULL
Definition: ks.h:106
static TfClientId tid
HRESULT set_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown *sink)
Definition: msctf.c:534
HRESULT get_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown **sink)
Definition: msctf.c:517
CLSID get_textservice_clsid(TfClientId tid)
Definition: msctf.c:507
#define CONNECT_E_ADVISELIMIT
Definition: olectl.h:252
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96

◆ KeystrokeMgr_GetForeground()

static HRESULT WINAPI KeystrokeMgr_GetForeground ( ITfKeystrokeMgr iface,
CLSID pclsid 
)
static

Definition at line 776 of file threadmgr.c.

778{
780 TRACE("(%p) %p\n",This,pclsid);
781 if (!pclsid)
782 return E_INVALIDARG;
783
784 if (IsEqualCLSID(&This->foregroundTextService,&GUID_NULL))
785 return S_FALSE;
786
787 *pclsid = This->foregroundTextService;
788 return S_OK;
789}

◆ KeystrokeMgr_GetPreservedKey()

static HRESULT WINAPI KeystrokeMgr_GetPreservedKey ( ITfKeystrokeMgr iface,
ITfContext pic,
const TF_PRESERVEDKEY pprekey,
GUID pguid 
)
static

Definition at line 825 of file threadmgr.c.

827{
829 FIXME("STUB:(%p)\n",This);
830 return E_NOTIMPL;
831}
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ KeystrokeMgr_GetPreservedKeyDescription()

static HRESULT WINAPI KeystrokeMgr_GetPreservedKeyDescription ( ITfKeystrokeMgr iface,
REFGUID  rguid,
BSTR pbstrDesc 
)
static

Definition at line 939 of file threadmgr.c.

941{
943 FIXME("STUB:(%p)\n",This);
944 return E_NOTIMPL;
945}

◆ KeystrokeMgr_IsPreservedKey()

static HRESULT WINAPI KeystrokeMgr_IsPreservedKey ( ITfKeystrokeMgr iface,
REFGUID  rguid,
const TF_PRESERVEDKEY pprekey,
BOOL pfRegistered 
)
static

Definition at line 833 of file threadmgr.c.

835{
837 struct list *cursor;
838
839 TRACE("(%p) %s (%x %x) %p\n",This,debugstr_guid(rguid), (pprekey)?pprekey->uVKey:0, (pprekey)?pprekey->uModifiers:0, pfRegistered);
840
841 if (!rguid || !pprekey || !pfRegistered)
842 return E_INVALIDARG;
843
844 LIST_FOR_EACH(cursor, &This->CurrentPreservedKeys)
845 {
847 if (IsEqualGUID(rguid,&key->guid) && pprekey->uVKey == key->prekey.uVKey && pprekey->uModifiers == key->prekey.uModifiers)
848 {
849 *pfRegistered = TRUE;
850 return S_OK;
851 }
852 }
853
854 *pfRegistered = FALSE;
855 return S_FALSE;
856}
Definition: list.h:37
const char cursor[]
Definition: icontest.c:13
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define LIST_FOR_EACH(cursor, list)
Definition: list.h:188
UINT uModifiers
Definition: msctf.idl:168
Definition: copy.c:22

◆ KeystrokeMgr_KeyDown()

static HRESULT WINAPI KeystrokeMgr_KeyDown ( ITfKeystrokeMgr iface,
WPARAM  wParam,
LPARAM  lParam,
BOOL pfEaten 
)
static

Definition at line 809 of file threadmgr.c.

811{
813 FIXME("STUB:(%p)\n",This);
814 return E_NOTIMPL;
815}

◆ KeystrokeMgr_KeyUp()

static HRESULT WINAPI KeystrokeMgr_KeyUp ( ITfKeystrokeMgr iface,
WPARAM  wParam,
LPARAM  lParam,
BOOL pfEaten 
)
static

Definition at line 817 of file threadmgr.c.

819{
821 FIXME("STUB:(%p)\n",This);
822 return E_NOTIMPL;
823}

◆ KeystrokeMgr_PreserveKey()

static HRESULT WINAPI KeystrokeMgr_PreserveKey ( ITfKeystrokeMgr iface,
TfClientId  tid,
REFGUID  rguid,
const TF_PRESERVEDKEY prekey,
const WCHAR pchDesc,
ULONG  cchDesc 
)
static

Definition at line 858 of file threadmgr.c.

861{
863 struct list *cursor;
864 PreservedKey *newkey;
865
866 TRACE("(%p) %x %s (%x,%x) %s\n",This,tid, debugstr_guid(rguid),(prekey)?prekey->uVKey:0,(prekey)?prekey->uModifiers:0,debugstr_wn(pchDesc,cchDesc));
867
868 if (!tid || ! rguid || !prekey || (cchDesc && !pchDesc))
869 return E_INVALIDARG;
870
871 LIST_FOR_EACH(cursor, &This->CurrentPreservedKeys)
872 {
874 if (IsEqualGUID(rguid,&key->guid) && prekey->uVKey == key->prekey.uVKey && prekey->uModifiers == key->prekey.uModifiers)
875 return TF_E_ALREADY_EXISTS;
876 }
877
878 newkey = HeapAlloc(GetProcessHeap(),0,sizeof(PreservedKey));
879 if (!newkey)
880 return E_OUTOFMEMORY;
881
882 newkey->guid = *rguid;
883 newkey->prekey = *prekey;
884 newkey->tid = tid;
885 newkey->description = NULL;
886 if (cchDesc)
887 {
888 newkey->description = HeapAlloc(GetProcessHeap(),0,cchDesc * sizeof(WCHAR));
889 if (!newkey->description)
890 {
891 HeapFree(GetProcessHeap(),0,newkey);
892 return E_OUTOFMEMORY;
893 }
894 memcpy(newkey->description, pchDesc, cchDesc*sizeof(WCHAR));
895 }
896
897 list_add_head(&This->CurrentPreservedKeys,&newkey->entry);
898
899 return S_OK;
900}
static void list_add_head(struct list_entry *head, struct list_entry *entry)
Definition: list.h:76
#define debugstr_wn
Definition: kernel32.h:33
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
struct list entry
Definition: threadmgr.c:42
TF_PRESERVEDKEY prekey
Definition: threadmgr.c:44
LPWSTR description
Definition: threadmgr.c:45
TfClientId tid
Definition: threadmgr.c:46
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ KeystrokeMgr_QueryInterface()

static HRESULT WINAPI KeystrokeMgr_QueryInterface ( ITfKeystrokeMgr iface,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 686 of file threadmgr.c.

687{
689 return ITfThreadMgrEx_QueryInterface(&This->ITfThreadMgrEx_iface, iid, ppvOut);
690}

◆ KeystrokeMgr_Release()

static ULONG WINAPI KeystrokeMgr_Release ( ITfKeystrokeMgr iface)
static

Definition at line 698 of file threadmgr.c.

699{
701 return ITfThreadMgrEx_Release(&This->ITfThreadMgrEx_iface);
702}

◆ KeystrokeMgr_SetPreservedKeyDescription()

static HRESULT WINAPI KeystrokeMgr_SetPreservedKeyDescription ( ITfKeystrokeMgr iface,
REFGUID  rguid,
const WCHAR pchDesc,
ULONG  cchDesc 
)
static

Definition at line 931 of file threadmgr.c.

933{
935 FIXME("STUB:(%p)\n",This);
936 return E_NOTIMPL;
937}

◆ KeystrokeMgr_SimulatePreservedKey()

static HRESULT WINAPI KeystrokeMgr_SimulatePreservedKey ( ITfKeystrokeMgr iface,
ITfContext pic,
REFGUID  rguid,
BOOL pfEaten 
)
static

Definition at line 947 of file threadmgr.c.

949{
951 FIXME("STUB:(%p)\n",This);
952 return E_NOTIMPL;
953}

◆ KeystrokeMgr_TestKeyDown()

static HRESULT WINAPI KeystrokeMgr_TestKeyDown ( ITfKeystrokeMgr iface,
WPARAM  wParam,
LPARAM  lParam,
BOOL pfEaten 
)
static

Definition at line 791 of file threadmgr.c.

793{
795 FIXME("STUB:(%p)\n",This);
796 *pfEaten = FALSE;
797 return S_OK;
798}

◆ KeystrokeMgr_TestKeyUp()

static HRESULT WINAPI KeystrokeMgr_TestKeyUp ( ITfKeystrokeMgr iface,
WPARAM  wParam,
LPARAM  lParam,
BOOL pfEaten 
)
static

Definition at line 800 of file threadmgr.c.

802{
804 FIXME("STUB:(%p)\n",This);
805 *pfEaten = FALSE;
806 return S_OK;
807}

◆ KeystrokeMgr_UnadviseKeyEventSink()

static HRESULT WINAPI KeystrokeMgr_UnadviseKeyEventSink ( ITfKeystrokeMgr iface,
TfClientId  tid 
)
static

Definition at line 744 of file threadmgr.c.

746{
748 CLSID textservice;
750 TRACE("(%p) %x\n",This,tid);
751
752 if (!tid)
753 return E_INVALIDARG;
754
755 textservice = get_textservice_clsid(tid);
756 if (IsEqualCLSID(&GUID_NULL,&textservice))
757 return E_INVALIDARG;
758
759 get_textservice_sink(tid, &IID_ITfKeyEventSink, (IUnknown**)&check);
760
761 if (!check)
763
764 set_textservice_sink(tid, &IID_ITfKeyEventSink, NULL);
765 ITfKeyEventSink_Release(check);
766
767 if (This->foregroundKeyEventSink == check)
768 {
769 ITfKeyEventSink_Release(This->foregroundKeyEventSink);
770 This->foregroundKeyEventSink = NULL;
771 This->foregroundTextService = GUID_NULL;
772 }
773 return S_OK;
774}
#define CONNECT_E_NOCONNECTION
Definition: olectl.h:251

◆ KeystrokeMgr_UnpreserveKey()

static HRESULT WINAPI KeystrokeMgr_UnpreserveKey ( ITfKeystrokeMgr iface,
REFGUID  rguid,
const TF_PRESERVEDKEY pprekey 
)
static

Definition at line 902 of file threadmgr.c.

904{
907 struct list *cursor;
908 TRACE("(%p) %s (%x %x)\n",This,debugstr_guid(rguid),(pprekey)?pprekey->uVKey:0, (pprekey)?pprekey->uModifiers:0);
909
910 if (!pprekey || !rguid)
911 return E_INVALIDARG;
912
913 LIST_FOR_EACH(cursor, &This->CurrentPreservedKeys)
914 {
916 if (IsEqualGUID(rguid,&key->guid) && pprekey->uVKey == key->prekey.uVKey && pprekey->uModifiers == key->prekey.uModifiers)
917 break;
918 key = NULL;
919 }
920
921 if (!key)
923
924 list_remove(&key->entry);
925 HeapFree(GetProcessHeap(),0,key->description);
927
928 return S_OK;
929}
static void list_remove(struct list_entry *entry)
Definition: list.h:90

◆ MessagePump_AddRef()

static ULONG WINAPI MessagePump_AddRef ( ITfMessagePump iface)
static

Definition at line 986 of file threadmgr.c.

987{
989 return ITfThreadMgrEx_AddRef(&This->ITfThreadMgrEx_iface);
990}
static ThreadMgr * impl_from_ITfMessagePump(ITfMessagePump *iface)
Definition: threadmgr.c:128

◆ MessagePump_GetMessageA()

static HRESULT WINAPI MessagePump_GetMessageA ( ITfMessagePump iface,
LPMSG  pMsg,
HWND  hwnd,
UINT  wMsgFilterMin,
UINT  wMsgFilterMax,
BOOL pfResult 
)
static

Definition at line 1008 of file threadmgr.c.

1011{
1012 if (!pfResult)
1013 return E_INVALIDARG;
1014 *pfResult = GetMessageA(pMsg, hwnd, wMsgFilterMin, wMsgFilterMax);
1015 return S_OK;
1016}
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)

◆ MessagePump_GetMessageW()

static HRESULT WINAPI MessagePump_GetMessageW ( ITfMessagePump iface,
LPMSG  pMsg,
HWND  hwnd,
UINT  wMsgFilterMin,
UINT  wMsgFilterMax,
BOOL pfResult 
)
static

Definition at line 1028 of file threadmgr.c.

1031{
1032 if (!pfResult)
1033 return E_INVALIDARG;
1034 *pfResult = GetMessageW(pMsg, hwnd, wMsgFilterMin, wMsgFilterMax);
1035 return S_OK;
1036}
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)

◆ MessagePump_PeekMessageA()

static HRESULT WINAPI MessagePump_PeekMessageA ( ITfMessagePump iface,
LPMSG  pMsg,
HWND  hwnd,
UINT  wMsgFilterMin,
UINT  wMsgFilterMax,
UINT  wRemoveMsg,
BOOL pfResult 
)
static

Definition at line 998 of file threadmgr.c.

1001{
1002 if (!pfResult)
1003 return E_INVALIDARG;
1004 *pfResult = PeekMessageA(pMsg, hwnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg);
1005 return S_OK;
1006}
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)

◆ MessagePump_PeekMessageW()

static HRESULT WINAPI MessagePump_PeekMessageW ( ITfMessagePump iface,
LPMSG  pMsg,
HWND  hwnd,
UINT  wMsgFilterMin,
UINT  wMsgFilterMax,
UINT  wRemoveMsg,
BOOL pfResult 
)
static

Definition at line 1018 of file threadmgr.c.

1021{
1022 if (!pfResult)
1023 return E_INVALIDARG;
1024 *pfResult = PeekMessageW(pMsg, hwnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg);
1025 return S_OK;
1026}
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)

◆ MessagePump_QueryInterface()

static HRESULT WINAPI MessagePump_QueryInterface ( ITfMessagePump iface,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 980 of file threadmgr.c.

981{
983 return ITfThreadMgrEx_QueryInterface(&This->ITfThreadMgrEx_iface, iid, ppvOut);
984}

◆ MessagePump_Release()

static ULONG WINAPI MessagePump_Release ( ITfMessagePump iface)
static

Definition at line 992 of file threadmgr.c.

993{
995 return ITfThreadMgrEx_Release(&This->ITfThreadMgrEx_iface);
996}

◆ SetupWindowsHook()

static HRESULT SetupWindowsHook ( ThreadMgr This)
static

Definition at line 423 of file threadmgr.c.

424{
425 if (!This->focusHook)
426 {
429 if (!This->focusHook)
430 {
431 ERR("Unable to set focus hook\n");
432 return E_FAIL;
433 }
434 return S_OK;
435 }
436 return S_FALSE;
437}
#define ERR(fmt,...)
Definition: debug.h:110
#define E_FAIL
Definition: ddrawi.h:102
static LRESULT CALLBACK ThreadFocusHookProc(int nCode, WPARAM wParam, LPARAM lParam)
Definition: threadmgr.c:387
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459
HHOOK WINAPI SetWindowsHookExW(_In_ int, _In_ HOOKPROC, _In_opt_ HINSTANCE, _In_ DWORD)
#define WH_CBT
Definition: winuser.h:35

Referenced by ThreadMgr_AssociateFocus().

◆ Source_AddRef()

static ULONG WINAPI Source_AddRef ( ITfSource iface)
static

Definition at line 590 of file threadmgr.c.

591{
593 return ITfThreadMgrEx_AddRef(&This->ITfThreadMgrEx_iface);
594}
static ThreadMgr * impl_from_ITfSource(ITfSource *iface)
Definition: threadmgr.c:118

◆ Source_QueryInterface()

static HRESULT WINAPI Source_QueryInterface ( ITfSource iface,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 584 of file threadmgr.c.

585{
587 return ITfThreadMgrEx_QueryInterface(&This->ITfThreadMgrEx_iface, iid, ppvOut);
588}

◆ Source_Release()

static ULONG WINAPI Source_Release ( ITfSource iface)
static

Definition at line 596 of file threadmgr.c.

597{
599 return ITfThreadMgrEx_Release(&This->ITfThreadMgrEx_iface);
600}

◆ ThreadFocusHookProc()

static LRESULT CALLBACK ThreadFocusHookProc ( int  nCode,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 387 of file threadmgr.c.

388{
390
392 if (!This)
393 {
394 ERR("Hook proc but no ThreadMgr for this thread. Serious Error\n");
395 return 0;
396 }
397 if (!This->focusHook)
398 {
399 ERR("Hook proc but no ThreadMgr focus Hook. Serious Error\n");
400 return 0;
401 }
402
403 if (nCode == HCBT_SETFOCUS) /* focus change within our thread */
404 {
405 struct list *cursor;
406
407 LIST_FOR_EACH(cursor, &This->AssociatedFocusWindows)
408 {
410 if (wnd->hwnd == (HWND)wParam)
411 {
412 TRACE("Triggering Associated window focus\n");
413 if (This->focus != wnd->docmgr)
414 ThreadMgr_SetFocus(&This->ITfThreadMgrEx_iface, wnd->docmgr);
415 break;
416 }
417 }
418 }
419
420 return CallNextHookEx(This->focusHook, nCode, wParam, lParam);
421}
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
LPVOID WINAPI TlsGetValue(IN DWORD Index)
Definition: thread.c:1240
DWORD tlsIndex
Definition: msctf.c:72
ITfDocumentMgr * docmgr
Definition: threadmgr.c:59
static HRESULT WINAPI ThreadMgr_SetFocus(ITfThreadMgrEx *iface, ITfDocumentMgr *pdimFocus)
Definition: threadmgr.c:366
#define HCBT_SETFOCUS
Definition: winuser.h:64
LRESULT WINAPI CallNextHookEx(_In_opt_ HHOOK, _In_ int, _In_ WPARAM, _In_ LPARAM)

Referenced by SetupWindowsHook().

◆ ThreadMgr_Activate()

static HRESULT WINAPI ThreadMgr_Activate ( ITfThreadMgrEx iface,
TfClientId id 
)
static

Definition at line 278 of file threadmgr.c.

279{
281
282 TRACE("(%p) %p\n", This, id);
283 return ITfThreadMgrEx_ActivateEx(iface, id, 0);
284}
static ThreadMgr * impl_from_ITfThreadMgrEx(ITfThreadMgrEx *iface)
Definition: threadmgr.c:113

◆ ThreadMgr_ActivateEx()

static HRESULT WINAPI ThreadMgr_ActivateEx ( ITfThreadMgrEx iface,
TfClientId id,
DWORD  flags 
)
static

Definition at line 530 of file threadmgr.c.

531{
533
534 TRACE("(%p) %p, %#x\n", This, id, flags);
535
536 if (!id)
537 return E_INVALIDARG;
538
539 if (flags)
540 FIXME("Unimplemented flags %#x\n", flags);
541
542 if (!processId)
543 {
544 GUID guid;
546 ITfClientId_GetClientId(&This->ITfClientId_iface, &guid, &processId);
547 }
548
550 This->activationCount++;
551 *id = processId;
552 return S_OK;
553}
HRESULT WINAPI CoCreateGuid(GUID *pguid)
Definition: compobj.c:2206
GLbitfield flags
Definition: glext.h:7161
const GUID * guid
HRESULT activate_textservices(ITfThreadMgrEx *tm)
Definition: msctf.c:475
TfClientId processId
Definition: msctf.c:73

◆ ThreadMgr_AddRef()

static ULONG WINAPI ThreadMgr_AddRef ( ITfThreadMgrEx iface)
static

Definition at line 257 of file threadmgr.c.

258{
260 return InterlockedIncrement(&This->refCount);
261}

Referenced by ThreadMgr_Constructor().

◆ ThreadMgr_AssociateFocus()

static HRESULT WINAPI ThreadMgr_AssociateFocus ( ITfThreadMgrEx iface,
HWND  hwnd,
ITfDocumentMgr pdimNew,
ITfDocumentMgr **  ppdimPrev 
)
static

Definition at line 439 of file threadmgr.c.

441{
443 struct list *cursor, *cursor2;
444 AssociatedWindow *wnd;
445
446 TRACE("(%p) %p %p %p\n",This,hwnd,pdimNew,ppdimPrev);
447
448 if (!ppdimPrev)
449 return E_INVALIDARG;
450
451 *ppdimPrev = NULL;
452
453 LIST_FOR_EACH_SAFE(cursor, cursor2, &This->AssociatedFocusWindows)
454 {
456 if (wnd->hwnd == hwnd)
457 {
458 if (wnd->docmgr)
459 ITfDocumentMgr_AddRef(wnd->docmgr);
460 *ppdimPrev = wnd->docmgr;
461 wnd->docmgr = pdimNew;
462 if (GetFocus() == hwnd)
463 ThreadMgr_SetFocus(iface,pdimNew);
464 return S_OK;
465 }
466 }
467
468 wnd = HeapAlloc(GetProcessHeap(),0,sizeof(AssociatedWindow));
469 wnd->hwnd = hwnd;
470 wnd->docmgr = pdimNew;
471 list_add_head(&This->AssociatedFocusWindows,&wnd->entry);
472
473 if (GetFocus() == hwnd)
474 ThreadMgr_SetFocus(iface,pdimNew);
475
477
478 return S_OK;
479}
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list)
Definition: list.h:192
struct list entry
Definition: threadmgr.c:57
static HRESULT SetupWindowsHook(ThreadMgr *This)
Definition: threadmgr.c:423
HWND WINAPI GetFocus(void)
Definition: window.c:1893

◆ ThreadMgr_Constructor()

HRESULT ThreadMgr_Constructor ( IUnknown pUnkOuter,
IUnknown **  ppOut 
)

Definition at line 1342 of file threadmgr.c.

1343{
1344 ThreadMgr *This;
1345 if (pUnkOuter)
1346 return CLASS_E_NOAGGREGATION;
1347
1348 /* Only 1 ThreadMgr is created per thread */
1350 if (This)
1351 {
1352 ThreadMgr_AddRef(&This->ITfThreadMgrEx_iface);
1353 *ppOut = (IUnknown*)&This->ITfThreadMgrEx_iface;
1354 return S_OK;
1355 }
1356
1358 if (This == NULL)
1359 return E_OUTOFMEMORY;
1360
1361 This->ITfThreadMgrEx_iface.lpVtbl = &ThreadMgrExVtbl;
1362 This->ITfSource_iface.lpVtbl = &ThreadMgrSourceVtbl;
1363 This->ITfKeystrokeMgr_iface.lpVtbl = &KeystrokeMgrVtbl;
1364 This->ITfMessagePump_iface.lpVtbl = &MessagePumpVtbl;
1365 This->ITfClientId_iface.lpVtbl = &ClientIdVtbl;
1366 This->ITfThreadMgrEventSink_iface.lpVtbl = &ThreadMgrEventSinkVtbl;
1367 This->ITfUIElementMgr_iface.lpVtbl = &ThreadMgrUIElementMgrVtbl;
1368 This->ITfSourceSingle_iface.lpVtbl = &SourceSingleVtbl;
1369 This->refCount = 1;
1371
1372 CompartmentMgr_Constructor((IUnknown*)&This->ITfThreadMgrEx_iface, &IID_IUnknown, (IUnknown**)&This->CompartmentMgr);
1373
1374 list_init(&This->CurrentPreservedKeys);
1375 list_init(&This->CreatedDocumentMgrs);
1376 list_init(&This->AssociatedFocusWindows);
1377
1378 list_init(&This->ActiveLanguageProfileNotifySink);
1379 list_init(&This->DisplayAttributeNotifySink);
1380 list_init(&This->KeyTraceEventSink);
1381 list_init(&This->PreservedKeyNotifySink);
1382 list_init(&This->ThreadFocusSink);
1383 list_init(&This->ThreadMgrEventSink);
1384 list_init(&This->UIElementSink);
1385 list_init(&This->InputProcessorProfileActivationSink);
1386
1387 TRACE("returning %p\n", This);
1388 *ppOut = (IUnknown *)&This->ITfThreadMgrEx_iface;
1389 return S_OK;
1390}
static void list_init(struct list_entry *head)
Definition: list.h:51
HRESULT CompartmentMgr_Constructor(IUnknown *pUnkOuter, REFIID riid, IUnknown **ppOut)
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
Definition: thread.c:1276
static const ITfSourceVtbl ThreadMgrSourceVtbl
Definition: threadmgr.c:673
static const ITfThreadMgrEventSinkVtbl ThreadMgrEventSinkVtbl
Definition: threadmgr.c:1204
static const ITfUIElementMgrVtbl ThreadMgrUIElementMgrVtbl
Definition: threadmgr.c:1283
static ULONG WINAPI ThreadMgr_AddRef(ITfThreadMgrEx *iface)
Definition: threadmgr.c:257
static const ITfSourceSingleVtbl SourceSingleVtbl
Definition: threadmgr.c:1333
static const ITfThreadMgrExVtbl ThreadMgrExVtbl
Definition: threadmgr.c:563
static const ITfMessagePumpVtbl MessagePumpVtbl
Definition: threadmgr.c:1038
static const ITfClientIdVtbl ClientIdVtbl
Definition: threadmgr.c:1088
static const ITfKeystrokeMgrVtbl KeystrokeMgrVtbl
Definition: threadmgr.c:955
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662

Referenced by TF_CreateThreadMgr().

◆ ThreadMgr_CreateDocumentMgr()

static HRESULT WINAPI ThreadMgr_CreateDocumentMgr ( ITfThreadMgrEx iface,
ITfDocumentMgr **  ppdim 
)
static

Definition at line 311 of file threadmgr.c.

312{
314 DocumentMgrEntry *mgrentry;
315 HRESULT hr;
316
317 TRACE("(%p)\n",iface);
318 mgrentry = HeapAlloc(GetProcessHeap(),0,sizeof(DocumentMgrEntry));
319 if (mgrentry == NULL)
320 return E_OUTOFMEMORY;
321
322 hr = DocumentMgr_Constructor(&This->ITfThreadMgrEventSink_iface, ppdim);
323
324 if (SUCCEEDED(hr))
325 {
326 mgrentry->docmgr = *ppdim;
327 list_add_head(&This->CreatedDocumentMgrs,&mgrentry->entry);
328 }
329 else
330 HeapFree(GetProcessHeap(),0,mgrentry);
331
332 return hr;
333}
HRESULT DocumentMgr_Constructor(ITfThreadMgrEventSink *ThreadMgrSink, ITfDocumentMgr **ppOut)
Definition: documentmgr.c:342
struct list entry
Definition: threadmgr.c:51

◆ ThreadMgr_Deactivate()

static HRESULT WINAPI ThreadMgr_Deactivate ( ITfThreadMgrEx iface)
static

Definition at line 286 of file threadmgr.c.

287{
289 TRACE("(%p)\n",This);
290
291 if (This->activationCount == 0)
292 return E_UNEXPECTED;
293
294 This->activationCount --;
295
296 if (This->activationCount == 0)
297 {
298 if (This->focus)
299 {
300 ITfThreadMgrEventSink_OnSetFocus(&This->ITfThreadMgrEventSink_iface, 0, This->focus);
301 ITfDocumentMgr_Release(This->focus);
302 This->focus = 0;
303 }
304 }
305
307
308 return S_OK;
309}
HRESULT deactivate_textservices(void)
Definition: msctf.c:493
#define E_UNEXPECTED
Definition: winerror.h:2456

◆ ThreadMgr_Destructor()

static void ThreadMgr_Destructor ( ThreadMgr This)
static

Definition at line 158 of file threadmgr.c.

159{
160 struct list *cursor, *cursor2;
161
162 /* unhook right away */
163 if (This->focusHook)
164 UnhookWindowsHookEx(This->focusHook);
165
167 TRACE("destroying %p\n", This);
168 if (This->focus)
169 ITfDocumentMgr_Release(This->focus);
170
171 free_sinks(&This->ActiveLanguageProfileNotifySink);
172 free_sinks(&This->DisplayAttributeNotifySink);
173 free_sinks(&This->KeyTraceEventSink);
174 free_sinks(&This->PreservedKeyNotifySink);
175 free_sinks(&This->ThreadFocusSink);
176 free_sinks(&This->ThreadMgrEventSink);
177 free_sinks(&This->UIElementSink);
178 free_sinks(&This->InputProcessorProfileActivationSink);
179
180 LIST_FOR_EACH_SAFE(cursor, cursor2, &This->CurrentPreservedKeys)
181 {
184 HeapFree(GetProcessHeap(),0,key->description);
186 }
187
188 LIST_FOR_EACH_SAFE(cursor, cursor2, &This->CreatedDocumentMgrs)
189 {
192 FIXME("Left Over ITfDocumentMgr. Should we do something with it?\n");
193 HeapFree(GetProcessHeap(),0,mgr);
194 }
195
196 LIST_FOR_EACH_SAFE(cursor, cursor2, &This->AssociatedFocusWindows)
197 {
200 HeapFree(GetProcessHeap(),0,wnd);
201 }
202
203 CompartmentMgr_Destructor(This->CompartmentMgr);
204
206}
HRESULT CompartmentMgr_Destructor(ITfCompartmentMgr *iface)
void free_sinks(struct list *sink_list)
Definition: msctf.c:324
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)

Referenced by ThreadMgr_Release().

◆ ThreadMgr_EnumDocumentMgrs()

static HRESULT WINAPI ThreadMgr_EnumDocumentMgrs ( ITfThreadMgrEx iface,
IEnumTfDocumentMgrs **  ppEnum 
)
static

Definition at line 335 of file threadmgr.c.

336{
338 TRACE("(%p) %p\n",This,ppEnum);
339
340 if (!ppEnum)
341 return E_INVALIDARG;
342
343 return EnumTfDocumentMgr_Constructor(&This->CreatedDocumentMgrs, ppEnum);
344}

◆ ThreadMgr_EnumFunctionProviders()

static HRESULT WINAPI ThreadMgr_EnumFunctionProviders ( ITfThreadMgrEx iface,
IEnumTfFunctionProviders **  ppEnum 
)
static

Definition at line 500 of file threadmgr.c.

502{
504 FIXME("STUB:(%p)\n",This);
505 return E_NOTIMPL;
506}

◆ ThreadMgr_GetActiveFlags()

static HRESULT WINAPI ThreadMgr_GetActiveFlags ( ITfThreadMgrEx iface,
DWORD flags 
)
static

Definition at line 555 of file threadmgr.c.

556{
558
559 FIXME("STUB:(%p)\n", This);
560 return E_NOTIMPL;
561}

◆ ThreadMgr_GetFocus()

static HRESULT WINAPI ThreadMgr_GetFocus ( ITfThreadMgrEx iface,
ITfDocumentMgr **  ppdimFocus 
)
static

Definition at line 346 of file threadmgr.c.

347{
349 TRACE("(%p)\n",This);
350
351 if (!ppdimFocus)
352 return E_INVALIDARG;
353
354 *ppdimFocus = This->focus;
355
356 TRACE("->%p\n",This->focus);
357
358 if (This->focus == NULL)
359 return S_FALSE;
360
361 ITfDocumentMgr_AddRef(This->focus);
362
363 return S_OK;
364}

◆ ThreadMgr_GetFunctionProvider()

static HRESULT WINAPI ThreadMgr_GetFunctionProvider ( ITfThreadMgrEx iface,
REFCLSID  clsid,
ITfFunctionProvider **  ppFuncProv 
)
static

Definition at line 492 of file threadmgr.c.

494{
496 FIXME("STUB:(%p)\n",This);
497 return E_NOTIMPL;
498}

◆ ThreadMgr_GetGlobalCompartment()

static HRESULT WINAPI ThreadMgr_GetGlobalCompartment ( ITfThreadMgrEx iface,
ITfCompartmentMgr **  ppCompMgr 
)
static

Definition at line 508 of file threadmgr.c.

510{
512 HRESULT hr;
513 TRACE("(%p) %p\n",This, ppCompMgr);
514
515 if (!ppCompMgr)
516 return E_INVALIDARG;
517
519 {
520 hr = CompartmentMgr_Constructor(NULL,&IID_ITfCompartmentMgr,(IUnknown**)&globalCompartmentMgr);
521 if (FAILED(hr))
522 return hr;
523 }
524
525 ITfCompartmentMgr_AddRef(globalCompartmentMgr);
526 *ppCompMgr = globalCompartmentMgr;
527 return S_OK;
528}
ITfCompartmentMgr * globalCompartmentMgr
Definition: msctf.c:74

◆ ThreadMgr_IsThreadFocus()

static HRESULT WINAPI ThreadMgr_IsThreadFocus ( ITfThreadMgrEx iface,
BOOL pfThreadFocus 
)
static

Definition at line 481 of file threadmgr.c.

482{
484 HWND focus;
485
486 TRACE("(%p) %p\n",This,pfThreadFocus);
487 focus = GetFocus();
488 *pfThreadFocus = (focus == NULL);
489 return S_OK;
490}

◆ ThreadMgr_OnDocumentMgrDestruction()

void ThreadMgr_OnDocumentMgrDestruction ( ITfThreadMgr iface,
ITfDocumentMgr mgr 
)

Definition at line 1537 of file threadmgr.c.

1538{
1540 struct list *cursor;
1541 LIST_FOR_EACH(cursor, &This->CreatedDocumentMgrs)
1542 {
1544 if (mgrentry->docmgr == mgr)
1545 {
1547 HeapFree(GetProcessHeap(),0,mgrentry);
1548 return;
1549 }
1550 }
1551 FIXME("ITfDocumentMgr %p not found in this thread\n",mgr);
1552}

Referenced by DocumentMgr_Destructor().

◆ ThreadMgr_QueryInterface()

static HRESULT WINAPI ThreadMgr_QueryInterface ( ITfThreadMgrEx iface,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 208 of file threadmgr.c.

209{
211 *ppvOut = NULL;
212
213 if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfThreadMgr)
214 || IsEqualIID(iid, &IID_ITfThreadMgrEx))
215 {
216 *ppvOut = &This->ITfThreadMgrEx_iface;
217 }
218 else if (IsEqualIID(iid, &IID_ITfSource))
219 {
220 *ppvOut = &This->ITfSource_iface;
221 }
222 else if (IsEqualIID(iid, &IID_ITfKeystrokeMgr))
223 {
224 *ppvOut = &This->ITfKeystrokeMgr_iface;
225 }
226 else if (IsEqualIID(iid, &IID_ITfMessagePump))
227 {
228 *ppvOut = &This->ITfMessagePump_iface;
229 }
230 else if (IsEqualIID(iid, &IID_ITfClientId))
231 {
232 *ppvOut = &This->ITfClientId_iface;
233 }
234 else if (IsEqualIID(iid, &IID_ITfCompartmentMgr))
235 {
236 *ppvOut = This->CompartmentMgr;
237 }
238 else if (IsEqualIID(iid, &IID_ITfUIElementMgr))
239 {
240 *ppvOut = &This->ITfUIElementMgr_iface;
241 }
242 else if (IsEqualIID(iid, &IID_ITfSourceSingle))
243 {
244 *ppvOut = &This->ITfSourceSingle_iface;
245 }
246
247 if (*ppvOut)
248 {
249 ITfThreadMgrEx_AddRef(iface);
250 return S_OK;
251 }
252
253 WARN("unsupported interface: %s\n", debugstr_guid(iid));
254 return E_NOINTERFACE;
255}

◆ ThreadMgr_Release()

static ULONG WINAPI ThreadMgr_Release ( ITfThreadMgrEx iface)
static

Definition at line 263 of file threadmgr.c.

264{
266 ULONG ret;
267
268 ret = InterlockedDecrement(&This->refCount);
269 if (ret == 0)
271 return ret;
272}
static void ThreadMgr_Destructor(ThreadMgr *This)
Definition: threadmgr.c:158

◆ ThreadMgr_SetFocus()

static HRESULT WINAPI ThreadMgr_SetFocus ( ITfThreadMgrEx iface,
ITfDocumentMgr pdimFocus 
)
static

Definition at line 366 of file threadmgr.c.

367{
370
371 TRACE("(%p) %p\n",This,pdimFocus);
372
373 if (!pdimFocus)
374 check = NULL;
375 else if (FAILED(ITfDocumentMgr_QueryInterface(pdimFocus,&IID_ITfDocumentMgr,(LPVOID*) &check)))
376 return E_INVALIDARG;
377
378 ITfThreadMgrEventSink_OnSetFocus(&This->ITfThreadMgrEventSink_iface, check, This->focus);
379
380 if (This->focus)
381 ITfDocumentMgr_Release(This->focus);
382
383 This->focus = check;
384 return S_OK;
385}

Referenced by ThreadFocusHookProc(), and ThreadMgr_AssociateFocus().

◆ ThreadMgrEventSink_AddRef()

static ULONG WINAPI ThreadMgrEventSink_AddRef ( ITfThreadMgrEventSink iface)
static

Definition at line 1105 of file threadmgr.c.

1106{
1108 return ITfThreadMgrEx_AddRef(&This->ITfThreadMgrEx_iface);
1109}
static ThreadMgr * impl_from_ITfThreadMgrEventSink(ITfThreadMgrEventSink *iface)
Definition: threadmgr.c:138

◆ ThreadMgrEventSink_OnInitDocumentMgr()

static HRESULT WINAPI ThreadMgrEventSink_OnInitDocumentMgr ( ITfThreadMgrEventSink iface,
ITfDocumentMgr pdim 
)
static

Definition at line 1118 of file threadmgr.c.

1120{
1123 struct list *cursor;
1124
1125 TRACE("(%p) %p\n",This,pdim);
1126
1127 SINK_FOR_EACH(cursor, &This->ThreadMgrEventSink, ITfThreadMgrEventSink, sink)
1128 {
1129 ITfThreadMgrEventSink_OnInitDocumentMgr(sink, pdim);
1130 }
1131
1132 return S_OK;
1133}
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
#define SINK_FOR_EACH(cursor, list, type, elem)

◆ ThreadMgrEventSink_OnPopContext()

static HRESULT WINAPI ThreadMgrEventSink_OnPopContext ( ITfThreadMgrEventSink iface,
ITfContext pic 
)
static

Definition at line 1187 of file threadmgr.c.

1189{
1192 struct list *cursor;
1193
1194 TRACE("(%p) %p\n",This,pic);
1195
1196 SINK_FOR_EACH(cursor, &This->ThreadMgrEventSink, ITfThreadMgrEventSink, sink)
1197 {
1198 ITfThreadMgrEventSink_OnPopContext(sink, pic);
1199 }
1200
1201 return S_OK;
1202}

◆ ThreadMgrEventSink_OnPushContext()

static HRESULT WINAPI ThreadMgrEventSink_OnPushContext ( ITfThreadMgrEventSink iface,
ITfContext pic 
)
static

Definition at line 1170 of file threadmgr.c.

1172{
1175 struct list *cursor;
1176
1177 TRACE("(%p) %p\n",This,pic);
1178
1179 SINK_FOR_EACH(cursor, &This->ThreadMgrEventSink, ITfThreadMgrEventSink, sink)
1180 {
1181 ITfThreadMgrEventSink_OnPushContext(sink, pic);
1182 }
1183
1184 return S_OK;
1185}

◆ ThreadMgrEventSink_OnSetFocus()

static HRESULT WINAPI ThreadMgrEventSink_OnSetFocus ( ITfThreadMgrEventSink iface,
ITfDocumentMgr pdimFocus,
ITfDocumentMgr pdimPrevFocus 
)
static

Definition at line 1152 of file threadmgr.c.

1155{
1158 struct list *cursor;
1159
1160 TRACE("(%p) %p %p\n",This,pdimFocus, pdimPrevFocus);
1161
1162 SINK_FOR_EACH(cursor, &This->ThreadMgrEventSink, ITfThreadMgrEventSink, sink)
1163 {
1164 ITfThreadMgrEventSink_OnSetFocus(sink, pdimFocus, pdimPrevFocus);
1165 }
1166
1167 return S_OK;
1168}

◆ ThreadMgrEventSink_OnUninitDocumentMgr()

static HRESULT WINAPI ThreadMgrEventSink_OnUninitDocumentMgr ( ITfThreadMgrEventSink iface,
ITfDocumentMgr pdim 
)
static

Definition at line 1135 of file threadmgr.c.

1137{
1140 struct list *cursor;
1141
1142 TRACE("(%p) %p\n",This,pdim);
1143
1144 SINK_FOR_EACH(cursor, &This->ThreadMgrEventSink, ITfThreadMgrEventSink, sink)
1145 {
1146 ITfThreadMgrEventSink_OnUninitDocumentMgr(sink, pdim);
1147 }
1148
1149 return S_OK;
1150}

◆ ThreadMgrEventSink_QueryInterface()

static HRESULT WINAPI ThreadMgrEventSink_QueryInterface ( ITfThreadMgrEventSink iface,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 1099 of file threadmgr.c.

1100{
1102 return ITfThreadMgrEx_QueryInterface(&This->ITfThreadMgrEx_iface, iid, ppvOut);
1103}

◆ ThreadMgrEventSink_Release()

static ULONG WINAPI ThreadMgrEventSink_Release ( ITfThreadMgrEventSink iface)
static

Definition at line 1111 of file threadmgr.c.

1112{
1114 return ITfThreadMgrEx_Release(&This->ITfThreadMgrEx_iface);
1115}

◆ ThreadMgrSource_AdviseSink()

static HRESULT WINAPI ThreadMgrSource_AdviseSink ( ITfSource iface,
REFIID  riid,
IUnknown punk,
DWORD pdwCookie 
)
static

Definition at line 605 of file threadmgr.c.

607{
609
610 TRACE("(%p) %s %p %p\n",This,debugstr_guid(riid),punk,pdwCookie);
611
612 if (!riid || !punk || !pdwCookie)
613 return E_INVALIDARG;
614
615 if (IsEqualIID(riid, &IID_ITfThreadMgrEventSink))
616 return advise_sink(&This->ThreadMgrEventSink, &IID_ITfThreadMgrEventSink, COOKIE_MAGIC_TMSINK, punk, pdwCookie);
617
618 if (IsEqualIID(riid, &IID_ITfThreadFocusSink))
619 {
620 WARN("semi-stub for ITfThreadFocusSink: sink won't be used.\n");
621 return advise_sink(&This->ThreadFocusSink, &IID_ITfThreadFocusSink, COOKIE_MAGIC_THREADFOCUSSINK, punk, pdwCookie);
622 }
623
624 if (IsEqualIID(riid, &IID_ITfActiveLanguageProfileNotifySink))
625 {
626 WARN("semi-stub for ITfActiveLanguageProfileNotifySink: sink won't be used.\n");
627 return advise_sink(&This->ActiveLanguageProfileNotifySink, &IID_ITfActiveLanguageProfileNotifySink,
628 COOKIE_MAGIC_ACTIVELANGSINK, punk, pdwCookie);
629 }
630
631 if (IsEqualIID(riid, &IID_ITfKeyTraceEventSink))
632 {
633 WARN("semi-stub for ITfKeyTraceEventSink: sink won't be used.\n");
634 return advise_sink(&This->KeyTraceEventSink, &IID_ITfKeyTraceEventSink,
635 COOKIE_MAGIC_KEYTRACESINK, punk, pdwCookie);
636 }
637
638 if (IsEqualIID(riid, &IID_ITfUIElementSink))
639 {
640 WARN("semi-stub for ITfUIElementSink: sink won't be used.\n");
641 return advise_sink(&This->UIElementSink, &IID_ITfUIElementSink,
642 COOKIE_MAGIC_UIELEMENTSINK, punk, pdwCookie);
643 }
644
645 if (IsEqualIID(riid, &IID_ITfInputProcessorProfileActivationSink))
646 {
647 WARN("semi-stub for ITfInputProcessorProfileActivationSink: sink won't be used.\n");
648 return advise_sink(&This->InputProcessorProfileActivationSink, &IID_ITfInputProcessorProfileActivationSink,
650 }
651
652 FIXME("(%p) Unhandled Sink: %s\n",This,debugstr_guid(riid));
653 return E_NOTIMPL;
654}
REFIID riid
Definition: atlbase.h:39
HRESULT advise_sink(struct list *sink_list, REFIID riid, DWORD cookie_magic, IUnknown *unk, DWORD *cookie)
Definition: msctf.c:285
#define COOKIE_MAGIC_INPUTPROCESSORPROFILEACTIVATIONSINK
#define COOKIE_MAGIC_KEYTRACESINK
#define COOKIE_MAGIC_UIELEMENTSINK
#define COOKIE_MAGIC_THREADFOCUSSINK
#define COOKIE_MAGIC_TMSINK
#define COOKIE_MAGIC_ACTIVELANGSINK

◆ ThreadMgrSource_UnadviseSink()

static HRESULT WINAPI ThreadMgrSource_UnadviseSink ( ITfSource iface,
DWORD  pdwCookie 
)
static

Definition at line 656 of file threadmgr.c.

657{
659 DWORD magic;
660
661 TRACE("(%p) %x\n",This,pdwCookie);
662
663 magic = get_Cookie_magic(pdwCookie);
668 return E_INVALIDARG;
669
670 return unadvise_sink(pdwCookie);
671}
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD get_Cookie_magic(DWORD id)
Definition: msctf.c:233
HRESULT unadvise_sink(DWORD cookie)
Definition: msctf.c:312
u32_t magic(void)

◆ ThreadMgrSourceSingle_AddRef()

static ULONG WINAPI ThreadMgrSourceSingle_AddRef ( ITfSourceSingle iface)
static

Definition at line 1305 of file threadmgr.c.

1306{
1308 return ITfThreadMgrEx_AddRef(&This->ITfThreadMgrEx_iface);
1309}
static ThreadMgr * impl_from_ITfSourceSingle(ITfSourceSingle *iface)
Definition: threadmgr.c:148

◆ ThreadMgrSourceSingle_AdviseSingleSink()

static HRESULT WINAPI ThreadMgrSourceSingle_AdviseSingleSink ( ITfSourceSingle iface,
TfClientId  tid,
REFIID  riid,
IUnknown punk 
)
static

Definition at line 1317 of file threadmgr.c.

1319{
1321 FIXME("STUB:(%p) %i %s %p\n",This, tid, debugstr_guid(riid),punk);
1322 return E_NOTIMPL;
1323}

◆ ThreadMgrSourceSingle_QueryInterface()

static HRESULT WINAPI ThreadMgrSourceSingle_QueryInterface ( ITfSourceSingle iface,
REFIID  iid,
LPVOID ppvOut 
)
static

Definition at line 1299 of file threadmgr.c.

1300{
1302 return ITfThreadMgrEx_QueryInterface(&This->ITfThreadMgrEx_iface, iid, ppvOut);
1303}

◆ ThreadMgrSourceSingle_Release()

static ULONG WINAPI ThreadMgrSourceSingle_Release ( ITfSourceSingle iface)
static

Definition at line 1311 of file threadmgr.c.

1312{
1314 return ITfThreadMgrEx_Release(&This->ITfThreadMgrEx_iface);
1315}

◆ ThreadMgrSourceSingle_UnadviseSingleSink()

static HRESULT WINAPI ThreadMgrSourceSingle_UnadviseSingleSink ( ITfSourceSingle iface,
TfClientId  tid,
REFIID  riid 
)
static

Definition at line 1325 of file threadmgr.c.

1327{
1329 FIXME("STUB:(%p) %i %s\n",This, tid, debugstr_guid(riid));
1330 return E_NOTIMPL;
1331}

◆ UIElementMgr_AddRef()

static ULONG WINAPI UIElementMgr_AddRef ( ITfUIElementMgr iface)
static

Definition at line 1226 of file threadmgr.c.

1227{
1229
1230 return ITfThreadMgrEx_AddRef(&This->ITfThreadMgrEx_iface);
1231}
static ThreadMgr * impl_from_ITfUIElementMgr(ITfUIElementMgr *iface)
Definition: threadmgr.c:143

◆ UIElementMgr_BeginUIElement()

static HRESULT WINAPI UIElementMgr_BeginUIElement ( ITfUIElementMgr iface,
ITfUIElement element,
BOOL show,
DWORD id 
)
static

Definition at line 1240 of file threadmgr.c.

1242{
1244
1245 FIXME("STUB:(%p)\n", This);
1246 return E_NOTIMPL;
1247}

◆ UIElementMgr_EndUIElement()

static HRESULT WINAPI UIElementMgr_EndUIElement ( ITfUIElementMgr iface,
DWORD  id 
)
static

Definition at line 1257 of file threadmgr.c.

1258{
1260
1261 FIXME("STUB:(%p)\n", This);
1262 return E_NOTIMPL;
1263}

◆ UIElementMgr_EnumUIElements()

static HRESULT WINAPI UIElementMgr_EnumUIElements ( ITfUIElementMgr iface,
IEnumTfUIElements **  enum_elements 
)
static

Definition at line 1274 of file threadmgr.c.

1276{
1278
1279 FIXME("STUB:(%p)\n", This);
1280 return E_NOTIMPL;
1281}

◆ UIElementMgr_GetUIElement()

static HRESULT WINAPI UIElementMgr_GetUIElement ( ITfUIElementMgr iface,
DWORD  id,
ITfUIElement **  element 
)
static

Definition at line 1265 of file threadmgr.c.

1267{
1269
1270 FIXME("STUB:(%p)\n", This);
1271 return E_NOTIMPL;
1272}

◆ UIElementMgr_QueryInterface()

static HRESULT WINAPI UIElementMgr_QueryInterface ( ITfUIElementMgr iface,
REFIID  iid,
void **  ppvOut 
)
static

Definition at line 1219 of file threadmgr.c.

1220{
1222
1223 return ITfThreadMgrEx_QueryInterface(&This->ITfThreadMgrEx_iface, iid, ppvOut);
1224}

◆ UIElementMgr_Release()

static ULONG WINAPI UIElementMgr_Release ( ITfUIElementMgr iface)
static

Definition at line 1233 of file threadmgr.c.

1234{
1236
1237 return ITfThreadMgrEx_Release(&This->ITfThreadMgrEx_iface);
1238}

◆ UIElementMgr_UpdateUIElement()

static HRESULT WINAPI UIElementMgr_UpdateUIElement ( ITfUIElementMgr iface,
DWORD  id 
)
static

Definition at line 1249 of file threadmgr.c.

1250{
1252
1253 FIXME("STUB:(%p)\n", This);
1254 return E_NOTIMPL;
1255}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( msctf  )

Variable Documentation

◆ ClientIdVtbl

const ITfClientIdVtbl ClientIdVtbl
static
Initial value:
=
{
}
static ULONG WINAPI ClientId_AddRef(ITfClientId *iface)
Definition: threadmgr.c:1059
static HRESULT WINAPI ClientId_QueryInterface(ITfClientId *iface, REFIID iid, LPVOID *ppvOut)
Definition: threadmgr.c:1053
static ULONG WINAPI ClientId_Release(ITfClientId *iface)
Definition: threadmgr.c:1065
static HRESULT WINAPI ClientId_GetClientId(ITfClientId *iface, REFCLSID rclsid, TfClientId *ptid)
Definition: threadmgr.c:1071

Definition at line 1088 of file threadmgr.c.

Referenced by ThreadMgr_Constructor().

◆ EnumTfDocumentMgrsVtbl

const IEnumTfDocumentMgrsVtbl EnumTfDocumentMgrsVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI EnumTfDocumentMgr_Next(IEnumTfDocumentMgrs *iface, ULONG ulCount, ITfDocumentMgr **rgDocumentMgr, ULONG *pcFetched)
Definition: threadmgr.c:1438
static HRESULT WINAPI EnumTfDocumentMgr_QueryInterface(IEnumTfDocumentMgrs *iface, REFIID iid, LPVOID *ppvOut)
Definition: threadmgr.c:1401
static HRESULT WINAPI EnumTfDocumentMgr_Reset(IEnumTfDocumentMgrs *iface)
Definition: threadmgr.c:1481
static HRESULT WINAPI EnumTfDocumentMgr_Skip(IEnumTfDocumentMgrs *iface, ULONG celt)
Definition: threadmgr.c:1470
static ULONG WINAPI EnumTfDocumentMgr_Release(IEnumTfDocumentMgrs *iface)
Definition: threadmgr.c:1427
static HRESULT WINAPI EnumTfDocumentMgr_Clone(IEnumTfDocumentMgrs *iface, IEnumTfDocumentMgrs **ppenum)
Definition: threadmgr.c:1489
static ULONG WINAPI EnumTfDocumentMgr_AddRef(IEnumTfDocumentMgrs *iface)
Definition: threadmgr.c:1421

Definition at line 1508 of file threadmgr.c.

Referenced by EnumTfDocumentMgr_Constructor().

◆ KeystrokeMgrVtbl

const ITfKeystrokeMgrVtbl KeystrokeMgrVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI KeystrokeMgr_TestKeyUp(ITfKeystrokeMgr *iface, WPARAM wParam, LPARAM lParam, BOOL *pfEaten)
Definition: threadmgr.c:800
static HRESULT WINAPI KeystrokeMgr_QueryInterface(ITfKeystrokeMgr *iface, REFIID iid, LPVOID *ppvOut)
Definition: threadmgr.c:686
static HRESULT WINAPI KeystrokeMgr_KeyUp(ITfKeystrokeMgr *iface, WPARAM wParam, LPARAM lParam, BOOL *pfEaten)
Definition: threadmgr.c:817
static HRESULT WINAPI KeystrokeMgr_GetPreservedKey(ITfKeystrokeMgr *iface, ITfContext *pic, const TF_PRESERVEDKEY *pprekey, GUID *pguid)
Definition: threadmgr.c:825
static HRESULT WINAPI KeystrokeMgr_GetForeground(ITfKeystrokeMgr *iface, CLSID *pclsid)
Definition: threadmgr.c:776
static HRESULT WINAPI KeystrokeMgr_IsPreservedKey(ITfKeystrokeMgr *iface, REFGUID rguid, const TF_PRESERVEDKEY *pprekey, BOOL *pfRegistered)
Definition: threadmgr.c:833
static HRESULT WINAPI KeystrokeMgr_AdviseKeyEventSink(ITfKeystrokeMgr *iface, TfClientId tid, ITfKeyEventSink *pSink, BOOL fForeground)
Definition: threadmgr.c:704
static HRESULT WINAPI KeystrokeMgr_UnpreserveKey(ITfKeystrokeMgr *iface, REFGUID rguid, const TF_PRESERVEDKEY *pprekey)
Definition: threadmgr.c:902
static HRESULT WINAPI KeystrokeMgr_PreserveKey(ITfKeystrokeMgr *iface, TfClientId tid, REFGUID rguid, const TF_PRESERVEDKEY *prekey, const WCHAR *pchDesc, ULONG cchDesc)
Definition: threadmgr.c:858
static HRESULT WINAPI KeystrokeMgr_GetPreservedKeyDescription(ITfKeystrokeMgr *iface, REFGUID rguid, BSTR *pbstrDesc)
Definition: threadmgr.c:939
static ULONG WINAPI KeystrokeMgr_AddRef(ITfKeystrokeMgr *iface)
Definition: threadmgr.c:692
static HRESULT WINAPI KeystrokeMgr_UnadviseKeyEventSink(ITfKeystrokeMgr *iface, TfClientId tid)
Definition: threadmgr.c:744
static HRESULT WINAPI KeystrokeMgr_TestKeyDown(ITfKeystrokeMgr *iface, WPARAM wParam, LPARAM lParam, BOOL *pfEaten)
Definition: threadmgr.c:791
static HRESULT WINAPI KeystrokeMgr_SetPreservedKeyDescription(ITfKeystrokeMgr *iface, REFGUID rguid, const WCHAR *pchDesc, ULONG cchDesc)
Definition: threadmgr.c:931
static HRESULT WINAPI KeystrokeMgr_KeyDown(ITfKeystrokeMgr *iface, WPARAM wParam, LPARAM lParam, BOOL *pfEaten)
Definition: threadmgr.c:809
static HRESULT WINAPI KeystrokeMgr_SimulatePreservedKey(ITfKeystrokeMgr *iface, ITfContext *pic, REFGUID rguid, BOOL *pfEaten)
Definition: threadmgr.c:947
static ULONG WINAPI KeystrokeMgr_Release(ITfKeystrokeMgr *iface)
Definition: threadmgr.c:698

Definition at line 955 of file threadmgr.c.

Referenced by ThreadMgr_Constructor().

◆ MessagePumpVtbl

const ITfMessagePumpVtbl MessagePumpVtbl
static
Initial value:
=
{
}
static ULONG WINAPI MessagePump_Release(ITfMessagePump *iface)
Definition: threadmgr.c:992
static HRESULT WINAPI MessagePump_QueryInterface(ITfMessagePump *iface, REFIID iid, LPVOID *ppvOut)
Definition: threadmgr.c:980
static HRESULT WINAPI MessagePump_PeekMessageA(ITfMessagePump *iface, LPMSG pMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg, BOOL *pfResult)
Definition: threadmgr.c:998
static HRESULT WINAPI MessagePump_GetMessageW(ITfMessagePump *iface, LPMSG pMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, BOOL *pfResult)
Definition: threadmgr.c:1028
static HRESULT WINAPI MessagePump_PeekMessageW(ITfMessagePump *iface, LPMSG pMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg, BOOL *pfResult)
Definition: threadmgr.c:1018
static ULONG WINAPI MessagePump_AddRef(ITfMessagePump *iface)
Definition: threadmgr.c:986
static HRESULT WINAPI MessagePump_GetMessageA(ITfMessagePump *iface, LPMSG pMsg, HWND hwnd, UINT wMsgFilterMin, UINT wMsgFilterMax, BOOL *pfResult)
Definition: threadmgr.c:1008

Definition at line 1038 of file threadmgr.c.

Referenced by ThreadMgr_Constructor().

◆ SourceSingleVtbl

const ITfSourceSingleVtbl SourceSingleVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI ThreadMgrSourceSingle_QueryInterface(ITfSourceSingle *iface, REFIID iid, LPVOID *ppvOut)
Definition: threadmgr.c:1299
static ULONG WINAPI ThreadMgrSourceSingle_Release(ITfSourceSingle *iface)
Definition: threadmgr.c:1311
static HRESULT WINAPI ThreadMgrSourceSingle_AdviseSingleSink(ITfSourceSingle *iface, TfClientId tid, REFIID riid, IUnknown *punk)
Definition: threadmgr.c:1317
static ULONG WINAPI ThreadMgrSourceSingle_AddRef(ITfSourceSingle *iface)
Definition: threadmgr.c:1305
static HRESULT WINAPI ThreadMgrSourceSingle_UnadviseSingleSink(ITfSourceSingle *iface, TfClientId tid, REFIID riid)
Definition: threadmgr.c:1325

Definition at line 1333 of file threadmgr.c.

Referenced by ThreadMgr_Constructor().

◆ ThreadMgrEventSinkVtbl

const ITfThreadMgrEventSinkVtbl ThreadMgrEventSinkVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI ThreadMgrEventSink_OnPushContext(ITfThreadMgrEventSink *iface, ITfContext *pic)
Definition: threadmgr.c:1170
static HRESULT WINAPI ThreadMgrEventSink_OnSetFocus(ITfThreadMgrEventSink *iface, ITfDocumentMgr *pdimFocus, ITfDocumentMgr *pdimPrevFocus)
Definition: threadmgr.c:1152
static ULONG WINAPI ThreadMgrEventSink_Release(ITfThreadMgrEventSink *iface)
Definition: threadmgr.c:1111
static ULONG WINAPI ThreadMgrEventSink_AddRef(ITfThreadMgrEventSink *iface)
Definition: threadmgr.c:1105
static HRESULT WINAPI ThreadMgrEventSink_OnPopContext(ITfThreadMgrEventSink *iface, ITfContext *pic)
Definition: threadmgr.c:1187
static HRESULT WINAPI ThreadMgrEventSink_OnInitDocumentMgr(ITfThreadMgrEventSink *iface, ITfDocumentMgr *pdim)
Definition: threadmgr.c:1118
static HRESULT WINAPI ThreadMgrEventSink_OnUninitDocumentMgr(ITfThreadMgrEventSink *iface, ITfDocumentMgr *pdim)
Definition: threadmgr.c:1135
static HRESULT WINAPI ThreadMgrEventSink_QueryInterface(ITfThreadMgrEventSink *iface, REFIID iid, LPVOID *ppvOut)
Definition: threadmgr.c:1099

Definition at line 1204 of file threadmgr.c.

Referenced by ThreadMgr_Constructor().

◆ ThreadMgrExVtbl

const ITfThreadMgrExVtbl ThreadMgrExVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI ThreadMgr_EnumFunctionProviders(ITfThreadMgrEx *iface, IEnumTfFunctionProviders **ppEnum)
Definition: threadmgr.c:500
static HRESULT WINAPI ThreadMgr_Deactivate(ITfThreadMgrEx *iface)
Definition: threadmgr.c:286
static HRESULT WINAPI ThreadMgr_Activate(ITfThreadMgrEx *iface, TfClientId *id)
Definition: threadmgr.c:278
static HRESULT WINAPI ThreadMgr_GetFocus(ITfThreadMgrEx *iface, ITfDocumentMgr **ppdimFocus)
Definition: threadmgr.c:346
static HRESULT WINAPI ThreadMgr_QueryInterface(ITfThreadMgrEx *iface, REFIID iid, LPVOID *ppvOut)
Definition: threadmgr.c:208
static HRESULT WINAPI ThreadMgr_ActivateEx(ITfThreadMgrEx *iface, TfClientId *id, DWORD flags)
Definition: threadmgr.c:530
static HRESULT WINAPI ThreadMgr_GetFunctionProvider(ITfThreadMgrEx *iface, REFCLSID clsid, ITfFunctionProvider **ppFuncProv)
Definition: threadmgr.c:492
static HRESULT WINAPI ThreadMgr_IsThreadFocus(ITfThreadMgrEx *iface, BOOL *pfThreadFocus)
Definition: threadmgr.c:481
static HRESULT WINAPI ThreadMgr_AssociateFocus(ITfThreadMgrEx *iface, HWND hwnd, ITfDocumentMgr *pdimNew, ITfDocumentMgr **ppdimPrev)
Definition: threadmgr.c:439
static HRESULT WINAPI ThreadMgr_GetActiveFlags(ITfThreadMgrEx *iface, DWORD *flags)
Definition: threadmgr.c:555
static HRESULT WINAPI ThreadMgr_EnumDocumentMgrs(ITfThreadMgrEx *iface, IEnumTfDocumentMgrs **ppEnum)
Definition: threadmgr.c:335
static HRESULT WINAPI ThreadMgr_GetGlobalCompartment(ITfThreadMgrEx *iface, ITfCompartmentMgr **ppCompMgr)
Definition: threadmgr.c:508
static HRESULT WINAPI ThreadMgr_CreateDocumentMgr(ITfThreadMgrEx *iface, ITfDocumentMgr **ppdim)
Definition: threadmgr.c:311
static ULONG WINAPI ThreadMgr_Release(ITfThreadMgrEx *iface)
Definition: threadmgr.c:263

Definition at line 563 of file threadmgr.c.

Referenced by ThreadMgr_Constructor().

◆ ThreadMgrSourceVtbl

const ITfSourceVtbl ThreadMgrSourceVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI Source_QueryInterface(ITfSource *iface, REFIID iid, LPVOID *ppvOut)
Definition: threadmgr.c:584
static ULONG WINAPI Source_AddRef(ITfSource *iface)
Definition: threadmgr.c:590
static HRESULT WINAPI ThreadMgrSource_AdviseSink(ITfSource *iface, REFIID riid, IUnknown *punk, DWORD *pdwCookie)
Definition: threadmgr.c:605
static HRESULT WINAPI ThreadMgrSource_UnadviseSink(ITfSource *iface, DWORD pdwCookie)
Definition: threadmgr.c:656
static ULONG WINAPI Source_Release(ITfSource *iface)
Definition: threadmgr.c:596

Definition at line 673 of file threadmgr.c.

Referenced by ThreadMgr_Constructor().

◆ ThreadMgrUIElementMgrVtbl

const ITfUIElementMgrVtbl ThreadMgrUIElementMgrVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI UIElementMgr_GetUIElement(ITfUIElementMgr *iface, DWORD id, ITfUIElement **element)
Definition: threadmgr.c:1265
static HRESULT WINAPI UIElementMgr_EnumUIElements(ITfUIElementMgr *iface, IEnumTfUIElements **enum_elements)
Definition: threadmgr.c:1274
static ULONG WINAPI UIElementMgr_AddRef(ITfUIElementMgr *iface)
Definition: threadmgr.c:1226
static HRESULT WINAPI UIElementMgr_QueryInterface(ITfUIElementMgr *iface, REFIID iid, void **ppvOut)
Definition: threadmgr.c:1219
static HRESULT WINAPI UIElementMgr_BeginUIElement(ITfUIElementMgr *iface, ITfUIElement *element, BOOL *show, DWORD *id)
Definition: threadmgr.c:1240
static ULONG WINAPI UIElementMgr_Release(ITfUIElementMgr *iface)
Definition: threadmgr.c:1233
static HRESULT WINAPI UIElementMgr_UpdateUIElement(ITfUIElementMgr *iface, DWORD id)
Definition: threadmgr.c:1249
static HRESULT WINAPI UIElementMgr_EndUIElement(ITfUIElementMgr *iface, DWORD id)
Definition: threadmgr.c:1257

Definition at line 1283 of file threadmgr.c.

Referenced by ThreadMgr_Constructor().