diff options
author | Lei Zhang <thestig@chromium.org> | 2017-08-31 08:54:46 -0700 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-08-31 16:40:39 +0000 |
commit | 63b012652da22f75172895a975ea7932e63dcc81 (patch) | |
tree | b65983986610796f96bd167aa32253ddd358a381 /fpdfsdk | |
parent | 54b8137361f601148d266d779403ec0393113f39 (diff) | |
download | pdfium-63b012652da22f75172895a975ea7932e63dcc81.tar.xz |
Implement FORM_OnFocus() API.
Given a point, if there is an annotation at the point, give if focus if
it is not focus already. If there is no annotation at the point, then
remove the focus from the focused annotation.
BUG=chromium:754594
Change-Id: Iec3070472bbbfbad9d86e517f25da560f82efd4e
Reviewed-on: https://pdfium-review.googlesource.com/12530
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/cpdfsdk_pageview.cpp | 11 | ||||
-rw-r--r-- | fpdfsdk/cpdfsdk_pageview.h | 1 | ||||
-rw-r--r-- | fpdfsdk/fpdfformfill.cpp | 11 | ||||
-rw-r--r-- | fpdfsdk/fpdfview_c_api_test.c | 1 |
4 files changed, 24 insertions, 0 deletions
diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp index 2155b5d3d8..5bdd720596 100644 --- a/fpdfsdk/cpdfsdk_pageview.cpp +++ b/fpdfsdk/cpdfsdk_pageview.cpp @@ -259,6 +259,17 @@ void CPDFSDK_PageView::ReplaceSelection(const CFX_WideString& text) { } } +bool CPDFSDK_PageView::OnFocus(const CFX_PointF& point, uint32_t nFlag) { + CPDFSDK_Annot::ObservedPtr pAnnot(GetFXWidgetAtPoint(point)); + if (!pAnnot) { + m_pFormFillEnv->KillFocusAnnot(nFlag); + return false; + } + + m_pFormFillEnv->SetFocusAnnot(&pAnnot); + return true; +} + bool CPDFSDK_PageView::OnLButtonDown(const CFX_PointF& point, uint32_t nFlag) { CPDFSDK_Annot::ObservedPtr pAnnot(GetFXWidgetAtPoint(point)); if (!pAnnot) { diff --git a/fpdfsdk/cpdfsdk_pageview.h b/fpdfsdk/cpdfsdk_pageview.h index c23aaa7988..00e90d73e8 100644 --- a/fpdfsdk/cpdfsdk_pageview.h +++ b/fpdfsdk/cpdfsdk_pageview.h @@ -64,6 +64,7 @@ class CPDFSDK_PageView final : public CPDF_Page::View { CFX_WideString GetSelectedText(); void ReplaceSelection(const CFX_WideString& text); + bool OnFocus(const CFX_PointF& point, uint32_t nFlag); bool OnLButtonDown(const CFX_PointF& point, uint32_t nFlag); bool OnLButtonUp(const CFX_PointF& point, uint32_t nFlag); #ifdef PDF_ENABLE_XFA diff --git a/fpdfsdk/fpdfformfill.cpp b/fpdfsdk/fpdfformfill.cpp index b36c1dff23..1b5cc483a8 100644 --- a/fpdfsdk/fpdfformfill.cpp +++ b/fpdfsdk/fpdfformfill.cpp @@ -291,6 +291,17 @@ FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FORM_OnMouseMove(FPDF_FORMHANDLE hHandle, return pPageView->OnMouseMove(CFX_PointF(page_x, page_y), modifier); } +FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FORM_OnFocus(FPDF_FORMHANDLE hHandle, + FPDF_PAGE page, + int modifier, + double page_x, + double page_y) { + CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); + if (!pPageView) + return false; + return pPageView->OnFocus(CFX_PointF(page_x, page_y), modifier); +} + FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FORM_OnLButtonDown(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int modifier, diff --git a/fpdfsdk/fpdfview_c_api_test.c b/fpdfsdk/fpdfview_c_api_test.c index 5bad9c8e7b..6f84f353aa 100644 --- a/fpdfsdk/fpdfview_c_api_test.c +++ b/fpdfsdk/fpdfview_c_api_test.c @@ -181,6 +181,7 @@ int CheckPDFiumCApi() { CHK(FORM_DoDocumentAAction); CHK(FORM_DoPageAAction); CHK(FORM_OnMouseMove); + CHK(FORM_OnFocus); CHK(FORM_OnLButtonDown); CHK(FORM_OnLButtonUp); #ifdef PDF_ENABLE_XFA |