First commit.
This commit is contained in:
commit
7b83802bb2
103 files changed
+19016
No files matched your search
@@ -0,0 +1,118 @@
|
||||
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
||||
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
||||
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
||||
// PARTICULAR PURPOSE.
|
||||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved
|
||||
|
||||
#include "Private.h"
|
||||
#include "Globals.h"
|
||||
#include "SampleIME.h"
|
||||
#include "CompositionProcessorEngine.h"
|
||||
|
||||
BOOL CSampleIME::VerifySampleIMECLSID(_In_ REFCLSID clsid)
|
||||
{
|
||||
if (IsEqualCLSID(clsid, Global::SampleIMECLSID))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//+---------------------------------------------------------------------------
|
||||
//
|
||||
// ITfActiveLanguageProfileNotifySink::OnActivated
|
||||
//
|
||||
// Sink called by the framework when changes activate language profile.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
STDAPI CSampleIME::OnActivated(_In_ REFCLSID clsid, _In_ REFGUID guidProfile, _In_ BOOL isActivated)
|
||||
{
|
||||
guidProfile;
|
||||
|
||||
if (FALSE == VerifySampleIMECLSID(clsid))
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
if (isActivated)
|
||||
{
|
||||
_AddTextProcessorEngine();
|
||||
}
|
||||
|
||||
if (nullptr == _pCompositionProcessorEngine)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
if (isActivated)
|
||||
{
|
||||
_pCompositionProcessorEngine->ShowAllLanguageBarIcons();
|
||||
|
||||
_pCompositionProcessorEngine->ConversionModeCompartmentUpdated(_pThreadMgr);
|
||||
}
|
||||
else
|
||||
{
|
||||
_DeleteCandidateList(FALSE, nullptr);
|
||||
|
||||
_pCompositionProcessorEngine->HideAllLanguageBarIcons();
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
//+---------------------------------------------------------------------------
|
||||
//
|
||||
// _InitActiveLanguageProfileNotifySink
|
||||
//
|
||||
// Advise a active language profile notify sink.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
BOOL CSampleIME::_InitActiveLanguageProfileNotifySink()
|
||||
{
|
||||
ITfSource *pSource = nullptr;
|
||||
BOOL ret = FALSE;
|
||||
|
||||
if (_pThreadMgr->QueryInterface(IID_ITfSource, (void **)&pSource) != S_OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (pSource->AdviseSink(IID_ITfActiveLanguageProfileNotifySink, (ITfActiveLanguageProfileNotifySink *)this,
|
||||
&_activeLanguageProfileNotifySinkCookie) != S_OK)
|
||||
{
|
||||
_activeLanguageProfileNotifySinkCookie = TF_INVALID_COOKIE;
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
ret = TRUE;
|
||||
|
||||
Exit:
|
||||
pSource->Release();
|
||||
return ret;
|
||||
}
|
||||
|
||||
//+---------------------------------------------------------------------------
|
||||
//
|
||||
// _UninitActiveLanguageProfileNotifySink
|
||||
//
|
||||
// Unadvise a active language profile notify sink. Assumes we have advised one already.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void CSampleIME::_UninitActiveLanguageProfileNotifySink()
|
||||
{
|
||||
ITfSource *pSource = nullptr;
|
||||
|
||||
if (_activeLanguageProfileNotifySinkCookie == TF_INVALID_COOKIE)
|
||||
{
|
||||
return; // never Advised
|
||||
}
|
||||
|
||||
if (_pThreadMgr->QueryInterface(IID_ITfSource, (void **)&pSource) == S_OK)
|
||||
{
|
||||
pSource->UnadviseSink(_activeLanguageProfileNotifySinkCookie);
|
||||
pSource->Release();
|
||||
}
|
||||
|
||||
_activeLanguageProfileNotifySinkCookie = TF_INVALID_COOKIE;
|
||||
}
|
||||
Reference in new issue
Block a user