| Index: fpdfsdk/src/fsdk_mgr.cpp
|
| diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp
|
| index 4d3d01f6f4548336d2b3ff7dd1adf8c7d4da57f7..4a55622e577c684067c8e498f643e5499adb5ca9 100644
|
| --- a/fpdfsdk/src/fsdk_mgr.cpp
|
| +++ b/fpdfsdk/src/fsdk_mgr.cpp
|
| @@ -664,15 +664,22 @@ CPDFSDK_PageView::CPDFSDK_PageView(CPDFSDK_Document* pSDKDoc,
|
| }
|
|
|
| CPDFSDK_PageView::~CPDFSDK_PageView() {
|
| + // if there is a focused annot on the page, we should kill the focus first.
|
| + if (CPDFSDK_Annot* focusedAnnot = m_pSDKDoc->GetFocusAnnot()) {
|
| + for (int i = 0, count = m_fxAnnotArray.GetSize(); i < count; i++) {
|
| + CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
|
| + if (pAnnot == focusedAnnot) {
|
| + KillFocusAnnot();
|
| + break;
|
| + }
|
| + }
|
| + }
|
| +
|
| CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
|
| - int nAnnotCount = m_fxAnnotArray.GetSize();
|
| - for (int i = 0; i < nAnnotCount; i++) {
|
| + CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
|
| + ASSERT(pAnnotHandlerMgr);
|
| + for (int i = 0, count = m_fxAnnotArray.GetSize(); i < count; i++) {
|
| CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
|
| - // if there is a focused annot on the page, we should kill the focus first.
|
| - if (pAnnot == m_pSDKDoc->GetFocusAnnot())
|
| - KillFocusAnnot();
|
| - CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
|
| - ASSERT(pAnnotHandlerMgr);
|
| pAnnotHandlerMgr->ReleaseAnnot(pAnnot);
|
| }
|
| m_fxAnnotArray.RemoveAll();
|
|
|