STDAPI CTextService::Activate(ITfThreadMgr *pThreadMgr, TfClientId tfClientId) { _pThreadMgr = pThreadMgr; _pThreadMgr->AddRef(); // // Initialize ThreadMgrEventSink. // if (!_InitThreadMgrEventSink()) goto ExitError; // // If there is the focus document manager already, // we advise the TextEditSink. // ITfDocumentMgr *pDocMgrFocus; if ((_pThreadMgr->GetFocus(&pDocMgrFocus) == S_OK) && (pDocMgrFocus != NULL)) { _InitTextEditSink(pDocMgrFocus); pDocMgrFocus->Release(); } // // Initialize Language Bar. // if (!_InitLanguageBar()) goto ExitError; return S_OK; ExitError: Deactivate(); // cleanup any half-finished init return E_FAIL; }
STDAPI CTextService::Deactivate() { // // Unadvise TextEditSink if it is advised. // _InitTextEditSink(NULL); // // Uninitialize ThreadMgrEventSink. // _UninitThreadMgrEventSink(); // // Uninitialize Language Bar. // _UninitLanguageBar(); // we MUST release all refs to _pThreadMgr in Deactivate if (_pThreadMgr != NULL) { _pThreadMgr->Release(); _pThreadMgr = NULL; } _tfClientId = TF_CLIENTID_NULL; return S_OK; }
STDAPI CExtentMonitorTextService::OnSetFocus(ITfDocumentMgr *pDocMgrFocus, ITfDocumentMgr *pDocMgrPrevFocus) { // // Whenever focus is changed, we initialize the TextEditSink. // ITfDocumentMgr *pDocMgrTarget = NULL; if (GetNonTransitoryDim(pDocMgrFocus, &pDocMgrTarget) != S_OK) { if (pDocMgrFocus) { pDocMgrTarget = pDocMgrFocus; pDocMgrTarget->AddRef(); } } _InitTextEditSink(pDocMgrTarget); if (pDocMgrTarget) { ITfContext *pContext; if (SUCCEEDED(pDocMgrTarget->GetBase(&pContext))) { DumpExtent(pContext, DE_EVENTID_ONSETFOCUS); pContext->Release(); } pDocMgrTarget->Release(); } return S_OK; }
STDAPI CTextService::OnSetFocus(ITfDocumentMgr *pdim, ITfDocumentMgr *pdimPrevFocus) { _InitTextEditSink(pdim); _UpdateLanguageBar(FALSE); return S_OK; }
STDAPI CPropertyMonitorTextService::Deactivate() { // // Unadvise TextEditSink if it is advised. // _InitTextEditSink(NULL); // // Uninitialize ThreadMgrEventSink. // _UninitThreadMgrEventSink(); // // Uninitialize Language Bar. // _UninitLanguageBar(); // // Uninitialize thread focus sink. // _UninitThreadFocusSink(); if (_pPopupWindow != NULL) { delete _pPopupWindow; _pPopupWindow = NULL; } if (_pMemStream != NULL) { _pMemStream->Release(); _pMemStream = NULL; } if (_pDisplayAttributeMgr != NULL) { _pDisplayAttributeMgr->Release(); _pDisplayAttributeMgr = NULL; } if (_pCategoryMgr != NULL) { _pCategoryMgr->Release(); _pCategoryMgr = NULL; } // we MUST release all refs to _pThreadMgr in Deactivate if (_pThreadMgr != NULL) { _pThreadMgr->Release(); _pThreadMgr = NULL; } _tfClientId = TF_CLIENTID_NULL; return S_OK; }
STDAPI CCaseTextService::OnSetFocus(ITfDocumentMgr *pDocMgrFocus, ITfDocumentMgr *pDocMgrPrevFocus) { // track text changes on the focus doc // we are guarenteed a final OnSetFocus(NULL, ..) which we use for cleanup _InitTextEditSink(pDocMgrFocus); // let's update the snoop window with text from the new focus context _pSnoopWnd->_UpdateText(NULL); return S_OK; }
STDAPI CMarkTextService::Deactivate() { _UninitThreadMgrSink(); _UninitLanguageBar(); _UninitCleanupContextDurationSink(); _UninitGlobalCompartment(); _UninitWorkerWnd(); _UninitKeystrokeSink(); _InitTextEditSink(NULL); // we MUST release all refs to _pThreadMgr in Deactivate SafeReleaseClear(_pThreadMgr); _tfClientId = TF_CLIENTID_NULL; return S_OK; }
STDAPI CSampleIME::OnSetFocus(_In_ ITfDocumentMgr *pDocMgrFocus, _In_ ITfDocumentMgr *pDocMgrPrevFocus) { pDocMgrPrevFocus; _InitTextEditSink(pDocMgrFocus); _UpdateLanguageBarOnSetFocus(pDocMgrFocus); // // We have to hide/unhide candidate list depending on whether they are // associated with pDocMgrFocus. // if (_pCandidateListUIPresenter) { ITfDocumentMgr* pCandidateListDocumentMgr = nullptr; ITfContext* pTfContext = _pCandidateListUIPresenter->_GetContextDocument(); if ((nullptr != pTfContext) && SUCCEEDED(pTfContext->GetDocumentMgr(&pCandidateListDocumentMgr))) { if (pCandidateListDocumentMgr != pDocMgrFocus) { _pCandidateListUIPresenter->OnKillThreadFocus(); } else { _pCandidateListUIPresenter->OnSetThreadFocus(); } pCandidateListDocumentMgr->Release(); } } if (_pDocMgrLastFocused) { _pDocMgrLastFocused->Release(); _pDocMgrLastFocused = nullptr; } _pDocMgrLastFocused = pDocMgrFocus; if (_pDocMgrLastFocused) { _pDocMgrLastFocused->AddRef(); } return S_OK; }
STDAPI CTextService::Deactivate() { // delete the candidate list object if it exists. if (_pCandidateList != NULL) { delete _pCandidateList; _pCandidateList = NULL; } // // Unadvise TextEditSink if it is advised. // _InitTextEditSink(NULL); // // Uninitialize ThreadMgrEventSink. // _UninitThreadMgrEventSink(); // // Uninitialize Language Bar. // _UninitLanguageBar(); // // Uninitialize KeyEventSink // _UninitKeyEventSink(); // // Uninitialize PreservedKeys // _UninitPreservedKey(); // we MUST release all refs to _pThreadMgr in Deactivate if (_pThreadMgr != NULL) { _pThreadMgr->Release(); _pThreadMgr = NULL; } _tfClientId = TF_CLIENTID_NULL; return S_OK; }
STDAPI WeaselTSF::OnSetFocus(ITfDocumentMgr *pDocMgrFocus, ITfDocumentMgr *pDocMgrPrevFocus) { _InitTextEditSink(pDocMgrFocus); com_ptr<ITfDocumentMgr> pCandidateListDocumentMgr; com_ptr<ITfContext> pTfContext = _GetUIContextDocument(); if ((nullptr != pTfContext) && SUCCEEDED(pTfContext->GetDocumentMgr(&pCandidateListDocumentMgr))) { if (pCandidateListDocumentMgr != pDocMgrFocus) { _HideUI(); } else { _ShowUI(); } } return S_OK; }
STDAPI CTextService::Deactivate() { if(_pThreadMgr == nullptr) { return S_OK; } _SaveUserDic(); _EndCandidateList(); _EndInputModeWindow(); _UninitFunctionProvider(); _UninitPreservedKey(0); _UninitPreservedKey(1); _UninitKeyEventSink(); _UninitLanguageBar(); _InitTextEditSink(nullptr); _UninitCompartmentEventSink(); _UninitThreadFocusSink(); _UninitThreadMgrEventSink(); _UninitD2D(); SafeRelease(&_pThreadMgr); _ClientId = TF_CLIENTID_NULL; return S_OK; }
STDAPI CTextService::ActivateEx(ITfThreadMgr *ptim, TfClientId tid, DWORD dwFlags) { _pThreadMgr = ptim; _pThreadMgr->AddRef(); _ClientId = tid; if (!_IsKeyboardOpen()) { _KeyboardSetDefaultMode(); } if(!_InitThreadMgrEventSink()) { goto exit; } if(!_InitThreadFocusSink()) { goto exit; } if(!_InitCompartmentEventSink()) { goto exit; } { ITfDocumentMgr* pDocumentMgr = nullptr; if (SUCCEEDED(_pThreadMgr->GetFocus(&pDocumentMgr)) && (pDocumentMgr != nullptr)) { _InitTextEditSink(pDocumentMgr); SafeRelease(&pDocumentMgr); } } if(!_InitLanguageBar()) { goto exit; } if(!_InitKeyEventSink()) { goto exit; } if(!_InitDisplayAttributeGuidAtom()) { goto exit; } if(!_InitFunctionProvider()) { goto exit; } _KeyboardOpenCloseChanged(FALSE); return S_OK; exit: Deactivate(); return E_FAIL; }
STDAPI CPropertyMonitorTextService::Activate(ITfThreadMgr *pThreadMgr, TfClientId tfClientId) { _pThreadMgr = pThreadMgr; _pThreadMgr->AddRef(); _tfClientId = tfClientId; // // Initialize ThreadMgrEventSink. // if (!_InitThreadMgrEventSink()) goto ExitError; // // If there is the focus document manager already, // we advise the TextEditSink. // ITfDocumentMgr *pDocMgrFocus; if ((_pThreadMgr->GetFocus(&pDocMgrFocus) == S_OK) && (pDocMgrFocus != NULL)) { _InitTextEditSink(pDocMgrFocus); pDocMgrFocus->Release(); } // // Initialize Language Bar. // if (!_InitLanguageBar()) goto ExitError; // // Initialize Thread focus sink. // if (!_InitThreadFocusSink()) goto ExitError; if (CoCreateInstance(CLSID_TF_DisplayAttributeMgr, NULL, CLSCTX_INPROC_SERVER, IID_ITfDisplayAttributeMgr, (void**)&_pDisplayAttributeMgr) != S_OK) { goto ExitError; } if (CoCreateInstance(CLSID_TF_CategoryMgr, NULL, CLSCTX_INPROC_SERVER, IID_ITfCategoryMgr, (void**)&_pCategoryMgr) != S_OK) { goto ExitError; } _pMemStream = CreateMemoryStream(); if (_pMemStream == NULL) { goto ExitError; } return S_OK; ExitError: Deactivate(); // cleanup any half-finished init return E_FAIL; }
STDAPI WeaselTSF::OnSetFocus(ITfDocumentMgr *pDocMgrFocus, ITfDocumentMgr *pDocMgrPrevFocus) { _InitTextEditSink(pDocMgrFocus); return S_OK; }