Index: fpdfsdk/formfiller/cffl_interactiveformfiller.cpp |
diff --git a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp |
index 3d1a716580a9ce51943aa8d9908c63c3712324f7..dbe31f7857fb3cf78debd1ca9e16276a456a5c76 100644 |
--- a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp |
+++ b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp |
@@ -122,20 +122,18 @@ void CFFL_InteractiveFormFiller::OnDelete(CPDFSDK_Annot* pAnnot) { |
UnRegisterFormFiller(pAnnot); |
} |
-void CFFL_InteractiveFormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
- uint32_t nFlag) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
+void CFFL_InteractiveFormFiller::OnMouseEnter( |
+ CPDFSDK_PageView* pPageView, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlag) { |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
if (!m_bNotifying) { |
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) { |
m_bNotifying = TRUE; |
int nValueAge = pWidget->GetValueAge(); |
- |
pWidget->ClearAppModified(); |
- |
ASSERT(pPageView); |
PDFSDK_FieldAction fa; |
@@ -143,6 +141,8 @@ void CFFL_InteractiveFormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, |
fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView); |
m_bNotifying = FALSE; |
+ if (!(*pAnnot)) |
+ return; |
if (pWidget->IsAppModified()) { |
if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { |
@@ -152,33 +152,31 @@ void CFFL_InteractiveFormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, |
} |
} |
} |
- |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) { |
- pFormFiller->OnMouseEnter(pPageView, pAnnot); |
- } |
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE)) |
+ pFormFiller->OnMouseEnter(pPageView, pAnnot->Get()); |
} |
void CFFL_InteractiveFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
uint32_t nFlag) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
if (!m_bNotifying) { |
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) { |
m_bNotifying = TRUE; |
pWidget->GetAppearanceAge(); |
+ |
int nValueAge = pWidget->GetValueAge(); |
pWidget->ClearAppModified(); |
- |
ASSERT(pPageView); |
PDFSDK_FieldAction fa; |
fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
- |
pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView); |
m_bNotifying = FALSE; |
+ if (!(*pAnnot)) |
+ return; |
if (pWidget->IsAppModified()) { |
if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { |
@@ -188,27 +186,25 @@ void CFFL_InteractiveFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, |
} |
} |
} |
- |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
- pFormFiller->OnMouseExit(pPageView, pAnnot); |
- } |
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) |
+ pFormFiller->OnMouseExit(pPageView, pAnnot->Get()); |
} |
-FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
- uint32_t nFlags, |
- const CFX_FloatPoint& point) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
+FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDown( |
+ CPDFSDK_PageView* pPageView, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlags, |
+ const CFX_FloatPoint& point) { |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
if (!m_bNotifying) { |
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
- if (Annot_HitTest(pPageView, pAnnot, point) && |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
+ if (Annot_HitTest(pPageView, pAnnot->Get(), point) && |
pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) { |
m_bNotifying = TRUE; |
pWidget->GetAppearanceAge(); |
+ |
int nValueAge = pWidget->GetValueAge(); |
pWidget->ClearAppModified(); |
- |
ASSERT(pPageView); |
PDFSDK_FieldAction fa; |
@@ -216,8 +212,10 @@ FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, |
fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlags); |
pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView); |
m_bNotifying = FALSE; |
+ if (!(*pAnnot)) |
+ return TRUE; |
- if (!IsValidAnnot(pPageView, pAnnot)) |
+ if (!IsValidAnnot(pPageView, pAnnot->Get())) |
return TRUE; |
if (pWidget->IsAppModified()) { |
@@ -228,27 +226,27 @@ FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, |
} |
} |
} |
- |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
- return pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point); |
- } |
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) |
+ return pFormFiller->OnLButtonDown(pPageView, pAnnot->Get(), nFlags, point); |
return FALSE; |
} |
-FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
- uint32_t nFlags, |
- const CFX_FloatPoint& point) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
+FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp( |
+ CPDFSDK_PageView* pPageView, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlags, |
+ const CFX_FloatPoint& point) { |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
CPDFSDK_Document* pDocument = m_pEnv->GetSDKDocument(); |
switch (pWidget->GetFieldType()) { |
case FIELDTYPE_PUSHBUTTON: |
case FIELDTYPE_CHECKBOX: |
case FIELDTYPE_RADIOBUTTON: |
- if (GetViewBBox(pPageView, pAnnot).Contains((int)point.x, (int)point.y)) |
+ if (GetViewBBox(pPageView, pAnnot->Get()) |
+ .Contains((int)point.x, (int)point.y)) |
pDocument->SetFocusAnnot(pAnnot); |
break; |
default: |
@@ -257,59 +255,52 @@ FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView, |
} |
FX_BOOL bRet = FALSE; |
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) |
+ bRet = pFormFiller->OnLButtonUp(pPageView, pAnnot->Get(), nFlags, point); |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
- bRet = pFormFiller->OnLButtonUp(pPageView, pAnnot, nFlags, point); |
- } |
- |
- if (pDocument->GetFocusAnnot() == pAnnot) { |
+ if (pDocument->GetFocusAnnot() == pAnnot->Get()) { |
FX_BOOL bExit = FALSE; |
FX_BOOL bReset = FALSE; |
- OnButtonUp(pWidget, pPageView, bReset, bExit, nFlags); |
- if (bExit) |
+ OnButtonUp(pAnnot, pPageView, bReset, bExit, nFlags); |
+ if (!pAnnot || bExit) |
return TRUE; |
#ifdef PDF_ENABLE_XFA |
OnClick(pWidget, pPageView, bReset, bExit, nFlags); |
- if (bExit) |
+ if (!pAnnot || bExit) |
return TRUE; |
#endif // PDF_ENABLE_XFA |
} |
return bRet; |
} |
-void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Widget* pWidget, |
+void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot, |
CPDFSDK_PageView* pPageView, |
FX_BOOL& bReset, |
FX_BOOL& bExit, |
uint32_t nFlag) { |
- ASSERT(pWidget); |
- |
if (!m_bNotifying) { |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) { |
m_bNotifying = TRUE; |
+ |
int nAge = pWidget->GetAppearanceAge(); |
int nValueAge = pWidget->GetValueAge(); |
- |
ASSERT(pPageView); |
PDFSDK_FieldAction fa; |
fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
- |
pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView); |
m_bNotifying = FALSE; |
- |
- if (!IsValidAnnot(pPageView, pWidget)) { |
+ if (!(*pAnnot) || !IsValidAnnot(pPageView, pWidget)) { |
bExit = TRUE; |
return; |
} |
- |
if (nAge != pWidget->GetAppearanceAge()) { |
if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { |
pFormFiller->ResetPDFWindow(pPageView, |
nValueAge == pWidget->GetValueAge()); |
} |
- |
bReset = TRUE; |
} |
} |
@@ -318,70 +309,59 @@ void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Widget* pWidget, |
FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDblClk( |
CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
uint32_t nFlags, |
const CFX_FloatPoint& point) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
- return pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point); |
- } |
- |
- return FALSE; |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE); |
+ return pFormFiller && |
+ pFormFiller->OnLButtonDblClk(pPageView, pAnnot->Get(), nFlags, point); |
} |
-FX_BOOL CFFL_InteractiveFormFiller::OnMouseMove(CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
- uint32_t nFlags, |
- const CFX_FloatPoint& point) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
- // change cursor |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) { |
- return pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point); |
- } |
- |
- return FALSE; |
+FX_BOOL CFFL_InteractiveFormFiller::OnMouseMove( |
+ CPDFSDK_PageView* pPageView, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlags, |
+ const CFX_FloatPoint& point) { |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE); |
+ return pFormFiller && |
+ pFormFiller->OnMouseMove(pPageView, pAnnot->Get(), nFlags, point); |
} |
-FX_BOOL CFFL_InteractiveFormFiller::OnMouseWheel(CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
- uint32_t nFlags, |
- short zDelta, |
- const CFX_FloatPoint& point) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
- return pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta, point); |
- } |
- |
- return FALSE; |
+FX_BOOL CFFL_InteractiveFormFiller::OnMouseWheel( |
+ CPDFSDK_PageView* pPageView, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlags, |
+ short zDelta, |
+ const CFX_FloatPoint& point) { |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE); |
+ return pFormFiller && |
+ pFormFiller->OnMouseWheel(pPageView, pAnnot->Get(), nFlags, zDelta, |
+ point); |
} |
-FX_BOOL CFFL_InteractiveFormFiller::OnRButtonDown(CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
- uint32_t nFlags, |
- const CFX_FloatPoint& point) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
- return pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point); |
- } |
- |
- return FALSE; |
+FX_BOOL CFFL_InteractiveFormFiller::OnRButtonDown( |
+ CPDFSDK_PageView* pPageView, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlags, |
+ const CFX_FloatPoint& point) { |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE); |
+ return pFormFiller && |
+ pFormFiller->OnRButtonDown(pPageView, pAnnot->Get(), nFlags, point); |
} |
-FX_BOOL CFFL_InteractiveFormFiller::OnRButtonUp(CPDFSDK_PageView* pPageView, |
- CPDFSDK_Annot* pAnnot, |
- uint32_t nFlags, |
- const CFX_FloatPoint& point) { |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
- return pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point); |
- } |
- |
- return FALSE; |
+FX_BOOL CFFL_InteractiveFormFiller::OnRButtonUp( |
+ CPDFSDK_PageView* pPageView, |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlags, |
+ const CFX_FloatPoint& point) { |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE); |
+ return pFormFiller && |
+ pFormFiller->OnRButtonUp(pPageView, pAnnot->Get(), nFlags, point); |
} |
FX_BOOL CFFL_InteractiveFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, |
@@ -409,15 +389,15 @@ FX_BOOL CFFL_InteractiveFormFiller::OnChar(CPDFSDK_Annot* pAnnot, |
return FALSE; |
} |
-FX_BOOL CFFL_InteractiveFormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, |
- uint32_t nFlag) { |
- if (!pAnnot) |
+FX_BOOL CFFL_InteractiveFormFiller::OnSetFocus( |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlag) { |
+ if (!(*pAnnot)) |
return FALSE; |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
if (!m_bNotifying) { |
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
if (pWidget->GetAAction(CPDF_AAction::GetFocus).GetDict()) { |
m_bNotifying = TRUE; |
pWidget->GetAppearanceAge(); |
@@ -425,19 +405,21 @@ FX_BOOL CFFL_InteractiveFormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, |
int nValueAge = pWidget->GetValueAge(); |
pWidget->ClearAppModified(); |
- CPDFSDK_PageView* pPageView = pAnnot->GetPageView(); |
+ CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE); |
+ if (!pFormFiller) |
+ return FALSE; |
+ |
+ CPDFSDK_PageView* pPageView = (*pAnnot)->GetPageView(); |
ASSERT(pPageView); |
PDFSDK_FieldAction fa; |
fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
- |
- CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE); |
- if (!pFormFiller) |
- return FALSE; |
pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa); |
pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView); |
m_bNotifying = FALSE; |
+ if (!(*pAnnot)) |
+ return FALSE; |
if (pWidget->IsAppModified()) { |
if (CFFL_FormFiller* pFiller = GetFormFiller(pWidget, FALSE)) { |
@@ -448,23 +430,23 @@ FX_BOOL CFFL_InteractiveFormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, |
} |
} |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) |
- pFormFiller->SetFocusForAnnot(pAnnot, nFlag); |
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE)) |
+ pFormFiller->SetFocusForAnnot(pAnnot->Get(), nFlag); |
return TRUE; |
} |
-FX_BOOL CFFL_InteractiveFormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, |
- uint32_t nFlag) { |
- if (!pAnnot) |
+FX_BOOL CFFL_InteractiveFormFiller::OnKillFocus( |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ uint32_t nFlag) { |
+ if (!(*pAnnot)) |
return FALSE; |
- ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
- |
- if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
- pFormFiller->KillFocusForAnnot(pAnnot, nFlag); |
+ ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
+ if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) { |
+ pFormFiller->KillFocusForAnnot(pAnnot->Get(), nFlag); |
if (!m_bNotifying) { |
- CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) { |
m_bNotifying = TRUE; |
pWidget->ClearAppModified(); |
@@ -475,15 +457,14 @@ FX_BOOL CFFL_InteractiveFormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, |
PDFSDK_FieldAction fa; |
fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
- |
pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa); |
- |
pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView); |
m_bNotifying = FALSE; |
+ if (!(*pAnnot)) |
+ return FALSE; |
} |
} |
} |
- |
return TRUE; |
} |
@@ -640,18 +621,19 @@ void CFFL_InteractiveFormFiller::QueryWherePopup(void* pPrivateData, |
fPopupRet = fFactHeight; |
} |
-void CFFL_InteractiveFormFiller::OnKeyStrokeCommit(CPDFSDK_Widget* pWidget, |
- CPDFSDK_PageView* pPageView, |
- FX_BOOL& bRC, |
- FX_BOOL& bExit, |
- uint32_t nFlag) { |
+void CFFL_InteractiveFormFiller::OnKeyStrokeCommit( |
+ CPDFSDK_Annot::ObservedPtr* pAnnot, |
+ CPDFSDK_PageView* pPageView, |
+ FX_BOOL& bRC, |
+ FX_BOOL& bExit, |
+ uint32_t nFlag) { |
if (!m_bNotifying) { |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { |
+ ASSERT(pPageView); |
m_bNotifying = TRUE; |
pWidget->ClearAppModified(); |
- ASSERT(pPageView); |
- |
PDFSDK_FieldAction fa; |
fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
@@ -662,8 +644,9 @@ void CFFL_InteractiveFormFiller::OnKeyStrokeCommit(CPDFSDK_Widget* pWidget, |
CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); |
pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa); |
pFormFiller->SaveState(pPageView); |
- |
pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView); |
+ if (!(*pAnnot)) |
+ return; |
bRC = fa.bRC; |
m_bNotifying = FALSE; |
@@ -671,18 +654,18 @@ void CFFL_InteractiveFormFiller::OnKeyStrokeCommit(CPDFSDK_Widget* pWidget, |
} |
} |
-void CFFL_InteractiveFormFiller::OnValidate(CPDFSDK_Widget* pWidget, |
+void CFFL_InteractiveFormFiller::OnValidate(CPDFSDK_Annot::ObservedPtr* pAnnot, |
CPDFSDK_PageView* pPageView, |
FX_BOOL& bRC, |
FX_BOOL& bExit, |
uint32_t nFlag) { |
if (!m_bNotifying) { |
+ CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) { |
+ ASSERT(pPageView); |
m_bNotifying = TRUE; |
pWidget->ClearAppModified(); |
- ASSERT(pPageView); |
- |
PDFSDK_FieldAction fa; |
fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
@@ -692,8 +675,9 @@ void CFFL_InteractiveFormFiller::OnValidate(CPDFSDK_Widget* pWidget, |
CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); |
pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa); |
pFormFiller->SaveState(pPageView); |
- |
pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView); |
+ if (!(*pAnnot)) |
+ return; |
bRC = fa.bRC; |
m_bNotifying = FALSE; |
@@ -820,10 +804,8 @@ void CFFL_InteractiveFormFiller::OnPopupPreOpen(void* pPrivateData, |
FX_BOOL bTempReset = FALSE; |
FX_BOOL bTempExit = FALSE; |
OnPreOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); |
- |
- if (bTempReset || bTempExit) { |
+ if (bTempReset || bTempExit) |
bExit = TRUE; |
- } |
} |
void CFFL_InteractiveFormFiller::OnPopupPostOpen(void* pPrivateData, |
@@ -836,10 +818,8 @@ void CFFL_InteractiveFormFiller::OnPopupPostOpen(void* pPrivateData, |
FX_BOOL bTempReset = FALSE; |
FX_BOOL bTempExit = FALSE; |
OnPostOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); |
- |
- if (bTempReset || bTempExit) { |
+ if (bTempReset || bTempExit) |
bExit = TRUE; |
- } |
} |
void CFFL_InteractiveFormFiller::OnPreOpen(CPDFSDK_Widget* pWidget, |
@@ -915,10 +895,7 @@ void CFFL_InteractiveFormFiller::OnPostOpen(CPDFSDK_Widget* pWidget, |
FX_BOOL CFFL_InteractiveFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView, |
CPDFSDK_Annot* pAnnot) { |
- if (pPageView) |
- return pPageView->IsValidAnnot(pAnnot->GetPDFAnnot()); |
- |
- return FALSE; |
+ return pPageView && pPageView->IsValidAnnot(pAnnot->GetPDFAnnot()); |
} |
void CFFL_InteractiveFormFiller::OnBeforeKeyStroke( |
@@ -971,9 +948,10 @@ void CFFL_InteractiveFormFiller::OnBeforeKeyStroke( |
pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa); |
pFormFiller->SaveState(pData->pPageView); |
+ CPDFSDK_Annot::ObservedPtr pObserved(pData->pWidget); |
if (pData->pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, |
pData->pPageView)) { |
- if (!IsValidAnnot(pData->pPageView, pData->pWidget)) { |
+ if (!pObserved || !IsValidAnnot(pData->pPageView, pData->pWidget)) { |
bExit = TRUE; |
m_bNotifying = FALSE; |
return; |