Index: fpdfsdk/src/fsdk_mgr.cpp |
diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp |
index 527538cd0936d3e0aa012cbfc367179cb264b8fd..9840d60220b7164cb30fe87b10b1368b28b05c98 100644 |
--- a/fpdfsdk/src/fsdk_mgr.cpp |
+++ b/fpdfsdk/src/fsdk_mgr.cpp |
@@ -613,28 +613,33 @@ CPDFSDK_PageView::CPDFSDK_PageView(CPDFSDK_Document* pSDKDoc,CPDF_Page* page):m_ |
CPDFSDK_PageView::~CPDFSDK_PageView() |
{ |
- CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
- int nAnnotCount = m_fxAnnotArray.GetSize(); |
+ // 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; |
+ } |
+ } |
+ } |
- for (int i=0; i<nAnnotCount; 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(); |
+ CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); |
+ 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); |
+ pAnnotHandlerMgr->ReleaseAnnot(pAnnot); |
+ } |
+ m_fxAnnotArray.RemoveAll(); |
- delete m_pAnnotList; |
- m_pAnnotList = NULL; |
+ delete m_pAnnotList; |
+ m_pAnnotList = NULL; |
- m_page->RemovePrivateData((void*)m_page); |
- if(m_bTakeOverPage) { |
- delete m_page; |
- } |
+ m_page->RemovePrivateData((void*)m_page); |
+ if (m_bTakeOverPage) { |
+ delete m_page; |
+ } |
} |
void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,CPDF_RenderOptions* pOptions) |