summaryrefslogtreecommitdiff
path: root/fpdfsdk/cpdfsdk_interform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/cpdfsdk_interform.cpp')
-rw-r--r--fpdfsdk/cpdfsdk_interform.cpp32
1 files changed, 11 insertions, 21 deletions
diff --git a/fpdfsdk/cpdfsdk_interform.cpp b/fpdfsdk/cpdfsdk_interform.cpp
index 549caafb51..2cc20f9d98 100644
--- a/fpdfsdk/cpdfsdk_interform.cpp
+++ b/fpdfsdk/cpdfsdk_interform.cpp
@@ -323,14 +323,11 @@ void CPDFSDK_InterForm::OnCalculate(CPDF_FormField* pFormField) {
}
}
-WideString CPDFSDK_InterForm::OnFormat(CPDF_FormField* pFormField,
- bool& bFormatted) {
- WideString sValue = pFormField->GetValue();
- if (!m_pFormFillEnv->IsJSPlatformPresent()) {
- bFormatted = false;
- return sValue;
- }
+Optional<WideString> CPDFSDK_InterForm::OnFormat(CPDF_FormField* pFormField) {
+ if (!m_pFormFillEnv->IsJSPlatformPresent())
+ return {};
+ WideString sValue = pFormField->GetValue();
IJS_Runtime* pRuntime = m_pFormFillEnv->GetIJSRuntime();
if (pFormField->GetFieldType() == FormFieldType::kComboBox &&
pFormField->CountSelectedItems() > 0) {
@@ -339,30 +336,25 @@ WideString CPDFSDK_InterForm::OnFormat(CPDF_FormField* pFormField,
sValue = pFormField->GetOptionLabel(index);
}
- bFormatted = false;
-
CPDF_AAction aAction = pFormField->GetAdditionalAction();
if (aAction.GetDict() && aAction.ActionExist(CPDF_AAction::Format)) {
CPDF_Action action = aAction.GetAction(CPDF_AAction::Format);
if (action.GetDict()) {
WideString script = action.GetJavaScript();
if (!script.IsEmpty()) {
- WideString Value = sValue;
IJS_Runtime::ScopedEventContext pContext(pRuntime);
- pContext->OnField_Format(pFormField, &Value, true);
+ pContext->OnField_Format(pFormField, &sValue, true);
Optional<IJS_Runtime::JS_Error> err = pContext->RunScript(script);
- if (!err) {
- sValue = std::move(Value);
- bFormatted = true;
- }
+ if (!err)
+ return sValue;
}
}
}
- return sValue;
+ return {};
}
void CPDFSDK_InterForm::ResetFieldAppearance(CPDF_FormField* pFormField,
- const WideString* sValue,
+ Optional<WideString> sValue,
bool bValueChanged) {
for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
CPDF_FormControl* pFormCtrl = pFormField->GetControl(i);
@@ -591,9 +583,7 @@ void CPDFSDK_InterForm::AfterValueChange(CPDF_FormField* pField) {
return;
OnCalculate(pField);
- bool bFormatted = false;
- WideString sValue = OnFormat(pField, bFormatted);
- ResetFieldAppearance(pField, bFormatted ? &sValue : nullptr, true);
+ ResetFieldAppearance(pField, OnFormat(pField), true);
UpdateField(pField);
}
@@ -611,7 +601,7 @@ void CPDFSDK_InterForm::AfterSelectionChange(CPDF_FormField* pField) {
return;
OnCalculate(pField);
- ResetFieldAppearance(pField, nullptr, true);
+ ResetFieldAppearance(pField, pdfium::nullopt, true);
UpdateField(pField);
}