You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
4.0 KiB
168 lines
4.0 KiB
//
|
|
// api.c
|
|
//
|
|
|
|
#include "private.h"
|
|
#include "tim.h"
|
|
#include "dim.h"
|
|
#include "dam.h"
|
|
#include "imelist.h"
|
|
#include "nuimgr.h"
|
|
#include "globals.h"
|
|
#include "assembly.h"
|
|
#include "timlist.h"
|
|
#include "catmgr.h"
|
|
|
|
extern "C" HRESULT WINAPI TF_GetThreadMgr(ITfThreadMgr **pptim)
|
|
{
|
|
SYSTHREAD *psfn = GetSYSTHREAD();
|
|
if (!psfn)
|
|
return E_FAIL;
|
|
|
|
if (pptim)
|
|
{
|
|
*pptim = psfn->ptim;
|
|
if (*pptim)
|
|
(*pptim)->AddRef();
|
|
}
|
|
return S_OK;
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_CreateThreadMgr(ITfThreadMgr **pptim)
|
|
{
|
|
return CThreadInputMgr::CreateInstance(NULL, IID_ITfThreadMgr, (void **)pptim);
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_CreateDisplayAttributeMgr(ITfDisplayAttributeMgr **ppdam)
|
|
{
|
|
return CDisplayAttributeMgr::CreateInstance(NULL, IID_ITfDisplayAttributeMgr, (void **)ppdam);
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_CreateLangBarMgr(ITfLangBarMgr **pplbm)
|
|
{
|
|
return CLangBarMgr::CreateInstance(NULL, IID_ITfLangBarMgr, (void **)pplbm);
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_CreateInputProcessorProfiles(ITfInputProcessorProfiles **ppipp)
|
|
{
|
|
return CInputProcessorProfiles::CreateInstance(NULL, IID_ITfInputProcessorProfiles, (void **)ppipp);
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_CreateLangBarItemMgr(ITfLangBarItemMgr **pplbim)
|
|
{
|
|
return CLangBarItemMgr::CreateInstance(NULL, IID_ITfLangBarItemMgr, (void **)pplbim);
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_InvalidAssemblyListCache()
|
|
{
|
|
if (!CAssemblyList::InvalidCache())
|
|
return E_FAIL;
|
|
|
|
SYSTHREAD *psfn = GetSYSTHREAD();
|
|
if (!psfn)
|
|
return E_FAIL;
|
|
|
|
EnsureAssemblyList(psfn, TRUE);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_InvalidAssemblyListCacheIfExist()
|
|
{
|
|
// the only diff from TF_InvalidAssemblyListCache() is
|
|
// that we don't care if cache really exist
|
|
//
|
|
CAssemblyList::InvalidCache();
|
|
|
|
SYSTHREAD *psfn = GetSYSTHREAD();
|
|
if (!psfn)
|
|
return E_FAIL;
|
|
|
|
EnsureAssemblyList(psfn, TRUE);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_PostAllThreadMsg(WPARAM wParam, DWORD dwFlags)
|
|
{
|
|
ULONG ulNum;
|
|
SYSTHREAD *psfn = GetSYSTHREAD();
|
|
if (!psfn)
|
|
return E_FAIL;
|
|
|
|
EnsureTIMList(psfn);
|
|
|
|
ulNum = g_timlist.GetNum();
|
|
|
|
if (ulNum)
|
|
{
|
|
DWORD *pdw = new DWORD[ulNum + 1];
|
|
if (pdw)
|
|
{
|
|
if (g_timlist.GetList(pdw,
|
|
ulNum+1,
|
|
&ulNum,
|
|
dwFlags,
|
|
TLFlagFromTFPriv(wParam),
|
|
TRUE))
|
|
{
|
|
ULONG ul;
|
|
for (ul = 0; ul < ulNum; ul++)
|
|
{
|
|
if (pdw[ul])
|
|
PostThreadMessage(pdw[ul], g_msgPrivate, wParam, 0);
|
|
}
|
|
}
|
|
delete pdw;
|
|
}
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_CreateCategoryMgr(ITfCategoryMgr **ppCategoryMgr)
|
|
{
|
|
return CCategoryMgr::CreateInstance(NULL, IID_ITfCategoryMgr, (void **)ppCategoryMgr);
|
|
}
|
|
|
|
extern "C" BOOL WINAPI TF_IsFullScreenWindowAcitvated()
|
|
{
|
|
return GetSharedMemory()->fInFullScreen ? TRUE : FALSE;
|
|
}
|
|
|
|
extern "C" HRESULT WINAPI TF_GetGlobalCompartment(ITfCompartmentMgr **ppCompMgr)
|
|
{
|
|
if (!ppCompMgr)
|
|
return E_INVALIDARG;
|
|
|
|
*ppCompMgr = NULL;
|
|
|
|
SYSTHREAD *psfn = GetSYSTHREAD();
|
|
|
|
EnsureGlobalCompartment(psfn);
|
|
|
|
if (!psfn->_pGlobalCompMgr)
|
|
return E_OUTOFMEMORY;
|
|
|
|
if (EnsureTIMList(psfn))
|
|
g_timlist.SetFlags(psfn->dwThreadId, TLF_GCOMPACTIVE);
|
|
|
|
*ppCompMgr = psfn->_pGlobalCompMgr;
|
|
psfn->_pGlobalCompMgr->AddRef();
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
extern "C" HRESULT WINAPI TF_CUASAppFix(LPCSTR lpCmdLine)
|
|
{
|
|
if (!lpCmdLine)
|
|
return E_INVALIDARG;
|
|
|
|
if (!lstrcmpi(lpCmdLine, "DelayFirstActivateKeyboardLayout"))
|
|
{
|
|
g_dwAppCompatibility |= CIC_COMPAT_DELAYFIRSTACTIVATEKBDLAYOUT;
|
|
return S_OK;
|
|
}
|
|
return E_INVALIDARG;
|
|
}
|