| Index: fpdfsdk/src/javascript/Document.cpp
|
| diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
|
| index e128860863de616279d4c010a26dcf3868c6eead..43d25041503767569c431e58ed44cdc12e404cb7 100644
|
| --- a/fpdfsdk/src/javascript/Document.cpp
|
| +++ b/fpdfsdk/src/javascript/Document.cpp
|
| @@ -520,35 +520,30 @@ FX_BOOL Document::removeField(IJS_Context* cc,
|
| (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
|
| ASSERT(pInterForm != NULL);
|
|
|
| - CFX_PtrArray widgets;
|
| - pInterForm->GetWidgets(sFieldName, widgets);
|
| + std::vector<CPDFSDK_Widget*> widgets;
|
| + pInterForm->GetWidgets(sFieldName, &widgets);
|
|
|
| - int nSize = widgets.GetSize();
|
| -
|
| - if (nSize > 0) {
|
| - for (int i = 0; i < nSize; i++) {
|
| - CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets[i];
|
| - ASSERT(pWidget != NULL);
|
| -
|
| - CPDF_Rect rcAnnot = pWidget->GetRect();
|
| - rcAnnot.left -= 1;
|
| - rcAnnot.bottom -= 1;
|
| - rcAnnot.right += 1;
|
| - rcAnnot.top += 1;
|
| + if (widgets.empty())
|
| + return TRUE;
|
|
|
| - CFX_RectArray aRefresh;
|
| - aRefresh.Add(rcAnnot);
|
| + for (CPDFSDK_Widget* pWidget : widgets) {
|
| + CPDF_Rect rcAnnot = pWidget->GetRect();
|
| + --rcAnnot.left;
|
| + --rcAnnot.bottom;
|
| + ++rcAnnot.right;
|
| + ++rcAnnot.top;
|
|
|
| - CPDFXFA_Page* pPage = pWidget->GetPDFXFAPage();
|
| - ASSERT(pPage != NULL);
|
| + CFX_RectArray aRefresh;
|
| + aRefresh.Add(rcAnnot);
|
|
|
| - CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage);
|
| - pPageView->DeleteAnnot(pWidget);
|
| + CPDFXFA_Page* pPage = pWidget->GetPDFXFAPage();
|
| + ASSERT(pPage);
|
|
|
| - pPageView->UpdateRects(aRefresh);
|
| - }
|
| - m_pDocument->SetChangeMark();
|
| + CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage);
|
| + pPageView->DeleteAnnot(pWidget);
|
| + pPageView->UpdateRects(aRefresh);
|
| }
|
| + m_pDocument->SetChangeMark();
|
|
|
| return TRUE;
|
| }
|
| @@ -572,33 +567,33 @@ FX_BOOL Document::resetForm(IJS_Context* cc,
|
| CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| CJS_Array aName(pRuntime);
|
|
|
| - if (params.size() > 0) {
|
| - switch (params[0].GetType()) {
|
| - default:
|
| - aName.Attach(params[0].ToV8Array());
|
| - break;
|
| - case CJS_Value::VT_string:
|
| - aName.SetElement(0, params[0]);
|
| - break;
|
| - }
|
| + // TODO(thestig) Convert CJS_Parameters to a std::vector and use .empty().
|
| + if (params.size() <= 0) {
|
| + pPDFForm->ResetForm(TRUE);
|
| + m_pDocument->SetChangeMark();
|
| + return TRUE;
|
| + }
|
|
|
| - CFX_PtrArray aFields;
|
| + switch (params[0].GetType()) {
|
| + default:
|
| + aName.Attach(params[0].ToV8Array());
|
| + break;
|
| + case CJS_Value::VT_string:
|
| + aName.SetElement(0, params[0]);
|
| + break;
|
| + }
|
|
|
| - for (int i = 0, isz = aName.GetLength(); i < isz; i++) {
|
| - CJS_Value valElement(pRuntime);
|
| - aName.GetElement(i, valElement);
|
| - CFX_WideString swVal = valElement.ToCFXWideString();
|
| - for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; j++) {
|
| - aFields.Add((void*)pPDFForm->GetField(j, swVal));
|
| - }
|
| - }
|
| + std::vector<CPDF_FormField*> aFields;
|
| + for (int i = 0, isz = aName.GetLength(); i < isz; ++i) {
|
| + CJS_Value valElement(pRuntime);
|
| + aName.GetElement(i, valElement);
|
| + CFX_WideString swVal = valElement.ToCFXWideString();
|
| + for (int j = 0, jsz = pPDFForm->CountFields(swVal); j < jsz; ++j)
|
| + aFields.push_back(pPDFForm->GetField(j, swVal));
|
| + }
|
|
|
| - if (aFields.GetSize() > 0) {
|
| - pPDFForm->ResetForm(aFields, TRUE, TRUE);
|
| - m_pDocument->SetChangeMark();
|
| - }
|
| - } else {
|
| - pPDFForm->ResetForm(TRUE);
|
| + if (!aFields.empty()) {
|
| + pPDFForm->ResetForm(aFields, TRUE, TRUE);
|
| m_pDocument->SetChangeMark();
|
| }
|
|
|
| @@ -663,7 +658,7 @@ FX_BOOL Document::submitForm(IJS_Context* cc,
|
| CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
|
| FX_BOOL bAll = (aFields.GetLength() == 0);
|
| if (bAll && bEmpty) {
|
| - if (pPDFInterForm->CheckRequiredFields()) {
|
| + if (pPDFInterForm->CheckRequiredFields(nullptr, true)) {
|
| pRuntime->BeginBlock();
|
| pInterForm->SubmitForm(strURL, FALSE);
|
| pRuntime->EndBlock();
|
| @@ -671,8 +666,8 @@ FX_BOOL Document::submitForm(IJS_Context* cc,
|
| return TRUE;
|
| }
|
|
|
| - CFX_PtrArray fieldObjects;
|
| - for (int i = 0, sz = aFields.GetLength(); i < sz; i++) {
|
| + std::vector<CPDF_FormField*> fieldObjects;
|
| + for (int i = 0, sz = aFields.GetLength(); i < sz; ++i) {
|
| CJS_Value valName(pRuntime);
|
| aFields.GetElement(i, valName);
|
|
|
| @@ -683,11 +678,11 @@ FX_BOOL Document::submitForm(IJS_Context* cc,
|
| if (!bEmpty && pField->GetValue().IsEmpty())
|
| continue;
|
|
|
| - fieldObjects.Add(pField);
|
| + fieldObjects.push_back(pField);
|
| }
|
| }
|
|
|
| - if (pPDFInterForm->CheckRequiredFields(&fieldObjects, TRUE)) {
|
| + if (pPDFInterForm->CheckRequiredFields(&fieldObjects, true)) {
|
| pRuntime->BeginBlock();
|
| pInterForm->SubmitFields(strURL, fieldObjects, TRUE, !bFDF);
|
| pRuntime->EndBlock();
|
|
|