279 , m_CompartmentMgr(
NULL)
281 , m_activationCount(0)
282 , m_foregroundKeyEventSink(
NULL)
312 TRACE(
"destroying %p\n",
this);
338 FIXME(
"Left Over ITfDocumentMgr. Should we do something with it?\n");
357 if (iid ==
IID_IUnknown || iid == IID_ITfThreadMgr || iid == IID_ITfThreadMgrEx)
359 else if (iid == IID_ITfSource)
361 else if (iid == IID_ITfKeystrokeMgr)
363 else if (iid == IID_ITfMessagePump)
365 else if (iid == IID_ITfClientId)
367 else if (iid == IID_ITfCompartmentMgr)
369 else if (iid == IID_ITfUIElementMgr)
371 else if (iid == IID_ITfSourceSingle)
387 return ::InterlockedIncrement(&
m_cRefs);
400 TRACE(
"(%p) %p\n",
this, ptid);
406 TRACE(
"(%p)\n",
this);
429 TRACE(
"(%p)\n",
this);
441 mgrentry->
docmgr = *ppdim;
454 TRACE(
"(%p) %p\n",
this, ppEnum);
464 TRACE(
"(%p)\n",
this);
484 TRACE(
"(%p) %p\n",
this, pdimFocus);
504 ERR(
"Hook proc but no ThreadMgr focus Hook. Serious Error\n");
517 TRACE(
"Triggering Associated window focus\n");
533 ERR(
"Hook proc but no ThreadMgr for this thread. Serious Error\n");
546 ERR(
"Unable to set focus hook\n");
562 TRACE(
"(%p) %p %p %p\n",
this,
hwnd, pdimNew, ppdimPrev);
598 TRACE(
"(%p) %p\n",
this, pfThreadFocus);
604 *pfThreadFocus = !focus;
612 FIXME(
"STUB:(%p)\n",
this);
618 FIXME(
"STUB:(%p)\n",
this);
625 TRACE(
"(%p) %p\n",
this, ppCompMgr);
669 FIXME(
"STUB:(%p)\n",
this);
683 if (
riid == IID_ITfThreadMgrEventSink)
686 if (
riid == IID_ITfThreadFocusSink)
688 WARN(
"semi-stub for ITfThreadFocusSink: sink won't be used.\n");
692 if (
riid == IID_ITfActiveLanguageProfileNotifySink)
694 WARN(
"semi-stub for ITfActiveLanguageProfileNotifySink: sink won't be used.\n");
699 if (
riid == IID_ITfKeyTraceEventSink)
701 WARN(
"semi-stub for ITfKeyTraceEventSink: sink won't be used.\n");
706 if (
riid == IID_ITfUIElementSink)
708 WARN(
"semi-stub for ITfUIElementSink: sink won't be used.\n");
713 if (
riid == IID_ITfInputProcessorProfileActivationSink)
715 WARN(
"semi-stub for ITfInputProcessorProfileActivationSink: sink won't be used.\n");
728 TRACE(
"(%p) %x\n",
this, dwCookie);
751 TRACE(
"(%p) %x %p %i\n",
this,
tid, pSink, fForeground);
816 TRACE(
"(%p) %p\n",
this, pclsid);
832 FIXME(
"STUB:(%p)\n",
this);
844 FIXME(
"STUB:(%p)\n",
this);
856 FIXME(
"STUB:(%p)\n",
this);
868 FIXME(
"STUB:(%p)\n",
this);
880 FIXME(
"STUB:(%p)\n",
this);
891 TRACE(
"(%p) %s (%x %x) %p\n",
this,
debugstr_guid(&rguid), (pprekey ? pprekey->uVKey : 0), (pprekey ? pprekey->uModifiers : 0), pfRegistered);
899 if (rguid ==
key->guid && pprekey->uVKey ==
key->prekey.uVKey && pprekey->uModifiers ==
key->prekey.uModifiers)
901 *pfRegistered =
TRUE;
906 *pfRegistered =
FALSE;
919 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));
927 if (rguid ==
key->guid && prekey->uVKey ==
key->prekey.uVKey && prekey->uModifiers ==
key->prekey.uModifiers)
928 return TF_E_ALREADY_EXISTS;
935 newkey->
guid = rguid;
961 TRACE(
"(%p) %s (%x %x)\n",
this,
debugstr_guid(&rguid), (pprekey ? pprekey->uVKey : 0), (pprekey ? pprekey->uModifiers : 0));
969 if (rguid ==
key->guid && pprekey->uVKey ==
key->prekey.uVKey && pprekey->uModifiers ==
key->prekey.uModifiers)
989 FIXME(
"STUB:(%p)\n",
this);
997 FIXME(
"STUB:(%p)\n",
this);
1006 FIXME(
"STUB:(%p)\n",
this);
1088 TRACE(
"(%p) %p\n",
this, pdim);
1092 sink->OnInitDocumentMgr(pdim);
1103 TRACE(
"(%p) %p\n",
this, pdim);
1107 sink->OnUninitDocumentMgr(pdim);
1120 TRACE(
"(%p) %p %p\n",
this, pdimFocus, pdimPrevFocus);
1124 sink->OnSetFocus(pdimFocus, pdimPrevFocus);
1135 TRACE(
"(%p) %p\n",
this, pic);
1139 sink->OnPushContext(pic);
1150 TRACE(
"(%p) %p\n",
this, pic);
1154 sink->OnPopContext(pic);
1165 FIXME(
"STUB:(%p)\n",
this);
1171 FIXME(
"STUB:(%p)\n",
this);
1177 FIXME(
"STUB:(%p)\n",
this);
1185 FIXME(
"STUB:(%p)\n",
this);
1191 FIXME(
"STUB:(%p)\n",
this);
1247 if (mgrentry->
docmgr == mgr)
1254 FIXME(
"ITfDocumentMgr %p not found in this thread\n", mgr);
1268 TRACE(
"destroying %p\n",
this);
1275 if (iid ==
IID_IUnknown || iid == IID_IEnumTfDocumentMgrs)
1303 TRACE(
"(%p)\n",
this);
1328 TRACE(
"(%p)\n",
this);
1333 while (fetched < ulCount)
1343 *rgDocumentMgr = mgrentry->
docmgr;
1344 (*rgDocumentMgr)->
AddRef();
1352 *pcFetched = fetched;
1358 TRACE(
"(%p)\n",
this);
1365 TRACE(
"(%p)\n",
this);
1381 TRACE(
"returning %p\n", *ppOut);
1397 This->OnDocumentMgrDestruction(mgr);
struct outqueuenode * head
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define COOKIE_MAGIC_INPUTPROCESSORPROFILEACTIVATIONSINK
#define SINK_FOR_EACH(cursor, list, type, elem)
#define COOKIE_MAGIC_KEYTRACESINK
#define COOKIE_MAGIC_UIELEMENTSINK
#define COOKIE_MAGIC_THREADFOCUSSINK
#define COOKIE_MAGIC_TMSINK
#define COOKIE_MAGIC_ACTIVELANGSINK
static void list_remove(struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
EXTERN_C HRESULT CategoryMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
static LPVOID cicMemAlloc(SIZE_T size)
static void cicMemFree(LPVOID ptr)
static bool cicIsNullPtr(LPCVOID ptr)
STDMETHODIMP Clone(_Out_ IEnumTfDocumentMgrs **ppEnum) override
virtual ~CEnumTfDocumentMgr()
STDMETHODIMP_(ULONG) Release() override
STDMETHODIMP Reset() override
STDMETHODIMP Next(_In_ ULONG ulCount, _Out_ ITfDocumentMgr **rgDocumentMgr, _Out_ ULONG *pcFetched) override
static HRESULT CreateInstance(struct list *head, CEnumTfDocumentMgr **ppOut)
STDMETHODIMP Skip(_In_ ULONG ulCount) override
STDMETHODIMP QueryInterface(REFIID iid, LPVOID *ppvObject) override
STDMETHODIMP_(ULONG) AddRef() override
STDMETHODIMP EnumDocumentMgrs(_Out_ IEnumTfDocumentMgrs **ppEnum) override
STDMETHODIMP AssociateFocus(_In_ HWND hwnd, _In_ ITfDocumentMgr *pdimNew, _Out_ ITfDocumentMgr **ppdimPrev) override
STDMETHODIMP OnPopContext(_In_ ITfContext *pic) override
STDMETHODIMP GetMessageA(_Out_ LPMSG pMsg, _In_ HWND hwnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, _Out_ BOOL *pfResult) override
STDMETHODIMP AdviseSink(_In_ REFIID riid, _In_ IUnknown *punk, _Out_ DWORD *pdwCookie) override
STDMETHODIMP UnadviseKeyEventSink(_In_ TfClientId tid) override
HRESULT SetupWindowsHook()
STDMETHODIMP ActivateEx(_Out_ TfClientId *id, _In_ DWORD flags) override
STDMETHODIMP GetFocus(_Out_ ITfDocumentMgr **ppdimFocus) override
STDMETHODIMP PeekMessageA(_Out_ LPMSG pMsg, _In_ HWND hwnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, _In_ UINT wRemoveMsg, _Out_ BOOL *pfResult) override
STDMETHODIMP TestKeyUp(_In_ WPARAM wParam, _In_ LPARAM lParam, _Out_ BOOL *pfEaten) override
static LRESULT CALLBACK ThreadFocusHookProc(INT nCode, WPARAM wParam, LPARAM lParam)
STDMETHODIMP BeginUIElement(_In_ ITfUIElement *element, _Inout_ BOOL *show, _Out_ DWORD *id) override
static HRESULT CreateInstance(IUnknown *pUnkOuter, CThreadMgr **ppOut)
STDMETHODIMP GetForeground(_Out_ CLSID *pclsid) override
STDMETHODIMP AdviseKeyEventSink(_In_ TfClientId tid, _In_ ITfKeyEventSink *pSink, _In_ BOOL fForeground) override
STDMETHODIMP GetMessageW(_Out_ LPMSG pMsg, _In_ HWND hwnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, _Out_ BOOL *pfResult) override
struct list m_PreservedKeyNotifySink
struct list m_UIElementSink
STDMETHODIMP EnumFunctionProviders(_Out_ IEnumTfFunctionProviders **ppEnum) override
STDMETHODIMP_(ULONG) AddRef() override
STDMETHODIMP GetClientId(_In_ REFCLSID rclsid, _Out_ TfClientId *ptid) override
STDMETHODIMP UnpreserveKey(_In_ REFGUID rguid, _In_ const TF_PRESERVEDKEY *pprekey) override
STDMETHODIMP OnInitDocumentMgr(_In_ ITfDocumentMgr *pdim) override
struct list m_AssociatedFocusWindows
struct list m_DisplayAttributeNotifySink
STDMETHODIMP IsThreadFocus(_Out_ BOOL *pfThreadFocus) override
STDMETHODIMP GetUIElement(_In_ DWORD id, _Out_ ITfUIElement **element) override
STDMETHODIMP OnPushContext(_In_ ITfContext *pic) override
STDMETHODIMP GetActiveFlags(_Out_ DWORD *flags) override
ITfKeyEventSink * m_foregroundKeyEventSink
STDMETHODIMP OnSetFocus(_In_ ITfDocumentMgr *pdimFocus, _In_ ITfDocumentMgr *pdimPrevFocus) override
ITfCompartmentMgr * m_CompartmentMgr
STDMETHODIMP KeyUp(_In_ WPARAM wParam, _In_ LPARAM lParam, _Out_ BOOL *pfEaten) override
STDMETHODIMP EndUIElement(_In_ DWORD id) override
STDMETHODIMP SetPreservedKeyDescription(_In_ REFGUID rguid, _In_ const WCHAR *pchDesc, _In_ ULONG cchDesc) override
struct list m_ThreadMgrEventSink
STDMETHODIMP GetPreservedKeyDescription(_In_ REFGUID rguid, _Out_ BSTR *pbstrDesc) override
STDMETHODIMP GetPreservedKey(_In_ ITfContext *pic, _In_ const TF_PRESERVEDKEY *pprekey, _Out_ GUID *pguid) override
STDMETHODIMP SimulatePreservedKey(_In_ ITfContext *pic, _In_ REFGUID rguid, _Out_ BOOL *pfEaten) override
STDMETHODIMP Activate(_Out_ TfClientId *ptid) override
STDMETHODIMP EnumUIElements(_Out_ IEnumTfUIElements **enum_elements) override
struct list m_KeyTraceEventSink
STDMETHODIMP KeyDown(_In_ WPARAM wParam, _In_ LPARAM lParam, _Out_ BOOL *pfEaten) override
struct list m_CurrentPreservedKeys
STDMETHODIMP GetGlobalCompartment(_Out_ ITfCompartmentMgr **ppCompMgr) override
STDMETHODIMP_(ULONG) Release() override
STDMETHODIMP UpdateUIElement(_In_ DWORD id) override
STDMETHODIMP PeekMessageW(_Out_ LPMSG pMsg, _In_ HWND hwnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, _In_ UINT wRemoveMsg, _Out_ BOOL *pfResult) override
STDMETHODIMP GetFunctionProvider(_In_ REFCLSID clsid, _Out_ ITfFunctionProvider **ppFuncProv) override
STDMETHODIMP PreserveKey(_In_ TfClientId tid, _In_ REFGUID rguid, _In_ const TF_PRESERVEDKEY *prekey, _In_ const WCHAR *pchDesc, _In_ ULONG cchDesc) override
STDMETHODIMP SetFocus(_In_ ITfDocumentMgr *pdimFocus) override
STDMETHODIMP OnUninitDocumentMgr(_In_ ITfDocumentMgr *pdim) override
STDMETHODIMP CreateDocumentMgr(_Out_ ITfDocumentMgr **ppdim) override
LRESULT _ThreadFocusHookProc(INT nCode, WPARAM wParam, LPARAM lParam)
STDMETHODIMP UnadviseSingleSink(_In_ TfClientId tid, _In_ REFIID riid) override
void OnDocumentMgrDestruction(ITfDocumentMgr *mgr)
struct list m_ActiveLanguageProfileNotifySink
STDMETHODIMP Deactivate() override
STDMETHODIMP TestKeyDown(_In_ WPARAM wParam, _In_ LPARAM lParam, _Out_ BOOL *pfEaten) override
struct list m_InputProcessorProfileActivationSink
struct list m_ThreadFocusSink
STDMETHODIMP AdviseSingleSink(_In_ TfClientId tid, _In_ REFIID riid, _In_ IUnknown *punk) override
struct list m_CreatedDocumentMgrs
STDMETHODIMP IsPreservedKey(_In_ REFGUID rguid, _In_ const TF_PRESERVEDKEY *pprekey, _Out_ BOOL *pfRegistered) override
STDMETHODIMP QueryInterface(REFIID iid, LPVOID *ppvObject) override
STDMETHODIMP UnadviseSink(_In_ DWORD dwCookie) override
CLSID m_foregroundTextService
EXTERN_C HRESULT CompartmentMgr_Constructor(IUnknown *pUnkOuter, REFIID riid, IUnknown **ppOut)
LPVOID WINAPI TlsGetValue(IN DWORD Index)
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
HRESULT WINAPI CoCreateGuid(GUID *pguid)
EXTERN_C HRESULT DocumentMgr_Constructor(ITfThreadMgrEventSink *pThreadMgrSink, ITfDocumentMgr **ppOut)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
#define check(expected, result)
GLsizei GLenum GLboolean sink
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
static CInternetFolder * CreateInstance(void)
HRESULT RegisterGUID([in] REFGUID rguid, [out] TfGuidAtom *pguidatom)
HRESULT OnSetFocus([in] BOOL fForeground)
static IAdviseSinkEx AdviseSink
EXTERN_C HRESULT advise_sink(struct list *sink_list, REFIID riid, DWORD cookie_magic, IUnknown *unk, DWORD *cookie)
ITfCompartmentMgr * g_globalCompartmentMgr
EXTERN_C DWORD get_Cookie_magic(DWORD id)
EXTERN_C HRESULT set_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown *sink)
EXTERN_C HRESULT unadvise_sink(DWORD cookie)
EXTERN_C HRESULT deactivate_textservices(void)
EXTERN_C void free_sinks(struct list *sink_list)
EXTERN_C HRESULT activate_textservices(ITfThreadMgrEx *tm)
EXTERN_C CLSID get_textservice_clsid(TfClientId tid)
EXTERN_C HRESULT get_textservice_sink(TfClientId tid, REFCLSID iid, IUnknown **sink)
static nsIComponentManager * pCompMgr
#define CONNECT_E_ADVISELIMIT
#define CONNECT_E_NOCONNECTION
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
#define LIST_FOR_EACH(cursor, list)
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list)
struct tagAssociatedWindow AssociatedWindow
struct tagDocumentMgrs DocumentMgrEntry
EXTERN_C void ThreadMgr_OnDocumentMgrDestruction(ITfThreadMgr *iface, ITfDocumentMgr *mgr)
EXTERN_C HRESULT ThreadMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
struct tagPreservedKey PreservedKey
DWORD WINAPI GetCurrentThreadId(void)
#define CLASS_E_NOAGGREGATION
HWND WINAPI GetFocus(void)
HHOOK WINAPI SetWindowsHookExW(_In_ int, _In_ HOOKPROC, _In_opt_ HINSTANCE, _In_ DWORD)
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
LRESULT WINAPI CallNextHookEx(_In_opt_ HHOOK, _In_ int, _In_ WPARAM, _In_ LPARAM)