Index: fpdfsdk/src/fpdfformfill.cpp |
diff --git a/fpdfsdk/src/fpdfformfill.cpp b/fpdfsdk/src/fpdfformfill.cpp |
index abb8026a7f3c16dd2129335b92bf3198b6259c75..51d90b7eabd4652328fde7c2eb0e3b09a29725ad 100644 |
--- a/fpdfsdk/src/fpdfformfill.cpp |
+++ b/fpdfsdk/src/fpdfformfill.cpp |
@@ -37,32 +37,26 @@ CPDFSDK_PageView* FormHandleToPageView(FPDF_FORMHANDLE hHandle, |
} // namespace |
-DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, |
- FPDF_PAGE page, |
- double page_x, |
- double page_y) { |
+DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, |
+ FPDF_PAGE page, |
+ double page_x, |
+ double page_y) { |
if (!page || !hHandle) |
return -1; |
+ |
CPDF_Page* pPage = ((CPDFXFA_Page*)page)->GetPDFPage(); |
if (pPage) { |
- CPDF_InterForm* pInterForm = NULL; |
- pInterForm = new CPDF_InterForm(pPage->m_pDocument, FALSE); |
- if (!pInterForm) |
+ CPDF_InterForm interform(pPage->m_pDocument, FALSE); |
+ CPDF_FormControl* pFormCtrl = interform.GetControlAtPoint( |
+ pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, nullptr); |
+ if (!pFormCtrl) |
return -1; |
- CPDF_FormControl* pFormCtrl = pInterForm->GetControlAtPoint( |
- pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y); |
- if (!pFormCtrl) { |
- delete pInterForm; |
- return -1; |
- } |
+ |
CPDF_FormField* pFormField = pFormCtrl->GetField(); |
- if (!pFormField) { |
- delete pInterForm; |
+ if (!pFormField) |
return -1; |
- } |
int nType = pFormField->GetFieldType(); |
- delete pInterForm; |
return nType; |
} |
@@ -109,6 +103,28 @@ DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, |
return -1; |
} |
+DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, |
+ FPDF_PAGE page, |
+ double page_x, |
+ double page_y) { |
+ return FPDFPage_HasFormFieldAtPoint(hHandle, page, page_x, page_y); |
+} |
+ |
+DLLEXPORT int STDCALL FPDFPage_FormFieldZOrderAtPoint(FPDF_FORMHANDLE hHandle, |
+ FPDF_PAGE page, |
+ double page_x, |
+ double page_y) { |
+ if (!page || !hHandle) |
+ return -1; |
+ |
+ CPDF_Page* pPage = (CPDF_Page*)page; |
+ CPDF_InterForm interform(pPage->m_pDocument, FALSE); |
+ int z_order = -1; |
+ (void)interform.GetControlAtPoint(pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, |
+ &z_order); |
+ return z_order; |
+} |
+ |
DLLEXPORT FPDF_FORMHANDLE STDCALL |
FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document, |
FPDF_FORMFILLINFO* formInfo) { |