First commit.
This commit is contained in:
commit
7b83802bb2
103 files changed
+19016
No files matched your search
@@ -0,0 +1,98 @@
|
||||
// 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 "EditSession.h"
|
||||
#include "SampleIME.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ITfEditSession
|
||||
// CEditSessionBase
|
||||
// CEndCompositionEditSession class
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
//+---------------------------------------------------------------------------
|
||||
//
|
||||
// CEndCompositionEditSession
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
class CEndCompositionEditSession : public CEditSessionBase
|
||||
{
|
||||
public:
|
||||
CEndCompositionEditSession(_In_ CSampleIME *pTextService, _In_ ITfContext *pContext) : CEditSessionBase(pTextService, pContext)
|
||||
{
|
||||
}
|
||||
|
||||
// ITfEditSession
|
||||
STDMETHODIMP DoEditSession(TfEditCookie ec)
|
||||
{
|
||||
_pTextService->_TerminateComposition(ec, _pContext, TRUE);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// CSampleIME class
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
//+---------------------------------------------------------------------------
|
||||
//
|
||||
// _TerminateComposition
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void CSampleIME::_TerminateComposition(TfEditCookie ec, _In_ ITfContext *pContext, BOOL isCalledFromDeactivate)
|
||||
{
|
||||
isCalledFromDeactivate;
|
||||
|
||||
if (_pComposition != nullptr)
|
||||
{
|
||||
// remove the display attribute from the composition range.
|
||||
_ClearCompositionDisplayAttributes(ec, pContext);
|
||||
|
||||
if (FAILED(_pComposition->EndComposition(ec)))
|
||||
{
|
||||
// if we fail to EndComposition, then we need to close the reverse reading window.
|
||||
_DeleteCandidateList(TRUE, pContext);
|
||||
}
|
||||
|
||||
_pComposition->Release();
|
||||
_pComposition = nullptr;
|
||||
|
||||
if (_pContext)
|
||||
{
|
||||
_pContext->Release();
|
||||
_pContext = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//+---------------------------------------------------------------------------
|
||||
//
|
||||
// _EndComposition
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void CSampleIME::_EndComposition(_In_opt_ ITfContext *pContext)
|
||||
{
|
||||
CEndCompositionEditSession *pEditSession = new (std::nothrow) CEndCompositionEditSession(this, pContext);
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
if (nullptr != pEditSession)
|
||||
{
|
||||
pContext->RequestEditSession(_tfClientId, pEditSession, TF_ES_ASYNCDONTCARE | TF_ES_READWRITE, &hr);
|
||||
pEditSession->Release();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user