bool CPDFSDK_AnnotHandlerMgr::Annot_OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) { if (CPDFSDK_FormFillEnvironment::IsCTRLKeyDown(nFlag) || CPDFSDK_FormFillEnvironment::IsALTKeyDown(nFlag)) { return GetAnnotHandler(pAnnot)->OnKeyDown(pAnnot, nKeyCode, nFlag); } CPDFSDK_PageView* pPage = pAnnot->GetPageView(); CPDFSDK_Annot* pFocusAnnot = pPage->GetFocusAnnot(); if (pFocusAnnot && (nKeyCode == FWL_VKEY_Tab)) { CPDFSDK_Annot::ObservedPtr pNext(GetNextAnnot( pFocusAnnot, !CPDFSDK_FormFillEnvironment::IsSHIFTKeyDown(nFlag))); if (pNext && pNext.Get() != pFocusAnnot) { pPage->GetFormFillEnv()->SetFocusAnnot(&pNext); return true; } } return GetAnnotHandler(pAnnot)->OnKeyDown(pAnnot, nKeyCode, nFlag); }
CXFA_FFWidgetHandler* CPDFSDK_XFAWidgetHandler::GetXFAWidgetHandler( CPDFSDK_Annot* pAnnot) { if (!pAnnot) return nullptr; CPDFSDK_PageView* pPageView = pAnnot->GetPageView(); if (!pPageView) return nullptr; CPDFSDK_FormFillEnvironment* pFormFillEnv = pPageView->GetFormFillEnv(); if (!pFormFillEnv) return nullptr; CPDFXFA_Context* pDoc = pFormFillEnv->GetXFAContext(); if (!pDoc) return nullptr; CXFA_FFDocView* pDocView = pDoc->GetXFADocView(); if (!pDocView) return nullptr; return pDocView->GetWidgetHandler(); }