diff options
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/cpdfsdk_formfillenvironment.cpp | 10 | ||||
-rw-r--r-- | fpdfsdk/cpdfsdk_formfillenvironment.h | 4 | ||||
-rw-r--r-- | fpdfsdk/fpdf_formfill.cpp | 10 | ||||
-rw-r--r-- | fpdfsdk/fpdf_view_c_api_test.c | 1 |
4 files changed, 24 insertions, 1 deletions
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.cpp b/fpdfsdk/cpdfsdk_formfillenvironment.cpp index b224fc75d0..649d3bbd2e 100644 --- a/fpdfsdk/cpdfsdk_formfillenvironment.cpp +++ b/fpdfsdk/cpdfsdk_formfillenvironment.cpp @@ -39,7 +39,8 @@ CPDFSDK_FormFillEnvironment::CPDFSDK_FormFillEnvironment( m_pCPDFDoc(pDoc), m_pSysHandler(pdfium::MakeUnique<CFX_SystemHandler>(this)), m_bChangeMask(false), - m_bBeingDestroyed(false) {} + m_bBeingDestroyed(false), + m_SaveCalled(nullptr) {} CPDFSDK_FormFillEnvironment::~CPDFSDK_FormFillEnvironment() { m_bBeingDestroyed = true; @@ -629,6 +630,13 @@ CPDFSDK_InterForm* CPDFSDK_FormFillEnvironment::GetInterForm() { return m_pInterForm.get(); } +void CPDFSDK_FormFillEnvironment::SaveCalled() { + if (!m_pInfo || !m_SaveCalled) + return; + + m_SaveCalled(m_pInfo); +} + void CPDFSDK_FormFillEnvironment::UpdateAllViews(CPDFSDK_PageView* pSender, CPDFSDK_Annot* pAnnot) { for (const auto& it : m_PageMap) { diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.h b/fpdfsdk/cpdfsdk_formfillenvironment.h index dacc02f95d..1cf078e3aa 100644 --- a/fpdfsdk/cpdfsdk_formfillenvironment.h +++ b/fpdfsdk/cpdfsdk_formfillenvironment.h @@ -208,6 +208,9 @@ class CPDFSDK_FormFillEnvironment CPDFSDK_ActionHandler* GetActionHandler(); // Creates if not present. CPDFSDK_InterForm* GetInterForm(); // Creates if not present. + void SetSaveCalled(FORM_SAVECALLED callback) { m_SaveCalled = callback; } + void SaveCalled(); + private: IPDF_Page* GetPage(int nIndex); @@ -223,6 +226,7 @@ class CPDFSDK_FormFillEnvironment std::unique_ptr<CFX_SystemHandler> m_pSysHandler; bool m_bChangeMask; bool m_bBeingDestroyed; + FORM_SAVECALLED m_SaveCalled; }; #endif // FPDFSDK_CPDFSDK_FORMFILLENVIRONMENT_H_ diff --git a/fpdfsdk/fpdf_formfill.cpp b/fpdfsdk/fpdf_formfill.cpp index 792ced773f..1af34b552f 100644 --- a/fpdfsdk/fpdf_formfill.cpp +++ b/fpdfsdk/fpdf_formfill.cpp @@ -360,6 +360,16 @@ FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle) { delete pFormFillEnv; } +FPDF_EXPORT void FPDF_CALLCONV FORM_SetSaveCallback(FORM_SAVECALLED callback, + FPDF_FORMHANDLE hHandle) { + CPDFSDK_FormFillEnvironment* pFormFillEnv = + HandleToCPDFSDKEnvironment(hHandle); + if (!pFormFillEnv) + return; + + pFormFillEnv->SetSaveCalled(callback); +} + FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FORM_OnMouseMove(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int modifier, diff --git a/fpdfsdk/fpdf_view_c_api_test.c b/fpdfsdk/fpdf_view_c_api_test.c index 114a6b0024..4faf5bbf0f 100644 --- a/fpdfsdk/fpdf_view_c_api_test.c +++ b/fpdfsdk/fpdf_view_c_api_test.c @@ -247,6 +247,7 @@ int CheckPDFiumCApi() { #endif CHK(FORM_Redo); CHK(FORM_ReplaceSelection); + CHK(FORM_SetSaveCallback); CHK(FORM_Undo); CHK(FPDFDOC_ExitFormFillEnvironment); CHK(FPDFDOC_InitFormFillEnvironment); |