summaryrefslogtreecommitdiff
path: root/fpdfsdk/cpdfsdk_annothandlermgr.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-06-13 21:26:56 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-06-13 21:26:56 +0000
commit8e631772e34256ca2f3bb86a1e23cca34fe8d4fa (patch)
tree9db04b7412a6f2cd3339c508712e6a97cee7096e /fpdfsdk/cpdfsdk_annothandlermgr.cpp
parent571053a44f876fe970dd85ee61483b6846a2f383 (diff)
downloadpdfium-8e631772e34256ca2f3bb86a1e23cca34fe8d4fa.tar.xz
Collapse some more xfa/non-xfa code in cpdfsdk annots.chromium/3459chromium/3458
cpdfsdk_annot.cpp:315 and cpdfsdk_annot.cpp:338 are nearly identical, except that the #ifdef XFA code passed along the correct type from the argument. Prefer this behaviour even when non-XFA. Change-Id: Id4d5fbcc773ffd10746c4ddc77a571e818e5a957 Reviewed-on: https://pdfium-review.googlesource.com/35030 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fpdfsdk/cpdfsdk_annothandlermgr.cpp')
-rw-r--r--fpdfsdk/cpdfsdk_annothandlermgr.cpp49
1 files changed, 22 insertions, 27 deletions
diff --git a/fpdfsdk/cpdfsdk_annothandlermgr.cpp b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
index 117bf936e4..09d844f809 100644
--- a/fpdfsdk/cpdfsdk_annothandlermgr.cpp
+++ b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
@@ -309,34 +309,29 @@ CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::GetNextAnnot(CPDFSDK_Annot* pSDKAnnot,
#ifdef PDF_ENABLE_XFA
CPDFSDK_PageView* pPageView = pSDKAnnot->GetPageView();
CPDFXFA_Page* pPage = pPageView->GetPDFXFAPage();
- if (!pPage)
- return nullptr;
- if (pPage->AsPDFPage()) { // for pdf annots.
- CPDFSDK_AnnotIterator ai(pSDKAnnot->GetPageView(),
- pSDKAnnot->GetAnnotSubtype());
- CPDFSDK_Annot* pNext =
- bNext ? ai.GetNextAnnot(pSDKAnnot) : ai.GetPrevAnnot(pSDKAnnot);
- return pNext;
+ if (pPage && !pPage->AsPDFPage()) {
+ // For xfa annots in XFA pages not backed by PDF pages.
+ std::unique_ptr<IXFA_WidgetIterator> pWidgetIterator(
+ pPage->GetXFAPageView()->CreateWidgetIterator(
+ XFA_TRAVERSEWAY_Tranvalse, XFA_WidgetStatus_Visible |
+ XFA_WidgetStatus_Viewable |
+ XFA_WidgetStatus_Focused));
+ if (!pWidgetIterator)
+ return nullptr;
+ if (pWidgetIterator->GetCurrentWidget() != pSDKAnnot->GetXFAWidget())
+ pWidgetIterator->SetCurrentWidget(pSDKAnnot->GetXFAWidget());
+ CXFA_FFWidget* hNextFocus = bNext ? pWidgetIterator->MoveToNext()
+ : pWidgetIterator->MoveToPrevious();
+ if (!hNextFocus && pSDKAnnot)
+ hNextFocus = pWidgetIterator->MoveToFirst();
+
+ return pPageView->GetAnnotByXFAWidget(hNextFocus);
}
- // for xfa annots
- std::unique_ptr<IXFA_WidgetIterator> pWidgetIterator(
- pPage->GetXFAPageView()->CreateWidgetIterator(
- XFA_TRAVERSEWAY_Tranvalse, XFA_WidgetStatus_Visible |
- XFA_WidgetStatus_Viewable |
- XFA_WidgetStatus_Focused));
- if (!pWidgetIterator)
- return nullptr;
- if (pWidgetIterator->GetCurrentWidget() != pSDKAnnot->GetXFAWidget())
- pWidgetIterator->SetCurrentWidget(pSDKAnnot->GetXFAWidget());
- CXFA_FFWidget* hNextFocus =
- bNext ? pWidgetIterator->MoveToNext() : pWidgetIterator->MoveToPrevious();
- if (!hNextFocus && pSDKAnnot)
- hNextFocus = pWidgetIterator->MoveToFirst();
-
- return pPageView->GetAnnotByXFAWidget(hNextFocus);
-#else // PDF_ENABLE_XFA
+#endif // PDF_ENABLE_XFA
+
+ // For PDF annots.
+ ASSERT(pSDKAnnot->GetAnnotSubtype() == CPDF_Annot::Subtype::WIDGET);
CPDFSDK_AnnotIterator ai(pSDKAnnot->GetPageView(),
- CPDF_Annot::Subtype::WIDGET);
+ pSDKAnnot->GetAnnotSubtype());
return bNext ? ai.GetNextAnnot(pSDKAnnot) : ai.GetPrevAnnot(pSDKAnnot);
-#endif // PDF_ENABLE_XFA
}