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(); |