Index: fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp |
diff --git a/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp |
index 16f3209af3dac8357a6062eb2316924c69809891..109a0946ba2dd6557d811cf74441f78255ff0284 100644 |
--- a/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp |
+++ b/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp |
@@ -145,29 +145,23 @@ int CPDFXFA_Document::GetPageCount() { |
} |
CPDFXFA_Page* CPDFXFA_Document::GetPage(int page_index) { |
Lei Zhang
2015/12/21 17:47:59
What happen if |page_index| is negative?
jun_fang
2016/01/04 09:30:23
It shouldn't be less than 0. Will add a test to ma
|
- if (!m_pPDFDoc && !m_pXFADoc) |
Lei Zhang
2015/12/21 17:47:58
Do you still care about these being nullptrs?
|
- return NULL; |
- |
- CPDFXFA_Page* pPage = NULL; |
- if (m_XFAPageList.GetSize()) { |
+ CPDFXFA_Page* pPage = nullptr; |
+ int nCount = m_XFAPageList.GetSize(); |
+ if (nCount > 0 && page_index < nCount) { |
pPage = m_XFAPageList.GetAt(page_index); |
if (pPage) |
pPage->AddRef(); |
} else { |
m_XFAPageList.SetSize(GetPageCount()); |
} |
- |
- if (!pPage) { |
- pPage = new CPDFXFA_Page(this, page_index); |
- FX_BOOL bRet = pPage->LoadPage(); |
- if (!bRet) { |
- delete pPage; |
- return NULL; |
- } |
- |
- m_XFAPageList.SetAt(page_index, pPage); |
+ if (pPage) |
+ return pPage; |
+ pPage = new CPDFXFA_Page(this, page_index); |
+ if (!pPage->LoadPage()) { |
+ delete pPage; |
+ return nullptr; |
} |
- |
+ m_XFAPageList.SetAt(page_index, pPage); |
return pPage; |
} |
@@ -491,6 +485,22 @@ FX_BOOL CPDFXFA_Document::PopupMenu(IXFA_Widget* hWidget, |
void CPDFXFA_Document::PageViewEvent(IXFA_PageView* pPageView, |
FX_DWORD dwFlags) { |
Lei Zhang
2015/12/21 17:47:58
Is |dwFlags| always just a single value, or can it
jun_fang
2016/01/04 09:30:23
It's just a single value.
|
+ if (!pPageView || (FXFA_PAGEVIEWEVENT_POSTADDED != dwFlags && |
jun_fang
2015/12/21 07:19:59
SDK needs to handle changes on page view.
The even
Lei Zhang
2015/12/21 17:47:59
The posted value is XFA_PAGEVIEWEVENT_PostRemoved,
jun_fang
2016/01/04 09:30:23
Acknowledged.
|
+ FXFA_PAGEVIEWEVENT_POSTREMOVED != dwFlags)) { |
+ return; |
+ } |
+ CPDFXFA_Page* pPage = nullptr; |
+ if (FXFA_PAGEVIEWEVENT_POSTADDED == dwFlags) { |
Lei Zhang
2015/12/21 17:47:58
nit: Prefer to just write: var == value
I believe
jun_fang
2016/01/04 09:30:23
Acknowledged.
|
+ pPage = GetPage(pPageView->GetPageViewIndex()); |
+ if (pPage) |
+ pPage->SetXFAPageView(pPageView); |
+ return; |
+ } |
+ pPage = GetPage(pPageView); |
+ if (!pPage) |
+ return; |
+ pPage->SetXFAPageView(nullptr); |
+ m_pSDKDoc->GetPageView(pPage)->ClearFXAnnots(); |
} |
void CPDFXFA_Document::WidgetEvent(IXFA_Widget* hWidget, |