| Index: fpdfsdk/cpdfsdk_pageview.cpp
|
| diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp
|
| index 921e4a396bec905ec74c084ba313d6185b403e69..7825701f15b158f060e0927c374997bbfd830561 100644
|
| --- a/fpdfsdk/cpdfsdk_pageview.cpp
|
| +++ b/fpdfsdk/cpdfsdk_pageview.cpp
|
| @@ -67,10 +67,10 @@ CPDFSDK_PageView::~CPDFSDK_PageView() {
|
|
|
| CPDFSDK_Environment* pEnv = m_pSDKDoc->GetEnv();
|
| CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
|
| - for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray)
|
| + for (CPDFSDK_Annot* pAnnot : m_SDKAnnotArray)
|
| pAnnotHandlerMgr->ReleaseAnnot(pAnnot);
|
|
|
| - m_fxAnnotArray.clear();
|
| + m_SDKAnnotArray.clear();
|
| m_pAnnotList.reset();
|
|
|
| #ifndef PDF_ENABLE_XFA
|
| @@ -133,28 +133,6 @@ void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice,
|
| }
|
| }
|
|
|
| -const CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX,
|
| - FX_FLOAT pageY) {
|
| - for (const auto& pAnnot : m_pAnnotList->All()) {
|
| - CFX_FloatRect annotRect = pAnnot->GetRect();
|
| - if (annotRect.Contains(pageX, pageY))
|
| - return pAnnot.get();
|
| - }
|
| - return nullptr;
|
| -}
|
| -
|
| -const CPDF_Annot* CPDFSDK_PageView::GetPDFWidgetAtPoint(FX_FLOAT pageX,
|
| - FX_FLOAT pageY) {
|
| - for (const auto& pAnnot : m_pAnnotList->All()) {
|
| - if (pAnnot->GetSubtype() == CPDF_Annot::Subtype::WIDGET) {
|
| - CFX_FloatRect annotRect = pAnnot->GetRect();
|
| - if (annotRect.Contains(pageX, pageY))
|
| - return pAnnot.get();
|
| - }
|
| - }
|
| - return nullptr;
|
| -}
|
| -
|
| CPDFSDK_Annot* CPDFSDK_PageView::GetFXAnnotAtPoint(FX_FLOAT pageX,
|
| FX_FLOAT pageY) {
|
| CPDFSDK_Environment* pEnv = m_pSDKDoc->GetEnv();
|
| @@ -193,27 +171,6 @@ CPDFSDK_Annot* CPDFSDK_PageView::GetFXWidgetAtPoint(FX_FLOAT pageX,
|
| return nullptr;
|
| }
|
|
|
| -void CPDFSDK_PageView::KillFocusAnnotIfNeeded() {
|
| - // if there is a focused annot on the page, we should kill the focus first.
|
| - if (CPDFSDK_Annot* focusedAnnot = m_pSDKDoc->GetFocusAnnot()) {
|
| - if (pdfium::ContainsValue(m_fxAnnotArray, focusedAnnot))
|
| - KillFocusAnnot();
|
| - }
|
| -}
|
| -
|
| -CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(CPDF_Annot* pPDFAnnot) {
|
| - CPDFSDK_Environment* pEnv = m_pSDKDoc->GetEnv();
|
| - ASSERT(pEnv);
|
| - CPDFSDK_AnnotHandlerMgr* pAnnotHandler = pEnv->GetAnnotHandlerMgr();
|
| - CPDFSDK_Annot* pSDKAnnot = pAnnotHandler->NewAnnot(pPDFAnnot, this);
|
| - if (!pSDKAnnot)
|
| - return nullptr;
|
| -
|
| - m_fxAnnotArray.push_back(pSDKAnnot);
|
| - pAnnotHandler->Annot_OnCreate(pSDKAnnot);
|
| - return pSDKAnnot;
|
| -}
|
| -
|
| #ifdef PDF_ENABLE_XFA
|
| CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(CXFA_FFWidget* pPDFAnnot) {
|
| if (!pPDFAnnot)
|
| @@ -229,23 +186,11 @@ CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(CXFA_FFWidget* pPDFAnnot) {
|
| if (!pSDKAnnot)
|
| return nullptr;
|
|
|
| - m_fxAnnotArray.push_back(pSDKAnnot);
|
| + m_SDKAnnotArray.push_back(pSDKAnnot);
|
| return pSDKAnnot;
|
| }
|
| -#endif // PDF_ENABLE_XFA
|
| -
|
| -CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(CPDF_Dictionary* pDict) {
|
| - return pDict ? AddAnnot(pDict->GetStringFor("Subtype").c_str(), pDict)
|
| - : nullptr;
|
| -}
|
| -
|
| -CPDFSDK_Annot* CPDFSDK_PageView::AddAnnot(const FX_CHAR* lpSubType,
|
| - CPDF_Dictionary* pDict) {
|
| - return nullptr;
|
| -}
|
|
|
| FX_BOOL CPDFSDK_PageView::DeleteAnnot(CPDFSDK_Annot* pAnnot) {
|
| -#ifdef PDF_ENABLE_XFA
|
| if (!pAnnot)
|
| return FALSE;
|
| CPDFXFA_Page* pPage = pAnnot->GetPDFXFAPage();
|
| @@ -254,23 +199,21 @@ FX_BOOL CPDFSDK_PageView::DeleteAnnot(CPDFSDK_Annot* pAnnot) {
|
| return FALSE;
|
|
|
| if (GetFocusAnnot() == pAnnot)
|
| - KillFocusAnnot();
|
| + m_pSDKDoc->KillFocusAnnot(0);
|
| CPDFSDK_Environment* pEnv = m_pSDKDoc->GetEnv();
|
| CPDFSDK_AnnotHandlerMgr* pAnnotHandler = pEnv->GetAnnotHandlerMgr();
|
| if (pAnnotHandler)
|
| pAnnotHandler->ReleaseAnnot(pAnnot);
|
|
|
| - auto it = std::find(m_fxAnnotArray.begin(), m_fxAnnotArray.end(), pAnnot);
|
| - if (it != m_fxAnnotArray.end())
|
| - m_fxAnnotArray.erase(it);
|
| + auto it = std::find(m_SDKAnnotArray.begin(), m_SDKAnnotArray.end(), pAnnot);
|
| + if (it != m_SDKAnnotArray.end())
|
| + m_SDKAnnotArray.erase(it);
|
| if (m_pCaptureWidget.Get() == pAnnot)
|
| m_pCaptureWidget.Reset();
|
|
|
| return TRUE;
|
| -#else // PDF_ENABLE_XFA
|
| - return FALSE;
|
| -#endif // PDF_ENABLE_XFA
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| CPDF_Document* CPDFSDK_PageView::GetPDFDocument() {
|
| if (m_page) {
|
| @@ -291,16 +234,8 @@ CPDF_Page* CPDFSDK_PageView::GetPDFPage() const {
|
| #endif // PDF_ENABLE_XFA
|
| }
|
|
|
| -size_t CPDFSDK_PageView::CountAnnots() const {
|
| - return m_fxAnnotArray.size();
|
| -}
|
| -
|
| -CPDFSDK_Annot* CPDFSDK_PageView::GetAnnot(size_t nIndex) {
|
| - return nIndex < m_fxAnnotArray.size() ? m_fxAnnotArray[nIndex] : nullptr;
|
| -}
|
| -
|
| CPDFSDK_Annot* CPDFSDK_PageView::GetAnnotByDict(CPDF_Dictionary* pDict) {
|
| - for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) {
|
| + for (CPDFSDK_Annot* pAnnot : m_SDKAnnotArray) {
|
| if (pAnnot->GetPDFAnnot()->GetAnnotDict() == pDict)
|
| return pAnnot;
|
| }
|
| @@ -312,7 +247,7 @@ CPDFSDK_Annot* CPDFSDK_PageView::GetAnnotByXFAWidget(CXFA_FFWidget* hWidget) {
|
| if (!hWidget)
|
| return nullptr;
|
|
|
| - for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) {
|
| + for (CPDFSDK_Annot* pAnnot : m_SDKAnnotArray) {
|
| if (pAnnot->GetXFAWidget() == hWidget)
|
| return pAnnot;
|
| }
|
| @@ -324,7 +259,7 @@ FX_BOOL CPDFSDK_PageView::OnLButtonDown(const CFX_FloatPoint& point,
|
| uint32_t nFlag) {
|
| CPDFSDK_Annot::ObservedPtr pAnnot(GetFXWidgetAtPoint(point.x, point.y));
|
| if (!pAnnot) {
|
| - KillFocusAnnot(nFlag);
|
| + m_pSDKDoc->KillFocusAnnot(nFlag);
|
| return FALSE;
|
| }
|
|
|
| @@ -336,7 +271,7 @@ FX_BOOL CPDFSDK_PageView::OnLButtonDown(const CFX_FloatPoint& point,
|
| if (!pAnnot)
|
| return FALSE;
|
|
|
| - SetFocusAnnot(&pAnnot);
|
| + m_pSDKDoc->SetFocusAnnot(&pAnnot);
|
| return TRUE;
|
| }
|
|
|
| @@ -355,7 +290,7 @@ FX_BOOL CPDFSDK_PageView::OnRButtonDown(const CFX_FloatPoint& point,
|
| return FALSE;
|
|
|
| if (ok)
|
| - SetFocusAnnot(&pAnnot);
|
| + m_pSDKDoc->SetFocusAnnot(&pAnnot);
|
|
|
| return TRUE;
|
| }
|
| @@ -369,7 +304,7 @@ FX_BOOL CPDFSDK_PageView::OnRButtonUp(const CFX_FloatPoint& point,
|
| return FALSE;
|
|
|
| if (pAnnotHandlerMgr->Annot_OnRButtonUp(this, &pFXAnnot, nFlag, point))
|
| - SetFocusAnnot(&pFXAnnot);
|
| + m_pSDKDoc->SetFocusAnnot(&pFXAnnot);
|
|
|
| return TRUE;
|
| }
|
| @@ -482,7 +417,7 @@ void CPDFSDK_PageView::LoadFXAnnots() {
|
| CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pXFAAnnot, this);
|
| if (!pAnnot)
|
| continue;
|
| - m_fxAnnotArray.push_back(pAnnot);
|
| + m_SDKAnnotArray.push_back(pAnnot);
|
| pAnnotHandlerMgr->Annot_OnLoad(pAnnot);
|
| }
|
|
|
| @@ -506,7 +441,7 @@ void CPDFSDK_PageView::LoadFXAnnots() {
|
| CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pPDFAnnot, this);
|
| if (!pAnnot)
|
| continue;
|
| - m_fxAnnotArray.push_back(pAnnot);
|
| + m_SDKAnnotArray.push_back(pAnnot);
|
| pAnnotHandlerMgr->Annot_OnLoad(pAnnot);
|
| }
|
|
|
| @@ -560,16 +495,15 @@ bool CPDFSDK_PageView::IsValidAnnot(const CPDF_Annot* p) const {
|
| return it != annots.end();
|
| }
|
|
|
| +bool CPDFSDK_PageView::IsValidSDKAnnot(const CPDFSDK_Annot* p) const {
|
| + if (!p)
|
| + return false;
|
| + return pdfium::ContainsValue(m_SDKAnnotArray, p);
|
| +}
|
| +
|
| CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() {
|
| CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot();
|
| - if (!pFocusAnnot)
|
| - return nullptr;
|
| -
|
| - for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) {
|
| - if (pAnnot == pFocusAnnot)
|
| - return pAnnot;
|
| - }
|
| - return nullptr;
|
| + return IsValidSDKAnnot(pFocusAnnot) ? pFocusAnnot : nullptr;
|
| }
|
|
|
| int CPDFSDK_PageView::GetPageIndexForStaticPDF() const {
|
|
|