| Index: fpdfsdk/cpdfsdk_annothandlermgr.cpp
|
| diff --git a/fpdfsdk/cpdfsdk_annothandlermgr.cpp b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
|
| index 87fc8056c6e9e455bf5ce88db5133d804026f5d3..75542d360e174cd33decae835a7aae9e09f8607f 100644
|
| --- a/fpdfsdk/cpdfsdk_annothandlermgr.cpp
|
| +++ b/fpdfsdk/cpdfsdk_annothandlermgr.cpp
|
| @@ -104,84 +104,89 @@ void CPDFSDK_AnnotHandlerMgr::Annot_OnDraw(CPDFSDK_PageView* pPageView,
|
|
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonDown(
|
| CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlags,
|
| const CFX_FloatPoint& point) {
|
| - ASSERT(pAnnot);
|
| - return GetAnnotHandler(pAnnot)->OnLButtonDown(pPageView, pAnnot, nFlags,
|
| - point);
|
| + ASSERT(*pAnnot);
|
| + return GetAnnotHandler(pAnnot->Get())
|
| + ->OnLButtonDown(pPageView, pAnnot, nFlags, point);
|
| }
|
|
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonUp(
|
| CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlags,
|
| const CFX_FloatPoint& point) {
|
| - ASSERT(pAnnot);
|
| - return GetAnnotHandler(pAnnot)->OnLButtonUp(pPageView, pAnnot, nFlags, point);
|
| + ASSERT(*pAnnot);
|
| + return GetAnnotHandler(pAnnot->Get())
|
| + ->OnLButtonUp(pPageView, pAnnot, nFlags, point);
|
| }
|
|
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnLButtonDblClk(
|
| CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlags,
|
| const CFX_FloatPoint& point) {
|
| - ASSERT(pAnnot);
|
| - return GetAnnotHandler(pAnnot)->OnLButtonDblClk(pPageView, pAnnot, nFlags,
|
| - point);
|
| + ASSERT(*pAnnot);
|
| + return GetAnnotHandler(pAnnot->Get())
|
| + ->OnLButtonDblClk(pPageView, pAnnot, nFlags, point);
|
| }
|
|
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnMouseMove(
|
| CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlags,
|
| const CFX_FloatPoint& point) {
|
| - ASSERT(pAnnot);
|
| - return GetAnnotHandler(pAnnot)->OnMouseMove(pPageView, pAnnot, nFlags, point);
|
| + ASSERT(*pAnnot);
|
| + return GetAnnotHandler(pAnnot->Get())
|
| + ->OnMouseMove(pPageView, pAnnot, nFlags, point);
|
| }
|
|
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnMouseWheel(
|
| CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlags,
|
| short zDelta,
|
| const CFX_FloatPoint& point) {
|
| - ASSERT(pAnnot);
|
| - return GetAnnotHandler(pAnnot)->OnMouseWheel(pPageView, pAnnot, nFlags,
|
| - zDelta, point);
|
| + ASSERT(*pAnnot);
|
| + return GetAnnotHandler(pAnnot->Get())
|
| + ->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta, point);
|
| }
|
|
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnRButtonDown(
|
| CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlags,
|
| const CFX_FloatPoint& point) {
|
| - ASSERT(pAnnot);
|
| - return GetAnnotHandler(pAnnot)->OnRButtonDown(pPageView, pAnnot, nFlags,
|
| - point);
|
| + ASSERT(*pAnnot);
|
| + return GetAnnotHandler(pAnnot->Get())
|
| + ->OnRButtonDown(pPageView, pAnnot, nFlags, point);
|
| }
|
|
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnRButtonUp(
|
| CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlags,
|
| const CFX_FloatPoint& point) {
|
| - ASSERT(pAnnot);
|
| - return GetAnnotHandler(pAnnot)->OnRButtonUp(pPageView, pAnnot, nFlags, point);
|
| + ASSERT(*pAnnot);
|
| + return GetAnnotHandler(pAnnot->Get())
|
| + ->OnRButtonUp(pPageView, pAnnot, nFlags, point);
|
| }
|
|
|
| -void CPDFSDK_AnnotHandlerMgr::Annot_OnMouseEnter(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlag) {
|
| - ASSERT(pAnnot);
|
| - GetAnnotHandler(pAnnot)->OnMouseEnter(pPageView, pAnnot, nFlag);
|
| +void CPDFSDK_AnnotHandlerMgr::Annot_OnMouseEnter(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlag) {
|
| + ASSERT(*pAnnot);
|
| + GetAnnotHandler(pAnnot->Get())->OnMouseEnter(pPageView, pAnnot, nFlag);
|
| }
|
|
|
| -void CPDFSDK_AnnotHandlerMgr::Annot_OnMouseExit(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlag) {
|
| - ASSERT(pAnnot);
|
| - GetAnnotHandler(pAnnot)->OnMouseExit(pPageView, pAnnot, nFlag);
|
| +void CPDFSDK_AnnotHandlerMgr::Annot_OnMouseExit(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlag) {
|
| + ASSERT(*pAnnot);
|
| + GetAnnotHandler(pAnnot->Get())->OnMouseExit(pPageView, pAnnot, nFlag);
|
| }
|
|
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnChar(CPDFSDK_Annot* pAnnot,
|
| @@ -199,12 +204,10 @@ FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKeyDown(CPDFSDK_Annot* pAnnot,
|
| CPDFSDK_PageView* pPage = pAnnot->GetPageView();
|
| CPDFSDK_Annot* pFocusAnnot = pPage->GetFocusAnnot();
|
| if (pFocusAnnot && (nKeyCode == FWL_VKEY_Tab)) {
|
| - CPDFSDK_Annot* pNext =
|
| - GetNextAnnot(pFocusAnnot, !m_pEnv->IsSHIFTKeyDown(nFlag));
|
| -
|
| - if (pNext && pNext != pFocusAnnot) {
|
| - CPDFSDK_Document* pDocument = pPage->GetSDKDocument();
|
| - pDocument->SetFocusAnnot(pNext);
|
| + CPDFSDK_Annot::ObservedPtr pNext(
|
| + GetNextAnnot(pFocusAnnot, !m_pEnv->IsSHIFTKeyDown(nFlag)));
|
| + if (pNext && pNext.Get() != pFocusAnnot) {
|
| + pPage->GetSDKDocument()->SetFocusAnnot(&pNext);
|
| return TRUE;
|
| }
|
| }
|
| @@ -218,30 +221,30 @@ FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKeyUp(CPDFSDK_Annot* pAnnot,
|
| return FALSE;
|
| }
|
|
|
| -FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnSetFocus(CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlag) {
|
| - ASSERT(pAnnot);
|
| -
|
| - if (!GetAnnotHandler(pAnnot)->OnSetFocus(pAnnot, nFlag))
|
| +FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnSetFocus(
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlag) {
|
| + ASSERT(*pAnnot);
|
| + if (!GetAnnotHandler(pAnnot->Get())->OnSetFocus(pAnnot, nFlag))
|
| return FALSE;
|
|
|
| - CPDFSDK_PageView* pPage = pAnnot->GetPageView();
|
| - pPage->GetSDKDocument();
|
| + (*pAnnot)->GetPageView()->GetSDKDocument();
|
| return TRUE;
|
| }
|
|
|
| -FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKillFocus(CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlag) {
|
| - ASSERT(pAnnot);
|
| - return GetAnnotHandler(pAnnot)->OnKillFocus(pAnnot, nFlag);
|
| +FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKillFocus(
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlag) {
|
| + ASSERT(*pAnnot);
|
| + return GetAnnotHandler(pAnnot->Get())->OnKillFocus(pAnnot, nFlag);
|
| }
|
|
|
| #ifdef PDF_ENABLE_XFA
|
| FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnChangeFocus(
|
| - CPDFSDK_Annot* pSetAnnot,
|
| - CPDFSDK_Annot* pKillAnnot) {
|
| - FX_BOOL bXFA = (pSetAnnot && pSetAnnot->GetXFAWidget()) ||
|
| - (pKillAnnot && pKillAnnot->GetXFAWidget());
|
| + CPDFSDK_Annot::ObservedPtr* pSetAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pKillAnnot) {
|
| + FX_BOOL bXFA = (*pSetAnnot && (*pSetAnnot)->GetXFAWidget()) ||
|
| + (*pKillAnnot && (*pKillAnnot)->GetXFAWidget());
|
|
|
| if (bXFA) {
|
| if (IPDFSDK_AnnotHandler* pXFAAnnotHandler =
|
|
|