summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fpdfsdk/formfiller/cffl_checkbox.cpp12
-rw-r--r--fpdfsdk/formfiller/cffl_interactiveformfiller.cpp24
-rw-r--r--fpdfsdk/formfiller/cffl_interactiveformfiller.h4
-rw-r--r--fpdfsdk/formfiller/cffl_radiobutton.cpp9
4 files changed, 19 insertions, 30 deletions
diff --git a/fpdfsdk/formfiller/cffl_checkbox.cpp b/fpdfsdk/formfiller/cffl_checkbox.cpp
index a89e76ac0d..4bab95a54e 100644
--- a/fpdfsdk/formfiller/cffl_checkbox.cpp
+++ b/fpdfsdk/formfiller/cffl_checkbox.cpp
@@ -45,17 +45,17 @@ bool CFFL_CheckBox::OnChar(CPDFSDK_Annot* pAnnot,
CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
ASSERT(pPageView);
- bool bReset = false;
- bool bExit = false;
CPDFSDK_Annot::ObservedPtr pObserved(m_pWidget.Get());
- m_pFormFillEnv->GetInteractiveFormFiller()->OnButtonUp(
- &pObserved, pPageView, bReset, bExit, nFlags);
+ if (m_pFormFillEnv->GetInteractiveFormFiller()->OnButtonUp(
+ &pObserved, pPageView, nFlags)) {
+ if (!pObserved)
+ m_pWidget = nullptr;
+ return true;
+ }
if (!pObserved) {
m_pWidget = nullptr;
return true;
}
- if (bReset || bExit)
- return true;
CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
CPWL_CheckBox* pWnd = GetCheckBox(pPageView, true);
diff --git a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
index f5931d5a59..d318111ee6 100644
--- a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
+++ b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
@@ -244,11 +244,7 @@ bool CFFL_InteractiveFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView,
pFormFiller->OnLButtonUp(pPageView, pAnnot->Get(), nFlags, point);
if (m_pFormFillEnv->GetFocusAnnot() != pAnnot->Get())
return bRet;
-
- bool bExit = false;
- bool bReset = false;
- OnButtonUp(pAnnot, pPageView, bReset, bExit, nFlags);
- if (!pAnnot || bExit)
+ if (OnButtonUp(pAnnot, pPageView, nFlags) || !pAnnot)
return true;
#ifdef PDF_ENABLE_XFA
if (OnClick(pAnnot, pPageView, nFlags) || !pAnnot)
@@ -257,17 +253,15 @@ bool CFFL_InteractiveFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView,
return bRet;
}
-void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot,
+bool CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot,
CPDFSDK_PageView* pPageView,
- bool& bReset,
- bool& bExit,
uint32_t nFlag) {
if (m_bNotifying)
- return;
+ return false;
CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
if (!pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict())
- return;
+ return false;
m_bNotifying = true;
@@ -280,17 +274,15 @@ void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot,
fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView);
m_bNotifying = false;
- if (!(*pAnnot) || !IsValidAnnot(pPageView, pWidget)) {
- bExit = true;
- return;
- }
+ if (!(*pAnnot) || !IsValidAnnot(pPageView, pWidget))
+ return true;
if (nAge == pWidget->GetAppearanceAge())
- return;
+ return false;
CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false);
if (pFormFiller)
pFormFiller->ResetPDFWindow(pPageView, nValueAge == pWidget->GetValueAge());
- bReset = true;
+ return true;
}
bool CFFL_InteractiveFormFiller::OnLButtonDblClk(
diff --git a/fpdfsdk/formfiller/cffl_interactiveformfiller.h b/fpdfsdk/formfiller/cffl_interactiveformfiller.h
index de5aafd7e1..05fdf0d6c7 100644
--- a/fpdfsdk/formfiller/cffl_interactiveformfiller.h
+++ b/fpdfsdk/formfiller/cffl_interactiveformfiller.h
@@ -101,10 +101,8 @@ class CFFL_InteractiveFormFiller : public IPWL_Filler_Notify {
void OnFormat(CPDFSDK_Annot::ObservedPtr* pAnnot,
CPDFSDK_PageView* pPageView,
uint32_t nFlag);
- void OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot,
+ bool OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot,
CPDFSDK_PageView* pPageView,
- bool& bReset,
- bool& bExit,
uint32_t nFlag);
#ifdef PDF_ENABLE_XFA
bool OnClick(CPDFSDK_Annot::ObservedPtr* pAnnot,
diff --git a/fpdfsdk/formfiller/cffl_radiobutton.cpp b/fpdfsdk/formfiller/cffl_radiobutton.cpp
index 9ffdf494ca..e36e1f7554 100644
--- a/fpdfsdk/formfiller/cffl_radiobutton.cpp
+++ b/fpdfsdk/formfiller/cffl_radiobutton.cpp
@@ -48,13 +48,12 @@ bool CFFL_RadioButton::OnChar(CPDFSDK_Annot* pAnnot,
CPDFSDK_PageView* pPageView = pAnnot->GetPageView();
ASSERT(pPageView);
- bool bReset = false;
- bool bExit = false;
CPDFSDK_Annot::ObservedPtr pObserved(m_pWidget.Get());
- m_pFormFillEnv->GetInteractiveFormFiller()->OnButtonUp(
- &pObserved, pPageView, bReset, bExit, nFlags);
- if (!pObserved || bReset || bExit)
+ if (m_pFormFillEnv->GetInteractiveFormFiller()->OnButtonUp(
+ &pObserved, pPageView, nFlags) ||
+ !pObserved) {
return true;
+ }
CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
CPWL_RadioButton* pWnd = GetRadioButton(pPageView, true);