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 "public/fpdf_formfill.h" | 7 #include "public/fpdf_formfill.h" |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <vector> | 10 #include <vector> |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 // environment into the XFADocument and, that could get weird. | 251 // environment into the XFADocument and, that could get weird. |
252 if (pDocument->GetFormFillEnv()) | 252 if (pDocument->GetFormFillEnv()) |
253 return pDocument->GetFormFillEnv(); | 253 return pDocument->GetFormFillEnv(); |
254 #endif | 254 #endif |
255 | 255 |
256 CPDFSDK_FormFillEnvironment* pFormFillEnv = | 256 CPDFSDK_FormFillEnvironment* pFormFillEnv = |
257 new CPDFSDK_FormFillEnvironment(pDocument, formInfo); | 257 new CPDFSDK_FormFillEnvironment(pDocument, formInfo); |
258 | 258 |
259 #ifdef PDF_ENABLE_XFA | 259 #ifdef PDF_ENABLE_XFA |
260 pDocument->SetFormFillEnv(pFormFillEnv); | 260 pDocument->SetFormFillEnv(pFormFillEnv); |
| 261 CPDFXFA_App::GetInstance()->AddFormFillEnv(pFormFillEnv); |
261 #endif // PDF_ENABLE_XFA | 262 #endif // PDF_ENABLE_XFA |
262 | 263 |
263 return pFormFillEnv; | 264 return pFormFillEnv; |
264 } | 265 } |
265 | 266 |
266 DLLEXPORT void STDCALL | 267 DLLEXPORT void STDCALL |
267 FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle) { | 268 FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle) { |
268 if (!hHandle) | 269 if (!hHandle) |
269 return; | 270 return; |
270 | 271 |
271 CPDFSDK_FormFillEnvironment* pFormFillEnv = | 272 CPDFSDK_FormFillEnvironment* pFormFillEnv = |
272 HandleToCPDFSDKEnvironment(hHandle); | 273 HandleToCPDFSDKEnvironment(hHandle); |
273 | 274 |
274 #ifdef PDF_ENABLE_XFA | 275 #ifdef PDF_ENABLE_XFA |
| 276 CPDFXFA_App::GetInstance()->RemoveFormFillEnv(pFormFillEnv); |
| 277 |
275 // Reset the focused annotations and remove the SDK document from the | 278 // Reset the focused annotations and remove the SDK document from the |
276 // XFA document. | 279 // XFA document. |
277 pFormFillEnv->ClearAllFocusedAnnots(); | 280 pFormFillEnv->ClearAllFocusedAnnots(); |
278 // If the document was closed first, it's possible the XFA document | 281 // If the document was closed first, it's possible the XFA document |
279 // is now a nullptr. | 282 // is now a nullptr. |
280 if (pFormFillEnv->GetXFADocument()) | 283 if (pFormFillEnv->GetXFADocument()) |
281 pFormFillEnv->GetXFADocument()->SetFormFillEnv(nullptr); | 284 pFormFillEnv->GetXFADocument()->SetFormFillEnv(nullptr); |
282 #endif // PDF_ENABLE_XFA | 285 #endif // PDF_ENABLE_XFA |
283 | 286 |
284 delete pFormFillEnv; | 287 delete pFormFillEnv; |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 pFormFillEnv); | 744 pFormFillEnv); |
742 } | 745 } |
743 } else { | 746 } else { |
744 if (aa.ActionExist(CPDF_AAction::ClosePage)) { | 747 if (aa.ActionExist(CPDF_AAction::ClosePage)) { |
745 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); | 748 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); |
746 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, | 749 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, |
747 pFormFillEnv); | 750 pFormFillEnv); |
748 } | 751 } |
749 } | 752 } |
750 } | 753 } |
OLD | NEW |