summaryrefslogtreecommitdiff
path: root/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/formfiller/cffl_interactiveformfiller.cpp')
-rw-r--r--fpdfsdk/formfiller/cffl_interactiveformfiller.cpp33
1 files changed, 14 insertions, 19 deletions
diff --git a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
index d318111ee6..d718e7ca40 100644
--- a/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
+++ b/fpdfsdk/formfiller/cffl_interactiveformfiller.cpp
@@ -839,16 +839,16 @@ bool CFFL_InteractiveFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView,
return pPageView && pPageView->IsValidAnnot(pAnnot->GetPDFAnnot());
}
-void CFFL_InteractiveFormFiller::OnBeforeKeyStroke(
+std::pair<bool, bool> CFFL_InteractiveFormFiller::OnBeforeKeyStroke(
void* pPrivateData,
CFX_WideString& strChange,
const CFX_WideString& strChangeEx,
int nSelStart,
int nSelEnd,
bool bKeyDown,
- bool& bRC,
- bool& bExit,
uint32_t nFlag) {
+ bool bRC = true;
+ bool bExit = false;
CFFL_PrivateData* pData = reinterpret_cast<CFFL_PrivateData*>(pPrivateData);
ASSERT(pData->pWidget);
@@ -857,18 +857,15 @@ void CFFL_InteractiveFormFiller::OnBeforeKeyStroke(
#ifdef PDF_ENABLE_XFA
if (pFormFiller->IsFieldFull(pData->pPageView)) {
CPDFSDK_Annot::ObservedPtr pObserved(pData->pWidget);
- if (OnFull(&pObserved, pData->pPageView, nFlag) || !pObserved) {
- bExit = true;
- return;
- }
+ if (OnFull(&pObserved, pData->pPageView, nFlag) || !pObserved)
+ return {bRC, true};
}
#endif // PDF_ENABLE_XFA
- if (m_bNotifying)
- return;
-
- if (!pData->pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict())
- return;
+ if (m_bNotifying ||
+ !pData->pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) {
+ return {bRC, bExit};
+ }
CFX_AutoRestorer<bool> restorer(&m_bNotifying);
m_bNotifying = true;
@@ -897,13 +894,11 @@ void CFFL_InteractiveFormFiller::OnBeforeKeyStroke(
pData->pPageView)) {
if (!IsValidAnnot(pData->pPageView, pData->pWidget))
bExit = true;
- return;
+ return {bRC, bExit};
}
- if (!pObserved || !IsValidAnnot(pData->pPageView, pData->pWidget)) {
- bExit = true;
- return;
- }
+ if (!pObserved || !IsValidAnnot(pData->pPageView, pData->pWidget))
+ return {bRC, true};
if (nAge != pData->pWidget->GetAppearanceAge()) {
CPWL_Wnd* pWnd = pFormFiller->ResetPDFWindow(
@@ -919,8 +914,8 @@ void CFFL_InteractiveFormFiller::OnBeforeKeyStroke(
bRC = false;
if (pFormFillEnv->GetFocusAnnot() == pData->pWidget)
- return;
+ return {bRC, bExit};
pFormFiller->CommitData(pData->pPageView, nFlag);
- bExit = true;
+ return {bRC, true};
}