| Index: fpdfsdk/cpdfsdk_xfawidgethandler.cpp
|
| diff --git a/fpdfsdk/cpdfsdk_xfawidgethandler.cpp b/fpdfsdk/cpdfsdk_xfawidgethandler.cpp
|
| index fc39473b041f5c52542f49be8c0d10bafef8159e..381699155ed8dd1f0ed028de2feb652c7ada56e4 100644
|
| --- a/fpdfsdk/cpdfsdk_xfawidgethandler.cpp
|
| +++ b/fpdfsdk/cpdfsdk_xfawidgethandler.cpp
|
| @@ -138,118 +138,126 @@ FX_BOOL CPDFSDK_XFAWidgetHandler::HitTest(CPDFSDK_PageView* pPageView,
|
| }
|
|
|
| void CPDFSDK_XFAWidgetHandler::OnMouseEnter(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlag) {
|
| - if (!pPageView || !pAnnot)
|
| + if (!pPageView || !(*pAnnot))
|
| return;
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - pWidgetHandler->OnMouseEnter(pAnnot->GetXFAWidget());
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + pWidgetHandler->OnMouseEnter((*pAnnot)->GetXFAWidget());
|
| }
|
|
|
| void CPDFSDK_XFAWidgetHandler::OnMouseExit(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlag) {
|
| - if (!pPageView || !pAnnot)
|
| + if (!pPageView || !(*pAnnot))
|
| return;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - pWidgetHandler->OnMouseExit(pAnnot->GetXFAWidget());
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + pWidgetHandler->OnMouseExit((*pAnnot)->GetXFAWidget());
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnLButtonDown(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlags,
|
| - const CFX_FloatPoint& point) {
|
| - if (!pPageView || !pAnnot)
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnLButtonDown(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlags,
|
| + const CFX_FloatPoint& point) {
|
| + if (!pPageView || !(*pAnnot))
|
| return FALSE;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - return pWidgetHandler->OnLButtonDown(pAnnot->GetXFAWidget(),
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + return pWidgetHandler->OnLButtonDown((*pAnnot)->GetXFAWidget(),
|
| GetFWLFlags(nFlags), point.x, point.y);
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnLButtonUp(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlags,
|
| - const CFX_FloatPoint& point) {
|
| - if (!pPageView || !pAnnot)
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnLButtonUp(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlags,
|
| + const CFX_FloatPoint& point) {
|
| + if (!pPageView || !(*pAnnot))
|
| return FALSE;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - return pWidgetHandler->OnLButtonUp(pAnnot->GetXFAWidget(),
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + return pWidgetHandler->OnLButtonUp((*pAnnot)->GetXFAWidget(),
|
| GetFWLFlags(nFlags), point.x, point.y);
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnLButtonDblClk(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlags,
|
| - const CFX_FloatPoint& point) {
|
| - if (!pPageView || !pAnnot)
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnLButtonDblClk(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlags,
|
| + const CFX_FloatPoint& point) {
|
| + if (!pPageView || !(*pAnnot))
|
| return FALSE;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - return pWidgetHandler->OnLButtonDblClk(pAnnot->GetXFAWidget(),
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + return pWidgetHandler->OnLButtonDblClk((*pAnnot)->GetXFAWidget(),
|
| GetFWLFlags(nFlags), point.x, point.y);
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnMouseMove(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlags,
|
| - const CFX_FloatPoint& point) {
|
| - if (!pPageView || !pAnnot)
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnMouseMove(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlags,
|
| + const CFX_FloatPoint& point) {
|
| + if (!pPageView || !(*pAnnot))
|
| return FALSE;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - return pWidgetHandler->OnMouseMove(pAnnot->GetXFAWidget(),
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + return pWidgetHandler->OnMouseMove((*pAnnot)->GetXFAWidget(),
|
| GetFWLFlags(nFlags), point.x, point.y);
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnMouseWheel(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlags,
|
| - short zDelta,
|
| - const CFX_FloatPoint& point) {
|
| - if (!pPageView || !pAnnot)
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnMouseWheel(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlags,
|
| + short zDelta,
|
| + const CFX_FloatPoint& point) {
|
| + if (!pPageView || !(*pAnnot))
|
| return FALSE;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| return pWidgetHandler->OnMouseWheel(
|
| - pAnnot->GetXFAWidget(), GetFWLFlags(nFlags), zDelta, point.x, point.y);
|
| + (*pAnnot)->GetXFAWidget(), GetFWLFlags(nFlags), zDelta, point.x, point.y);
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnRButtonDown(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlags,
|
| - const CFX_FloatPoint& point) {
|
| - if (!pPageView || !pAnnot)
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnRButtonDown(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlags,
|
| + const CFX_FloatPoint& point) {
|
| + if (!pPageView || !(*pAnnot))
|
| return FALSE;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - return pWidgetHandler->OnRButtonDown(pAnnot->GetXFAWidget(),
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + return pWidgetHandler->OnRButtonDown((*pAnnot)->GetXFAWidget(),
|
| GetFWLFlags(nFlags), point.x, point.y);
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnRButtonUp(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlags,
|
| - const CFX_FloatPoint& point) {
|
| - if (!pPageView || !pAnnot)
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnRButtonUp(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlags,
|
| + const CFX_FloatPoint& point) {
|
| + if (!pPageView || !(*pAnnot))
|
| return FALSE;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - return pWidgetHandler->OnRButtonUp(pAnnot->GetXFAWidget(),
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + return pWidgetHandler->OnRButtonUp((*pAnnot)->GetXFAWidget(),
|
| GetFWLFlags(nFlags), point.x, point.y);
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnRButtonDblClk(CPDFSDK_PageView* pPageView,
|
| - CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlags,
|
| - const CFX_FloatPoint& point) {
|
| - if (!pPageView || !pAnnot)
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnRButtonDblClk(
|
| + CPDFSDK_PageView* pPageView,
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlags,
|
| + const CFX_FloatPoint& point) {
|
| + if (!pPageView || !(*pAnnot))
|
| return FALSE;
|
|
|
| - CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot);
|
| - return pWidgetHandler->OnRButtonDblClk(pAnnot->GetXFAWidget(),
|
| + CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot->Get());
|
| + return pWidgetHandler->OnRButtonDblClk((*pAnnot)->GetXFAWidget(),
|
| GetFWLFlags(nFlags), point.x, point.y);
|
| }
|
|
|
| @@ -290,40 +298,42 @@ void CPDFSDK_XFAWidgetHandler::OnDeSelected(CPDFSDK_Annot* pAnnot) {}
|
|
|
| void CPDFSDK_XFAWidgetHandler::OnSelected(CPDFSDK_Annot* pAnnot) {}
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnSetFocus(CPDFSDK_Annot* pAnnot,
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnSetFocus(CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| uint32_t nFlag) {
|
| return TRUE;
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnKillFocus(CPDFSDK_Annot* pAnnot,
|
| - uint32_t nFlag) {
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnKillFocus(
|
| + CPDFSDK_Annot::ObservedPtr* pAnnot,
|
| + uint32_t nFlag) {
|
| return TRUE;
|
| }
|
|
|
| -FX_BOOL CPDFSDK_XFAWidgetHandler::OnXFAChangedFocus(CPDFSDK_Annot* pOldAnnot,
|
| - CPDFSDK_Annot* pNewAnnot) {
|
| +FX_BOOL CPDFSDK_XFAWidgetHandler::OnXFAChangedFocus(
|
| + CPDFSDK_Annot::ObservedPtr* pOldAnnot,
|
| + CPDFSDK_Annot::ObservedPtr* pNewAnnot) {
|
| CXFA_FFWidgetHandler* pWidgetHandler = nullptr;
|
| + if (*pOldAnnot)
|
| + pWidgetHandler = GetXFAWidgetHandler(pOldAnnot->Get());
|
| + else if (*pNewAnnot)
|
| + pWidgetHandler = GetXFAWidgetHandler(pNewAnnot->Get());
|
|
|
| - if (pOldAnnot)
|
| - pWidgetHandler = GetXFAWidgetHandler(pOldAnnot);
|
| - else if (pNewAnnot)
|
| - pWidgetHandler = GetXFAWidgetHandler(pNewAnnot);
|
| -
|
| - if (pWidgetHandler) {
|
| - FX_BOOL bRet = TRUE;
|
| - CXFA_FFWidget* hWidget = pNewAnnot ? pNewAnnot->GetXFAWidget() : nullptr;
|
| - if (hWidget) {
|
| - CXFA_FFPageView* pXFAPageView = hWidget->GetPageView();
|
| - if (pXFAPageView) {
|
| - bRet = pXFAPageView->GetDocView()->SetFocus(hWidget);
|
| - if (pXFAPageView->GetDocView()->GetFocusWidget() == hWidget)
|
| - bRet = TRUE;
|
| - }
|
| - }
|
| - return bRet;
|
| - }
|
| + if (!pWidgetHandler)
|
| + return TRUE;
|
|
|
| - return TRUE;
|
| + CXFA_FFWidget* hWidget = *pNewAnnot ? (*pNewAnnot)->GetXFAWidget() : nullptr;
|
| + if (!hWidget)
|
| + return TRUE;
|
| +
|
| + CXFA_FFPageView* pXFAPageView = hWidget->GetPageView();
|
| + if (!pXFAPageView)
|
| + return TRUE;
|
| +
|
| + FX_BOOL bRet = pXFAPageView->GetDocView()->SetFocus(hWidget);
|
| + if (pXFAPageView->GetDocView()->GetFocusWidget() == hWidget)
|
| + bRet = TRUE;
|
| +
|
| + return bRet;
|
| }
|
|
|
| CXFA_FFWidgetHandler* CPDFSDK_XFAWidgetHandler::GetXFAWidgetHandler(
|
|
|