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

Side by Side Diff: fpdfsdk/formfiller/cffl_interactiveformfiller.cpp

Issue 2400473002: Start proxying CPDFSDK_Document methods through CPDFSDK_FormFillEnvironment (Closed)
Patch Set: Rebase to master Created 4 years, 2 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/formfiller/cffl_interactiveformfiller.h ('k') | fpdfsdk/fpdfformfill.cpp » ('j') | 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/formfiller/cffl_interactiveformfiller.h" 7 #include "fpdfsdk/formfiller/cffl_interactiveformfiller.h"
8 8
9 #include "core/fpdfapi/page/cpdf_page.h" 9 #include "core/fpdfapi/page/cpdf_page.h"
10 #include "core/fpdfapi/parser/cpdf_document.h" 10 #include "core/fpdfapi/parser/cpdf_document.h"
(...skipping 10 matching lines...) Expand all
21 #include "fpdfsdk/formfiller/cffl_formfiller.h" 21 #include "fpdfsdk/formfiller/cffl_formfiller.h"
22 #include "fpdfsdk/formfiller/cffl_listbox.h" 22 #include "fpdfsdk/formfiller/cffl_listbox.h"
23 #include "fpdfsdk/formfiller/cffl_pushbutton.h" 23 #include "fpdfsdk/formfiller/cffl_pushbutton.h"
24 #include "fpdfsdk/formfiller/cffl_radiobutton.h" 24 #include "fpdfsdk/formfiller/cffl_radiobutton.h"
25 #include "fpdfsdk/formfiller/cffl_textfield.h" 25 #include "fpdfsdk/formfiller/cffl_textfield.h"
26 #include "fpdfsdk/pdfwindow/PWL_Utils.h" 26 #include "fpdfsdk/pdfwindow/PWL_Utils.h"
27 27
28 #define FFL_MAXLISTBOXHEIGHT 140.0f 28 #define FFL_MAXLISTBOXHEIGHT 140.0f
29 29
30 CFFL_InteractiveFormFiller::CFFL_InteractiveFormFiller( 30 CFFL_InteractiveFormFiller::CFFL_InteractiveFormFiller(
31 CPDFSDK_FormFillEnvironment* pEnv) 31 CPDFSDK_FormFillEnvironment* pFormFillEnv)
32 : m_pEnv(pEnv), m_bNotifying(FALSE) {} 32 : m_pFormFillEnv(pFormFillEnv), m_bNotifying(FALSE) {}
33 33
34 CFFL_InteractiveFormFiller::~CFFL_InteractiveFormFiller() {} 34 CFFL_InteractiveFormFiller::~CFFL_InteractiveFormFiller() {}
35 35
36 FX_BOOL CFFL_InteractiveFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView, 36 FX_BOOL CFFL_InteractiveFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView,
37 CPDFSDK_Annot* pAnnot, 37 CPDFSDK_Annot* pAnnot,
38 CFX_FloatPoint point) { 38 CFX_FloatPoint point) {
39 CFX_FloatRect rc = pAnnot->GetRect(); 39 CFX_FloatRect rc = pAnnot->GetRect();
40 return rc.Contains(point.x, point.y); 40 return rc.Contains(point.x, point.y);
41 } 41 }
42 42
(...skipping 17 matching lines...) Expand all
60 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; 60 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
61 61
62 if (!IsVisible(pWidget)) 62 if (!IsVisible(pWidget))
63 return; 63 return;
64 64
65 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 65 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
66 if (pFormFiller->IsValid()) { 66 if (pFormFiller->IsValid()) {
67 pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device); 67 pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device);
68 pAnnot->GetPDFPage(); 68 pAnnot->GetPDFPage();
69 69
70 CPDFSDK_Document* pDocument = m_pEnv->GetSDKDocument(); 70 CPDFSDK_Document* pDocument = m_pFormFillEnv->GetSDKDocument();
71 if (pDocument->GetFocusAnnot() == pAnnot) { 71 if (pDocument->GetFocusAnnot() == pAnnot) {
72 CFX_FloatRect rcFocus = pFormFiller->GetFocusBox(pPageView); 72 CFX_FloatRect rcFocus = pFormFiller->GetFocusBox(pPageView);
73 if (!rcFocus.IsEmpty()) { 73 if (!rcFocus.IsEmpty()) {
74 CFX_PathData path; 74 CFX_PathData path;
75 path.SetPointCount(5); 75 path.SetPointCount(5);
76 path.SetPoint(0, rcFocus.left, rcFocus.top, FXPT_MOVETO); 76 path.SetPoint(0, rcFocus.left, rcFocus.top, FXPT_MOVETO);
77 path.SetPoint(1, rcFocus.left, rcFocus.bottom, FXPT_LINETO); 77 path.SetPoint(1, rcFocus.left, rcFocus.bottom, FXPT_LINETO);
78 path.SetPoint(2, rcFocus.right, rcFocus.bottom, FXPT_LINETO); 78 path.SetPoint(2, rcFocus.right, rcFocus.bottom, FXPT_LINETO);
79 path.SetPoint(3, rcFocus.right, rcFocus.top, FXPT_LINETO); 79 path.SetPoint(3, rcFocus.right, rcFocus.top, FXPT_LINETO);
80 path.SetPoint(4, rcFocus.left, rcFocus.top, FXPT_LINETO); 80 path.SetPoint(4, rcFocus.left, rcFocus.top, FXPT_LINETO);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 if (!m_bNotifying) { 130 if (!m_bNotifying) {
131 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); 131 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
132 if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) { 132 if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) {
133 m_bNotifying = TRUE; 133 m_bNotifying = TRUE;
134 134
135 int nValueAge = pWidget->GetValueAge(); 135 int nValueAge = pWidget->GetValueAge();
136 pWidget->ClearAppModified(); 136 pWidget->ClearAppModified();
137 ASSERT(pPageView); 137 ASSERT(pPageView);
138 138
139 PDFSDK_FieldAction fa; 139 PDFSDK_FieldAction fa;
140 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 140 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
141 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 141 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
142 pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView); 142 pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView);
143 m_bNotifying = FALSE; 143 m_bNotifying = FALSE;
144 if (!(*pAnnot)) 144 if (!(*pAnnot))
145 return; 145 return;
146 146
147 if (pWidget->IsAppModified()) { 147 if (pWidget->IsAppModified()) {
148 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { 148 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
149 pFormFiller->ResetPDFWindow(pPageView, 149 pFormFiller->ResetPDFWindow(pPageView,
150 pWidget->GetValueAge() == nValueAge); 150 pWidget->GetValueAge() == nValueAge);
151 } 151 }
(...skipping 12 matching lines...) Expand all
164 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); 164 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
165 if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) { 165 if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) {
166 m_bNotifying = TRUE; 166 m_bNotifying = TRUE;
167 pWidget->GetAppearanceAge(); 167 pWidget->GetAppearanceAge();
168 168
169 int nValueAge = pWidget->GetValueAge(); 169 int nValueAge = pWidget->GetValueAge();
170 pWidget->ClearAppModified(); 170 pWidget->ClearAppModified();
171 ASSERT(pPageView); 171 ASSERT(pPageView);
172 172
173 PDFSDK_FieldAction fa; 173 PDFSDK_FieldAction fa;
174 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 174 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
175 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 175 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
176 pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView); 176 pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView);
177 m_bNotifying = FALSE; 177 m_bNotifying = FALSE;
178 if (!(*pAnnot)) 178 if (!(*pAnnot))
179 return; 179 return;
180 180
181 if (pWidget->IsAppModified()) { 181 if (pWidget->IsAppModified()) {
182 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { 182 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
183 pFormFiller->ResetPDFWindow(pPageView, 183 pFormFiller->ResetPDFWindow(pPageView,
184 nValueAge == pWidget->GetValueAge()); 184 nValueAge == pWidget->GetValueAge());
185 } 185 }
(...skipping 15 matching lines...) Expand all
201 if (Annot_HitTest(pPageView, pAnnot->Get(), point) && 201 if (Annot_HitTest(pPageView, pAnnot->Get(), point) &&
202 pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) { 202 pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) {
203 m_bNotifying = TRUE; 203 m_bNotifying = TRUE;
204 pWidget->GetAppearanceAge(); 204 pWidget->GetAppearanceAge();
205 205
206 int nValueAge = pWidget->GetValueAge(); 206 int nValueAge = pWidget->GetValueAge();
207 pWidget->ClearAppModified(); 207 pWidget->ClearAppModified();
208 ASSERT(pPageView); 208 ASSERT(pPageView);
209 209
210 PDFSDK_FieldAction fa; 210 PDFSDK_FieldAction fa;
211 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlags); 211 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlags);
212 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlags); 212 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlags);
213 pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView); 213 pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView);
214 m_bNotifying = FALSE; 214 m_bNotifying = FALSE;
215 if (!(*pAnnot)) 215 if (!(*pAnnot))
216 return TRUE; 216 return TRUE;
217 217
218 if (!IsValidAnnot(pPageView, pAnnot->Get())) 218 if (!IsValidAnnot(pPageView, pAnnot->Get()))
219 return TRUE; 219 return TRUE;
220 220
221 if (pWidget->IsAppModified()) { 221 if (pWidget->IsAppModified()) {
222 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { 222 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
223 pFormFiller->ResetPDFWindow(pPageView, 223 pFormFiller->ResetPDFWindow(pPageView,
224 nValueAge == pWidget->GetValueAge()); 224 nValueAge == pWidget->GetValueAge());
225 } 225 }
226 } 226 }
227 } 227 }
228 } 228 }
229 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) 229 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE))
230 return pFormFiller->OnLButtonDown(pPageView, pAnnot->Get(), nFlags, point); 230 return pFormFiller->OnLButtonDown(pPageView, pAnnot->Get(), nFlags, point);
231 231
232 return FALSE; 232 return FALSE;
233 } 233 }
234 234
235 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp( 235 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp(
236 CPDFSDK_PageView* pPageView, 236 CPDFSDK_PageView* pPageView,
237 CPDFSDK_Annot::ObservedPtr* pAnnot, 237 CPDFSDK_Annot::ObservedPtr* pAnnot,
238 uint32_t nFlags, 238 uint32_t nFlags,
239 const CFX_FloatPoint& point) { 239 const CFX_FloatPoint& point) {
240 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 240 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
241 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); 241 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
242 CPDFSDK_Document* pDocument = m_pEnv->GetSDKDocument(); 242 CPDFSDK_Document* pDocument = m_pFormFillEnv->GetSDKDocument();
243 243
244 switch (pWidget->GetFieldType()) { 244 switch (pWidget->GetFieldType()) {
245 case FIELDTYPE_PUSHBUTTON: 245 case FIELDTYPE_PUSHBUTTON:
246 case FIELDTYPE_CHECKBOX: 246 case FIELDTYPE_CHECKBOX:
247 case FIELDTYPE_RADIOBUTTON: 247 case FIELDTYPE_RADIOBUTTON:
248 if (GetViewBBox(pPageView, pAnnot->Get()) 248 if (GetViewBBox(pPageView, pAnnot->Get())
249 .Contains((int)point.x, (int)point.y)) 249 .Contains((int)point.x, (int)point.y))
250 pDocument->SetFocusAnnot(pAnnot); 250 pDocument->SetFocusAnnot(pAnnot);
251 break; 251 break;
252 default: 252 default:
(...skipping 28 matching lines...) Expand all
281 if (!m_bNotifying) { 281 if (!m_bNotifying) {
282 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); 282 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
283 if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) { 283 if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) {
284 m_bNotifying = TRUE; 284 m_bNotifying = TRUE;
285 285
286 int nAge = pWidget->GetAppearanceAge(); 286 int nAge = pWidget->GetAppearanceAge();
287 int nValueAge = pWidget->GetValueAge(); 287 int nValueAge = pWidget->GetValueAge();
288 ASSERT(pPageView); 288 ASSERT(pPageView);
289 289
290 PDFSDK_FieldAction fa; 290 PDFSDK_FieldAction fa;
291 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 291 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
292 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 292 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
293 pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView); 293 pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView);
294 m_bNotifying = FALSE; 294 m_bNotifying = FALSE;
295 if (!(*pAnnot) || !IsValidAnnot(pPageView, pWidget)) { 295 if (!(*pAnnot) || !IsValidAnnot(pPageView, pWidget)) {
296 bExit = TRUE; 296 bExit = TRUE;
297 return; 297 return;
298 } 298 }
299 if (nAge != pWidget->GetAppearanceAge()) { 299 if (nAge != pWidget->GetAppearanceAge()) {
300 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { 300 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
301 pFormFiller->ResetPDFWindow(pPageView, 301 pFormFiller->ResetPDFWindow(pPageView,
302 nValueAge == pWidget->GetValueAge()); 302 nValueAge == pWidget->GetValueAge());
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 pWidget->ClearAppModified(); 406 pWidget->ClearAppModified();
407 407
408 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE); 408 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE);
409 if (!pFormFiller) 409 if (!pFormFiller)
410 return FALSE; 410 return FALSE;
411 411
412 CPDFSDK_PageView* pPageView = (*pAnnot)->GetPageView(); 412 CPDFSDK_PageView* pPageView = (*pAnnot)->GetPageView();
413 ASSERT(pPageView); 413 ASSERT(pPageView);
414 414
415 PDFSDK_FieldAction fa; 415 PDFSDK_FieldAction fa;
416 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 416 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
417 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 417 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
418 pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa); 418 pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa);
419 pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView); 419 pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView);
420 m_bNotifying = FALSE; 420 m_bNotifying = FALSE;
421 if (!(*pAnnot)) 421 if (!(*pAnnot))
422 return FALSE; 422 return FALSE;
423 423
424 if (pWidget->IsAppModified()) { 424 if (pWidget->IsAppModified()) {
425 if (CFFL_FormFiller* pFiller = GetFormFiller(pWidget, FALSE)) { 425 if (CFFL_FormFiller* pFiller = GetFormFiller(pWidget, FALSE)) {
426 pFiller->ResetPDFWindow(pPageView, 426 pFiller->ResetPDFWindow(pPageView,
427 nValueAge == pWidget->GetValueAge()); 427 nValueAge == pWidget->GetValueAge());
(...skipping 20 matching lines...) Expand all
448 if (!m_bNotifying) { 448 if (!m_bNotifying) {
449 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); 449 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
450 if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) { 450 if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) {
451 m_bNotifying = TRUE; 451 m_bNotifying = TRUE;
452 pWidget->ClearAppModified(); 452 pWidget->ClearAppModified();
453 453
454 CPDFSDK_PageView* pPageView = pWidget->GetPageView(); 454 CPDFSDK_PageView* pPageView = pWidget->GetPageView();
455 ASSERT(pPageView); 455 ASSERT(pPageView);
456 456
457 PDFSDK_FieldAction fa; 457 PDFSDK_FieldAction fa;
458 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 458 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
459 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 459 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
460 pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa); 460 pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa);
461 pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView); 461 pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView);
462 m_bNotifying = FALSE; 462 m_bNotifying = FALSE;
463 if (!(*pAnnot)) 463 if (!(*pAnnot))
464 return FALSE; 464 return FALSE;
465 } 465 }
466 } 466 }
467 } 467 }
468 return TRUE; 468 return TRUE;
469 } 469 }
(...skipping 27 matching lines...) Expand all
497 return it->second.get(); 497 return it->second.get();
498 498
499 if (!bRegister) 499 if (!bRegister)
500 return nullptr; 500 return nullptr;
501 501
502 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; 502 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot;
503 int nFieldType = pWidget->GetFieldType(); 503 int nFieldType = pWidget->GetFieldType();
504 CFFL_FormFiller* pFormFiller; 504 CFFL_FormFiller* pFormFiller;
505 switch (nFieldType) { 505 switch (nFieldType) {
506 case FIELDTYPE_PUSHBUTTON: 506 case FIELDTYPE_PUSHBUTTON:
507 pFormFiller = new CFFL_PushButton(m_pEnv, pWidget); 507 pFormFiller = new CFFL_PushButton(m_pFormFillEnv, pWidget);
508 break; 508 break;
509 case FIELDTYPE_CHECKBOX: 509 case FIELDTYPE_CHECKBOX:
510 pFormFiller = new CFFL_CheckBox(m_pEnv, pWidget); 510 pFormFiller = new CFFL_CheckBox(m_pFormFillEnv, pWidget);
511 break; 511 break;
512 case FIELDTYPE_RADIOBUTTON: 512 case FIELDTYPE_RADIOBUTTON:
513 pFormFiller = new CFFL_RadioButton(m_pEnv, pWidget); 513 pFormFiller = new CFFL_RadioButton(m_pFormFillEnv, pWidget);
514 break; 514 break;
515 case FIELDTYPE_TEXTFIELD: 515 case FIELDTYPE_TEXTFIELD:
516 pFormFiller = new CFFL_TextField(m_pEnv, pWidget); 516 pFormFiller = new CFFL_TextField(m_pFormFillEnv, pWidget);
517 break; 517 break;
518 case FIELDTYPE_LISTBOX: 518 case FIELDTYPE_LISTBOX:
519 pFormFiller = new CFFL_ListBox(m_pEnv, pWidget); 519 pFormFiller = new CFFL_ListBox(m_pFormFillEnv, pWidget);
520 break; 520 break;
521 case FIELDTYPE_COMBOBOX: 521 case FIELDTYPE_COMBOBOX:
522 pFormFiller = new CFFL_ComboBox(m_pEnv, pWidget); 522 pFormFiller = new CFFL_ComboBox(m_pFormFillEnv, pWidget);
523 break; 523 break;
524 case FIELDTYPE_UNKNOWN: 524 case FIELDTYPE_UNKNOWN:
525 default: 525 default:
526 pFormFiller = nullptr; 526 pFormFiller = nullptr;
527 break; 527 break;
528 } 528 }
529 529
530 if (!pFormFiller) 530 if (!pFormFiller)
531 return nullptr; 531 return nullptr;
532 532
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 FX_BOOL& bExit, 628 FX_BOOL& bExit,
629 uint32_t nFlag) { 629 uint32_t nFlag) {
630 if (!m_bNotifying) { 630 if (!m_bNotifying) {
631 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); 631 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
632 if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { 632 if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) {
633 ASSERT(pPageView); 633 ASSERT(pPageView);
634 m_bNotifying = TRUE; 634 m_bNotifying = TRUE;
635 pWidget->ClearAppModified(); 635 pWidget->ClearAppModified();
636 636
637 PDFSDK_FieldAction fa; 637 PDFSDK_FieldAction fa;
638 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 638 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
639 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 639 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
640 fa.bWillCommit = TRUE; 640 fa.bWillCommit = TRUE;
641 fa.bKeyDown = TRUE; 641 fa.bKeyDown = TRUE;
642 fa.bRC = TRUE; 642 fa.bRC = TRUE;
643 643
644 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); 644 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE);
645 pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa); 645 pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa);
646 pFormFiller->SaveState(pPageView); 646 pFormFiller->SaveState(pPageView);
647 pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView); 647 pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView);
648 if (!(*pAnnot)) 648 if (!(*pAnnot))
649 return; 649 return;
(...skipping 10 matching lines...) Expand all
660 FX_BOOL& bExit, 660 FX_BOOL& bExit,
661 uint32_t nFlag) { 661 uint32_t nFlag) {
662 if (!m_bNotifying) { 662 if (!m_bNotifying) {
663 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); 663 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
664 if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) { 664 if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) {
665 ASSERT(pPageView); 665 ASSERT(pPageView);
666 m_bNotifying = TRUE; 666 m_bNotifying = TRUE;
667 pWidget->ClearAppModified(); 667 pWidget->ClearAppModified();
668 668
669 PDFSDK_FieldAction fa; 669 PDFSDK_FieldAction fa;
670 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 670 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
671 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 671 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
672 fa.bKeyDown = TRUE; 672 fa.bKeyDown = TRUE;
673 fa.bRC = TRUE; 673 fa.bRC = TRUE;
674 674
675 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); 675 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE);
676 pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa); 676 pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa);
677 pFormFiller->SaveState(pPageView); 677 pFormFiller->SaveState(pPageView);
678 pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView); 678 pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView);
679 if (!(*pAnnot)) 679 if (!(*pAnnot))
680 return; 680 return;
681 681
682 bRC = fa.bRC; 682 bRC = fa.bRC;
683 m_bNotifying = FALSE; 683 m_bNotifying = FALSE;
684 } 684 }
685 } 685 }
686 } 686 }
687 687
688 void CFFL_InteractiveFormFiller::OnCalculate(CPDFSDK_Widget* pWidget, 688 void CFFL_InteractiveFormFiller::OnCalculate(CPDFSDK_Widget* pWidget,
689 CPDFSDK_PageView* pPageView, 689 CPDFSDK_PageView* pPageView,
690 FX_BOOL& bExit, 690 FX_BOOL& bExit,
691 uint32_t nFlag) { 691 uint32_t nFlag) {
692 if (!m_bNotifying) { 692 if (!m_bNotifying) {
693 ASSERT(pWidget); 693 ASSERT(pWidget);
694 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); 694 pPageView->GetFormFillEnv()->GetInterForm()->OnCalculate(
695 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); 695 pWidget->GetFormField());
696 pInterForm->OnCalculate(pWidget->GetFormField());
697 m_bNotifying = FALSE; 696 m_bNotifying = FALSE;
698 } 697 }
699 } 698 }
700 699
701 void CFFL_InteractiveFormFiller::OnFormat(CPDFSDK_Widget* pWidget, 700 void CFFL_InteractiveFormFiller::OnFormat(CPDFSDK_Widget* pWidget,
702 CPDFSDK_PageView* pPageView, 701 CPDFSDK_PageView* pPageView,
703 FX_BOOL& bExit, 702 FX_BOOL& bExit,
704 uint32_t nFlag) { 703 uint32_t nFlag) {
705 if (!m_bNotifying) { 704 if (!m_bNotifying) {
706 ASSERT(pWidget); 705 ASSERT(pWidget);
707 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); 706 CPDFSDK_InterForm* pInterForm = pPageView->GetFormFillEnv()->GetInterForm();
708 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm();
709 707
710 FX_BOOL bFormatted = FALSE; 708 FX_BOOL bFormatted = FALSE;
711 CFX_WideString sValue = 709 CFX_WideString sValue =
712 pInterForm->OnFormat(pWidget->GetFormField(), bFormatted); 710 pInterForm->OnFormat(pWidget->GetFormField(), bFormatted);
713 711
714 if (bExit) 712 if (bExit)
715 return; 713 return;
716 714
717 if (bFormatted) { 715 if (bFormatted) {
718 pInterForm->ResetFieldAppearance(pWidget->GetFormField(), &sValue, TRUE); 716 pInterForm->ResetFieldAppearance(pWidget->GetFormField(), &sValue, TRUE);
(...skipping 10 matching lines...) Expand all
729 FX_BOOL& bReset, 727 FX_BOOL& bReset,
730 FX_BOOL& bExit, 728 FX_BOOL& bExit,
731 uint32_t nFlag) { 729 uint32_t nFlag) {
732 if (!m_bNotifying) { 730 if (!m_bNotifying) {
733 if (pWidget->HasXFAAAction(PDFSDK_XFA_Click)) { 731 if (pWidget->HasXFAAAction(PDFSDK_XFA_Click)) {
734 m_bNotifying = TRUE; 732 m_bNotifying = TRUE;
735 int nAge = pWidget->GetAppearanceAge(); 733 int nAge = pWidget->GetAppearanceAge();
736 int nValueAge = pWidget->GetValueAge(); 734 int nValueAge = pWidget->GetValueAge();
737 735
738 PDFSDK_FieldAction fa; 736 PDFSDK_FieldAction fa;
739 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 737 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
740 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 738 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
741 739
742 pWidget->OnXFAAAction(PDFSDK_XFA_Click, fa, pPageView); 740 pWidget->OnXFAAAction(PDFSDK_XFA_Click, fa, pPageView);
743 m_bNotifying = FALSE; 741 m_bNotifying = FALSE;
744 742
745 if (!IsValidAnnot(pPageView, pWidget)) { 743 if (!IsValidAnnot(pPageView, pWidget)) {
746 bExit = TRUE; 744 bExit = TRUE;
747 return; 745 return;
748 } 746 }
749 747
750 if (nAge != pWidget->GetAppearanceAge()) { 748 if (nAge != pWidget->GetAppearanceAge()) {
(...skipping 13 matching lines...) Expand all
764 FX_BOOL& bReset, 762 FX_BOOL& bReset,
765 FX_BOOL& bExit, 763 FX_BOOL& bExit,
766 uint32_t nFlag) { 764 uint32_t nFlag) {
767 if (!m_bNotifying) { 765 if (!m_bNotifying) {
768 if (pWidget->HasXFAAAction(PDFSDK_XFA_Full)) { 766 if (pWidget->HasXFAAAction(PDFSDK_XFA_Full)) {
769 m_bNotifying = TRUE; 767 m_bNotifying = TRUE;
770 int nAge = pWidget->GetAppearanceAge(); 768 int nAge = pWidget->GetAppearanceAge();
771 int nValueAge = pWidget->GetValueAge(); 769 int nValueAge = pWidget->GetValueAge();
772 770
773 PDFSDK_FieldAction fa; 771 PDFSDK_FieldAction fa;
774 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 772 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
775 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 773 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
776 774
777 pWidget->OnXFAAAction(PDFSDK_XFA_Full, fa, pPageView); 775 pWidget->OnXFAAAction(PDFSDK_XFA_Full, fa, pPageView);
778 m_bNotifying = FALSE; 776 m_bNotifying = FALSE;
779 777
780 if (!IsValidAnnot(pPageView, pWidget)) { 778 if (!IsValidAnnot(pPageView, pWidget)) {
781 bExit = TRUE; 779 bExit = TRUE;
782 return; 780 return;
783 } 781 }
784 782
785 if (nAge != pWidget->GetAppearanceAge()) { 783 if (nAge != pWidget->GetAppearanceAge()) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 FX_BOOL& bReset, 825 FX_BOOL& bReset,
828 FX_BOOL& bExit, 826 FX_BOOL& bExit,
829 uint32_t nFlag) { 827 uint32_t nFlag) {
830 if (!m_bNotifying) { 828 if (!m_bNotifying) {
831 if (pWidget->HasXFAAAction(PDFSDK_XFA_PreOpen)) { 829 if (pWidget->HasXFAAAction(PDFSDK_XFA_PreOpen)) {
832 m_bNotifying = TRUE; 830 m_bNotifying = TRUE;
833 int nAge = pWidget->GetAppearanceAge(); 831 int nAge = pWidget->GetAppearanceAge();
834 int nValueAge = pWidget->GetValueAge(); 832 int nValueAge = pWidget->GetValueAge();
835 833
836 PDFSDK_FieldAction fa; 834 PDFSDK_FieldAction fa;
837 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 835 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
838 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 836 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
839 837
840 pWidget->OnXFAAAction(PDFSDK_XFA_PreOpen, fa, pPageView); 838 pWidget->OnXFAAAction(PDFSDK_XFA_PreOpen, fa, pPageView);
841 m_bNotifying = FALSE; 839 m_bNotifying = FALSE;
842 840
843 if (!IsValidAnnot(pPageView, pWidget)) { 841 if (!IsValidAnnot(pPageView, pWidget)) {
844 bExit = TRUE; 842 bExit = TRUE;
845 return; 843 return;
846 } 844 }
847 845
848 if (nAge != pWidget->GetAppearanceAge()) { 846 if (nAge != pWidget->GetAppearanceAge()) {
(...skipping 13 matching lines...) Expand all
862 FX_BOOL& bReset, 860 FX_BOOL& bReset,
863 FX_BOOL& bExit, 861 FX_BOOL& bExit,
864 uint32_t nFlag) { 862 uint32_t nFlag) {
865 if (!m_bNotifying) { 863 if (!m_bNotifying) {
866 if (pWidget->HasXFAAAction(PDFSDK_XFA_PostOpen)) { 864 if (pWidget->HasXFAAAction(PDFSDK_XFA_PostOpen)) {
867 m_bNotifying = TRUE; 865 m_bNotifying = TRUE;
868 int nAge = pWidget->GetAppearanceAge(); 866 int nAge = pWidget->GetAppearanceAge();
869 int nValueAge = pWidget->GetValueAge(); 867 int nValueAge = pWidget->GetValueAge();
870 868
871 PDFSDK_FieldAction fa; 869 PDFSDK_FieldAction fa;
872 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 870 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
873 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 871 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
874 872
875 pWidget->OnXFAAAction(PDFSDK_XFA_PostOpen, fa, pPageView); 873 pWidget->OnXFAAAction(PDFSDK_XFA_PostOpen, fa, pPageView);
876 m_bNotifying = FALSE; 874 m_bNotifying = FALSE;
877 875
878 if (!IsValidAnnot(pPageView, pWidget)) { 876 if (!IsValidAnnot(pPageView, pWidget)) {
879 bExit = TRUE; 877 bExit = TRUE;
880 return; 878 return;
881 } 879 }
882 880
883 if (nAge != pWidget->GetAppearanceAge()) { 881 if (nAge != pWidget->GetAppearanceAge()) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 } 923 }
926 } 924 }
927 #endif // PDF_ENABLE_XFA 925 #endif // PDF_ENABLE_XFA
928 926
929 if (!m_bNotifying) { 927 if (!m_bNotifying) {
930 if (pData->pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { 928 if (pData->pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) {
931 m_bNotifying = TRUE; 929 m_bNotifying = TRUE;
932 int nAge = pData->pWidget->GetAppearanceAge(); 930 int nAge = pData->pWidget->GetAppearanceAge();
933 int nValueAge = pData->pWidget->GetValueAge(); 931 int nValueAge = pData->pWidget->GetValueAge();
934 932
935 CPDFSDK_Document* pDocument = pData->pPageView->GetSDKDocument(); 933 CPDFSDK_Document* pDocument =
934 pData->pPageView->GetFormFillEnv()->GetSDKDocument();
936 935
937 PDFSDK_FieldAction fa; 936 PDFSDK_FieldAction fa;
938 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 937 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag);
939 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 938 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag);
940 fa.sChange = strChange; 939 fa.sChange = strChange;
941 fa.sChangeEx = strChangeEx; 940 fa.sChangeEx = strChangeEx;
942 fa.bKeyDown = bKeyDown; 941 fa.bKeyDown = bKeyDown;
943 fa.bWillCommit = FALSE; 942 fa.bWillCommit = FALSE;
944 fa.bRC = TRUE; 943 fa.bRC = TRUE;
945 fa.nSelStart = nSelStart; 944 fa.nSelStart = nSelStart;
946 fa.nSelEnd = nSelEnd; 945 fa.nSelEnd = nSelEnd;
947 946
948 pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa); 947 pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa);
949 pFormFiller->SaveState(pData->pPageView); 948 pFormFiller->SaveState(pData->pPageView);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 bExit = TRUE; 981 bExit = TRUE;
983 m_bNotifying = FALSE; 982 m_bNotifying = FALSE;
984 return; 983 return;
985 } 984 }
986 } 985 }
987 986
988 m_bNotifying = FALSE; 987 m_bNotifying = FALSE;
989 } 988 }
990 } 989 }
991 } 990 }
OLDNEW
« no previous file with comments | « fpdfsdk/formfiller/cffl_interactiveformfiller.h ('k') | fpdfsdk/fpdfformfill.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698