FX_BOOL CPDFSDK_Document::KillFocusAnnot(FX_UINT nFlag) { if(m_pFocusAnnot) { CPDFSDK_AnnotHandlerMgr *pAnnotHandler=m_pEnv->GetAnnotHandlerMgr(); if(pAnnotHandler) { CPDFSDK_Annot* pFocusAnnot = m_pFocusAnnot; m_pFocusAnnot = NULL; if(pAnnotHandler->Annot_OnKillFocus(pFocusAnnot, nFlag)) { if(pFocusAnnot->GetType() == FX_BSTRC("Widget")) { CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pFocusAnnot; int nFieldType = pWidget->GetFieldType(); if(FIELDTYPE_TEXTFIELD == nFieldType || FIELDTYPE_COMBOBOX == nFieldType) m_pEnv->FFI_OnSetFieldInputFocus(NULL, NULL, 0, FALSE); } if(!m_pFocusAnnot) return TRUE; } else { m_pFocusAnnot = pFocusAnnot; } } } return FALSE; }
CPDFSDK_Annot* CPDFSDK_PageView::GetFXWidgetAtPoint(FX_FLOAT pageX, FX_FLOAT pageY) { CPDFSDK_AnnotIterator annotIterator(this, FALSE); CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr(); CPDFSDK_Annot* pSDKAnnot = NULL; int index = -1; while((pSDKAnnot = annotIterator.Next(index))) { if(pSDKAnnot->GetType() == "Widget") { pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot); CPDF_Point point(pageX, pageY); if (pAnnotMgr->Annot_OnHitTest(this, pSDKAnnot, point)) return pSDKAnnot; } } return NULL; }