| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "fpdfsdk/javascript/Field.h" | 7 #include "fpdfsdk/javascript/Field.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 std::vector<CPDF_FormField*> Field::GetFormFields( | 253 std::vector<CPDF_FormField*> Field::GetFormFields( |
| 254 const CFX_WideString& csFieldName) const { | 254 const CFX_WideString& csFieldName) const { |
| 255 return Field::GetFormFields(m_pDocument, csFieldName); | 255 return Field::GetFormFields(m_pDocument, csFieldName); |
| 256 } | 256 } |
| 257 | 257 |
| 258 void Field::UpdateFormField(CPDFSDK_Document* pDocument, | 258 void Field::UpdateFormField(CPDFSDK_Document* pDocument, |
| 259 CPDF_FormField* pFormField, | 259 CPDF_FormField* pFormField, |
| 260 FX_BOOL bChangeMark, | 260 FX_BOOL bChangeMark, |
| 261 FX_BOOL bResetAP, | 261 FX_BOOL bResetAP, |
| 262 FX_BOOL bRefresh) { | 262 FX_BOOL bRefresh) { |
| 263 std::vector<CPDFSDK_Widget*> widgets; | |
| 264 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 263 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
| 265 pInterForm->GetWidgets(pFormField, &widgets); | |
| 266 | 264 |
| 267 if (bResetAP) { | 265 if (bResetAP) { |
| 266 std::vector<CPDFSDK_Widget*> widgets; |
| 267 pInterForm->GetWidgets(pFormField, &widgets); |
| 268 |
| 268 int nFieldType = pFormField->GetFieldType(); | 269 int nFieldType = pFormField->GetFieldType(); |
| 269 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) { | 270 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD) { |
| 270 for (CPDFSDK_Widget* pWidget : widgets) { | 271 for (CPDFSDK_Widget* pWidget : widgets) { |
| 271 FX_BOOL bFormatted = FALSE; | 272 FX_BOOL bFormatted = FALSE; |
| 272 CPDFSDK_Widget::Observer observer(&pWidget); | 273 CPDFSDK_Widget::Observer observer(&pWidget); |
| 273 CFX_WideString sValue = pWidget->OnFormat(bFormatted); | 274 CFX_WideString sValue = pWidget->OnFormat(bFormatted); |
| 274 if (pWidget) { | 275 if (pWidget) { |
| 275 pWidget->ResetAppearance(bFormatted ? sValue.c_str() : nullptr, | 276 pWidget->ResetAppearance(bFormatted ? sValue.c_str() : nullptr, |
| 276 FALSE); | 277 FALSE); |
| 277 } | 278 } |
| 278 } | 279 } |
| 279 } else { | 280 } else { |
| 280 for (CPDFSDK_Widget* pWidget : widgets) { | 281 for (CPDFSDK_Widget* pWidget : widgets) { |
| 281 pWidget->ResetAppearance(nullptr, FALSE); | 282 pWidget->ResetAppearance(nullptr, FALSE); |
| 282 } | 283 } |
| 283 } | 284 } |
| 284 } | 285 } |
| 285 | 286 |
| 286 if (bRefresh) { | 287 if (bRefresh) { |
| 288 // Refresh the widget list. The calls in |bResetAP| may have caused widgets |
| 289 // to be removed from the list. We need to call |GetWidgets| again to be |
| 290 // sure none of the widgets have been deleted. |
| 291 std::vector<CPDFSDK_Widget*> widgets; |
| 292 pInterForm->GetWidgets(pFormField, &widgets); |
| 293 |
| 287 for (CPDFSDK_Widget* pWidget : widgets) { | 294 for (CPDFSDK_Widget* pWidget : widgets) { |
| 288 CPDFSDK_Document* pDoc = pWidget->GetInterForm()->GetDocument(); | 295 CPDFSDK_Document* pDoc = pWidget->GetInterForm()->GetDocument(); |
| 289 pDoc->UpdateAllViews(nullptr, pWidget); | 296 pDoc->UpdateAllViews(nullptr, pWidget); |
| 290 } | 297 } |
| 291 } | 298 } |
| 292 | 299 |
| 293 if (bChangeMark) | 300 if (bChangeMark) |
| 294 pDocument->SetChangeMark(); | 301 pDocument->SetChangeMark(); |
| 295 } | 302 } |
| 296 | 303 |
| (...skipping 3173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3470 } | 3477 } |
| 3471 } | 3478 } |
| 3472 | 3479 |
| 3473 void Field::AddField(CPDFSDK_Document* pDocument, | 3480 void Field::AddField(CPDFSDK_Document* pDocument, |
| 3474 int nPageIndex, | 3481 int nPageIndex, |
| 3475 int nFieldType, | 3482 int nFieldType, |
| 3476 const CFX_WideString& sName, | 3483 const CFX_WideString& sName, |
| 3477 const CFX_FloatRect& rcCoords) { | 3484 const CFX_FloatRect& rcCoords) { |
| 3478 // Not supported. | 3485 // Not supported. |
| 3479 } | 3486 } |
| OLD | NEW |