Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Side by Side Diff: fpdfsdk/javascript/Field.cpp

Issue 2319663002: Fixup CPDFSDK_PageView and CPDF_Page interactions. (Closed)
Patch Set: review feedback Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/include/fsdk_mgr.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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_Annot* pAnnot : widgets) { 271 for (CPDFSDK_Annot* pAnnot : widgets) {
271 FX_BOOL bFormatted = FALSE; 272 FX_BOOL bFormatted = FALSE;
272 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot); 273 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot);
273 CPDFSDK_Widget::Observer observer(&pAnnot); 274 CPDFSDK_Widget::Observer observer(&pAnnot);
274 CFX_WideString sValue = pWidget->OnFormat(bFormatted); 275 CFX_WideString sValue = pWidget->OnFormat(bFormatted);
275 if (pAnnot) { 276 if (pAnnot) {
276 pWidget->ResetAppearance(bFormatted ? sValue.c_str() : nullptr, 277 pWidget->ResetAppearance(bFormatted ? sValue.c_str() : nullptr,
277 FALSE); 278 FALSE);
278 } 279 }
279 } 280 }
280 } else { 281 } else {
281 for (CPDFSDK_Widget* pWidget : widgets) { 282 for (CPDFSDK_Widget* pWidget : widgets) {
282 pWidget->ResetAppearance(nullptr, FALSE); 283 pWidget->ResetAppearance(nullptr, FALSE);
283 } 284 }
284 } 285 }
285 } 286 }
286 287
287 if (bRefresh) { 288 if (bRefresh) {
289 // Refresh the widget list. The calls in |bResetAP| may have caused widgets
290 // to be removed from the list. We need to call |GetWidgets| again to be
291 // sure none of the widgets have been deleted.
292 std::vector<CPDFSDK_Widget*> widgets;
293 pInterForm->GetWidgets(pFormField, &widgets);
294
288 for (CPDFSDK_Widget* pWidget : widgets) { 295 for (CPDFSDK_Widget* pWidget : widgets) {
289 CPDFSDK_Document* pDoc = pWidget->GetInterForm()->GetDocument(); 296 CPDFSDK_Document* pDoc = pWidget->GetInterForm()->GetDocument();
290 pDoc->UpdateAllViews(nullptr, pWidget); 297 pDoc->UpdateAllViews(nullptr, pWidget);
291 } 298 }
292 } 299 }
293 300
294 if (bChangeMark) 301 if (bChangeMark)
295 pDocument->SetChangeMark(); 302 pDocument->SetChangeMark();
296 } 303 }
297 304
(...skipping 3173 matching lines...) Expand 10 before | Expand all | Expand 10 after
3471 } 3478 }
3472 } 3479 }
3473 3480
3474 void Field::AddField(CPDFSDK_Document* pDocument, 3481 void Field::AddField(CPDFSDK_Document* pDocument,
3475 int nPageIndex, 3482 int nPageIndex,
3476 int nFieldType, 3483 int nFieldType,
3477 const CFX_WideString& sName, 3484 const CFX_WideString& sName,
3478 const CFX_FloatRect& rcCoords) { 3485 const CFX_FloatRect& rcCoords) {
3479 // Not supported. 3486 // Not supported.
3480 } 3487 }
OLDNEW
« no previous file with comments | « fpdfsdk/include/fsdk_mgr.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698