Chromium Code Reviews| 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, |