| 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 "fpdfsdk/formfiller/cffl_iformfiller.h" | 7 #include "fpdfsdk/formfiller/cffl_interactiveformfiller.h" |
| 8 | 8 |
| 9 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h" | 9 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h" |
| 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" | 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |
| 11 #include "core/fxge/include/cfx_graphstatedata.h" | 11 #include "core/fxge/include/cfx_graphstatedata.h" |
| 12 #include "core/fxge/include/cfx_pathdata.h" | 12 #include "core/fxge/include/cfx_pathdata.h" |
| 13 #include "core/fxge/include/cfx_renderdevice.h" | 13 #include "core/fxge/include/cfx_renderdevice.h" |
| 14 #include "fpdfsdk/formfiller/cffl_checkbox.h" | 14 #include "fpdfsdk/formfiller/cffl_checkbox.h" |
| 15 #include "fpdfsdk/formfiller/cffl_combobox.h" | 15 #include "fpdfsdk/formfiller/cffl_combobox.h" |
| 16 #include "fpdfsdk/formfiller/cffl_formfiller.h" | 16 #include "fpdfsdk/formfiller/cffl_formfiller.h" |
| 17 #include "fpdfsdk/formfiller/cffl_listbox.h" | 17 #include "fpdfsdk/formfiller/cffl_listbox.h" |
| 18 #include "fpdfsdk/formfiller/cffl_pushbutton.h" | 18 #include "fpdfsdk/formfiller/cffl_pushbutton.h" |
| 19 #include "fpdfsdk/formfiller/cffl_radiobutton.h" | 19 #include "fpdfsdk/formfiller/cffl_radiobutton.h" |
| 20 #include "fpdfsdk/formfiller/cffl_textfield.h" | 20 #include "fpdfsdk/formfiller/cffl_textfield.h" |
| 21 #include "fpdfsdk/include/cpdfsdk_document.h" | 21 #include "fpdfsdk/include/cpdfsdk_document.h" |
| 22 #include "fpdfsdk/include/cpdfsdk_environment.h" | 22 #include "fpdfsdk/include/cpdfsdk_environment.h" |
| 23 #include "fpdfsdk/include/cpdfsdk_interform.h" | 23 #include "fpdfsdk/include/cpdfsdk_interform.h" |
| 24 #include "fpdfsdk/include/cpdfsdk_pageview.h" | 24 #include "fpdfsdk/include/cpdfsdk_pageview.h" |
| 25 #include "fpdfsdk/include/cpdfsdk_widget.h" | 25 #include "fpdfsdk/include/cpdfsdk_widget.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_IFormFiller::CFFL_IFormFiller(CPDFSDK_Environment* pEnv) | 30 CFFL_InteractiveFormFiller::CFFL_InteractiveFormFiller( |
| 31 CPDFSDK_Environment* pEnv) |
| 31 : m_pEnv(pEnv), m_bNotifying(FALSE) {} | 32 : m_pEnv(pEnv), m_bNotifying(FALSE) {} |
| 32 | 33 |
| 33 CFFL_IFormFiller::~CFFL_IFormFiller() {} | 34 CFFL_InteractiveFormFiller::~CFFL_InteractiveFormFiller() {} |
| 34 | 35 |
| 35 FX_BOOL CFFL_IFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView, | 36 FX_BOOL CFFL_InteractiveFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView, |
| 36 CPDFSDK_Annot* pAnnot, | 37 CPDFSDK_Annot* pAnnot, |
| 37 CFX_FloatPoint point) { | 38 CFX_FloatPoint point) { |
| 38 CFX_FloatRect rc = pAnnot->GetRect(); | 39 CFX_FloatRect rc = pAnnot->GetRect(); |
| 39 return rc.Contains(point.x, point.y); | 40 return rc.Contains(point.x, point.y); |
| 40 } | 41 } |
| 41 | 42 |
| 42 FX_RECT CFFL_IFormFiller::GetViewBBox(CPDFSDK_PageView* pPageView, | 43 FX_RECT CFFL_InteractiveFormFiller::GetViewBBox(CPDFSDK_PageView* pPageView, |
| 43 CPDFSDK_Annot* pAnnot) { | 44 CPDFSDK_Annot* pAnnot) { |
| 44 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) | 45 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) |
| 45 return pFormFiller->GetViewBBox(pPageView, pAnnot); | 46 return pFormFiller->GetViewBBox(pPageView, pAnnot); |
| 46 | 47 |
| 47 ASSERT(pPageView); | 48 ASSERT(pPageView); |
| 48 | 49 |
| 49 CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot(); | 50 CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot(); |
| 50 CFX_FloatRect rcWin = CPWL_Utils::InflateRect(pPDFAnnot->GetRect(), 1); | 51 CFX_FloatRect rcWin = CPWL_Utils::InflateRect(pPDFAnnot->GetRect(), 1); |
| 51 return rcWin.GetOuterRect(); | 52 return rcWin.GetOuterRect(); |
| 52 } | 53 } |
| 53 | 54 |
| 54 void CFFL_IFormFiller::OnDraw(CPDFSDK_PageView* pPageView, | 55 void CFFL_InteractiveFormFiller::OnDraw(CPDFSDK_PageView* pPageView, |
| 55 CPDFSDK_Annot* pAnnot, | 56 CPDFSDK_Annot* pAnnot, |
| 56 CFX_RenderDevice* pDevice, | 57 CFX_RenderDevice* pDevice, |
| 57 CFX_Matrix* pUser2Device) { | 58 CFX_Matrix* pUser2Device) { |
| 58 ASSERT(pPageView); | 59 ASSERT(pPageView); |
| 59 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 60 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 60 | 61 |
| 61 if (!IsVisible(pWidget)) | 62 if (!IsVisible(pWidget)) |
| 62 return; | 63 return; |
| 63 | 64 |
| 64 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 65 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 65 if (pFormFiller->IsValid()) { | 66 if (pFormFiller->IsValid()) { |
| 66 pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device); | 67 pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device); |
| 67 pAnnot->GetPDFPage(); | 68 pAnnot->GetPDFPage(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 94 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 95 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 95 pFormFiller->OnDrawDeactive(pPageView, pAnnot, pDevice, pUser2Device); | 96 pFormFiller->OnDrawDeactive(pPageView, pAnnot, pDevice, pUser2Device); |
| 96 } else { | 97 } else { |
| 97 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, nullptr); | 98 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, nullptr); |
| 98 } | 99 } |
| 99 | 100 |
| 100 if (!IsReadOnly(pWidget) && IsFillingAllowed(pWidget)) | 101 if (!IsReadOnly(pWidget) && IsFillingAllowed(pWidget)) |
| 101 pWidget->DrawShadow(pDevice, pPageView); | 102 pWidget->DrawShadow(pDevice, pPageView); |
| 102 } | 103 } |
| 103 | 104 |
| 104 void CFFL_IFormFiller::OnCreate(CPDFSDK_Annot* pAnnot) { | 105 void CFFL_InteractiveFormFiller::OnCreate(CPDFSDK_Annot* pAnnot) { |
| 105 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 106 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 106 pFormFiller->OnCreate(pAnnot); | 107 pFormFiller->OnCreate(pAnnot); |
| 107 } | 108 } |
| 108 } | 109 } |
| 109 | 110 |
| 110 void CFFL_IFormFiller::OnLoad(CPDFSDK_Annot* pAnnot) { | 111 void CFFL_InteractiveFormFiller::OnLoad(CPDFSDK_Annot* pAnnot) { |
| 111 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 112 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 112 pFormFiller->OnLoad(pAnnot); | 113 pFormFiller->OnLoad(pAnnot); |
| 113 } | 114 } |
| 114 } | 115 } |
| 115 | 116 |
| 116 void CFFL_IFormFiller::OnDelete(CPDFSDK_Annot* pAnnot) { | 117 void CFFL_InteractiveFormFiller::OnDelete(CPDFSDK_Annot* pAnnot) { |
| 117 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 118 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 118 pFormFiller->OnDelete(pAnnot); | 119 pFormFiller->OnDelete(pAnnot); |
| 119 } | 120 } |
| 120 | 121 |
| 121 UnRegisterFormFiller(pAnnot); | 122 UnRegisterFormFiller(pAnnot); |
| 122 } | 123 } |
| 123 | 124 |
| 124 void CFFL_IFormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, | 125 void CFFL_InteractiveFormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, |
| 125 CPDFSDK_Annot* pAnnot, | 126 CPDFSDK_Annot* pAnnot, |
| 126 uint32_t nFlag) { | 127 uint32_t nFlag) { |
| 127 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 128 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 128 | 129 |
| 129 if (!m_bNotifying) { | 130 if (!m_bNotifying) { |
| 130 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 131 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 131 if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) { | 132 if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) { |
| 132 m_bNotifying = TRUE; | 133 m_bNotifying = TRUE; |
| 133 | 134 |
| 134 int nValueAge = pWidget->GetValueAge(); | 135 int nValueAge = pWidget->GetValueAge(); |
| 135 | 136 |
| 136 pWidget->ClearAppModified(); | 137 pWidget->ClearAppModified(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 150 } | 151 } |
| 151 } | 152 } |
| 152 } | 153 } |
| 153 } | 154 } |
| 154 | 155 |
| 155 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) { | 156 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) { |
| 156 pFormFiller->OnMouseEnter(pPageView, pAnnot); | 157 pFormFiller->OnMouseEnter(pPageView, pAnnot); |
| 157 } | 158 } |
| 158 } | 159 } |
| 159 | 160 |
| 160 void CFFL_IFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, | 161 void CFFL_InteractiveFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, |
| 161 CPDFSDK_Annot* pAnnot, | 162 CPDFSDK_Annot* pAnnot, |
| 162 uint32_t nFlag) { | 163 uint32_t nFlag) { |
| 163 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 164 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 164 | 165 |
| 165 if (!m_bNotifying) { | 166 if (!m_bNotifying) { |
| 166 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 167 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 167 if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) { | 168 if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) { |
| 168 m_bNotifying = TRUE; | 169 m_bNotifying = TRUE; |
| 169 pWidget->GetAppearanceAge(); | 170 pWidget->GetAppearanceAge(); |
| 170 int nValueAge = pWidget->GetValueAge(); | 171 int nValueAge = pWidget->GetValueAge(); |
| 171 pWidget->ClearAppModified(); | 172 pWidget->ClearAppModified(); |
| 172 | 173 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 186 } | 187 } |
| 187 } | 188 } |
| 188 } | 189 } |
| 189 } | 190 } |
| 190 | 191 |
| 191 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 192 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 192 pFormFiller->OnMouseExit(pPageView, pAnnot); | 193 pFormFiller->OnMouseExit(pPageView, pAnnot); |
| 193 } | 194 } |
| 194 } | 195 } |
| 195 | 196 |
| 196 FX_BOOL CFFL_IFormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, | 197 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, |
| 197 CPDFSDK_Annot* pAnnot, | 198 CPDFSDK_Annot* pAnnot, |
| 198 uint32_t nFlags, | 199 uint32_t nFlags, |
| 199 const CFX_FloatPoint& point) { | 200 const CFX_FloatPoint& point) { |
| 200 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 201 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 201 | 202 |
| 202 if (!m_bNotifying) { | 203 if (!m_bNotifying) { |
| 203 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 204 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 204 if (Annot_HitTest(pPageView, pAnnot, point) && | 205 if (Annot_HitTest(pPageView, pAnnot, point) && |
| 205 pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) { | 206 pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) { |
| 206 m_bNotifying = TRUE; | 207 m_bNotifying = TRUE; |
| 207 pWidget->GetAppearanceAge(); | 208 pWidget->GetAppearanceAge(); |
| 208 int nValueAge = pWidget->GetValueAge(); | 209 int nValueAge = pWidget->GetValueAge(); |
| 209 pWidget->ClearAppModified(); | 210 pWidget->ClearAppModified(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 228 } | 229 } |
| 229 } | 230 } |
| 230 | 231 |
| 231 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 232 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 232 return pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point); | 233 return pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point); |
| 233 } | 234 } |
| 234 | 235 |
| 235 return FALSE; | 236 return FALSE; |
| 236 } | 237 } |
| 237 | 238 |
| 238 FX_BOOL CFFL_IFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView, | 239 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView, |
| 239 CPDFSDK_Annot* pAnnot, | 240 CPDFSDK_Annot* pAnnot, |
| 240 uint32_t nFlags, | 241 uint32_t nFlags, |
| 241 const CFX_FloatPoint& point) { | 242 const CFX_FloatPoint& point) { |
| 242 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 243 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 243 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 244 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 244 CPDFSDK_Document* pDocument = m_pEnv->GetSDKDocument(); | 245 CPDFSDK_Document* pDocument = m_pEnv->GetSDKDocument(); |
| 245 | 246 |
| 246 switch (pWidget->GetFieldType()) { | 247 switch (pWidget->GetFieldType()) { |
| 247 case FIELDTYPE_PUSHBUTTON: | 248 case FIELDTYPE_PUSHBUTTON: |
| 248 case FIELDTYPE_CHECKBOX: | 249 case FIELDTYPE_CHECKBOX: |
| 249 case FIELDTYPE_RADIOBUTTON: | 250 case FIELDTYPE_RADIOBUTTON: |
| 250 if (GetViewBBox(pPageView, pAnnot).Contains((int)point.x, (int)point.y)) | 251 if (GetViewBBox(pPageView, pAnnot).Contains((int)point.x, (int)point.y)) |
| 251 pDocument->SetFocusAnnot(pAnnot); | 252 pDocument->SetFocusAnnot(pAnnot); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 269 return TRUE; | 270 return TRUE; |
| 270 #ifdef PDF_ENABLE_XFA | 271 #ifdef PDF_ENABLE_XFA |
| 271 OnClick(pWidget, pPageView, bReset, bExit, nFlags); | 272 OnClick(pWidget, pPageView, bReset, bExit, nFlags); |
| 272 if (bExit) | 273 if (bExit) |
| 273 return TRUE; | 274 return TRUE; |
| 274 #endif // PDF_ENABLE_XFA | 275 #endif // PDF_ENABLE_XFA |
| 275 } | 276 } |
| 276 return bRet; | 277 return bRet; |
| 277 } | 278 } |
| 278 | 279 |
| 279 void CFFL_IFormFiller::OnButtonUp(CPDFSDK_Widget* pWidget, | 280 void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Widget* pWidget, |
| 280 CPDFSDK_PageView* pPageView, | 281 CPDFSDK_PageView* pPageView, |
| 281 FX_BOOL& bReset, | 282 FX_BOOL& bReset, |
| 282 FX_BOOL& bExit, | 283 FX_BOOL& bExit, |
| 283 uint32_t nFlag) { | 284 uint32_t nFlag) { |
| 284 ASSERT(pWidget); | 285 ASSERT(pWidget); |
| 285 | 286 |
| 286 if (!m_bNotifying) { | 287 if (!m_bNotifying) { |
| 287 if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) { | 288 if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) { |
| 288 m_bNotifying = TRUE; | 289 m_bNotifying = TRUE; |
| 289 int nAge = pWidget->GetAppearanceAge(); | 290 int nAge = pWidget->GetAppearanceAge(); |
| 290 int nValueAge = pWidget->GetValueAge(); | 291 int nValueAge = pWidget->GetValueAge(); |
| 291 | 292 |
| 292 ASSERT(pPageView); | 293 ASSERT(pPageView); |
| 293 | 294 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 308 pFormFiller->ResetPDFWindow(pPageView, | 309 pFormFiller->ResetPDFWindow(pPageView, |
| 309 nValueAge == pWidget->GetValueAge()); | 310 nValueAge == pWidget->GetValueAge()); |
| 310 } | 311 } |
| 311 | 312 |
| 312 bReset = TRUE; | 313 bReset = TRUE; |
| 313 } | 314 } |
| 314 } | 315 } |
| 315 } | 316 } |
| 316 } | 317 } |
| 317 | 318 |
| 318 FX_BOOL CFFL_IFormFiller::OnLButtonDblClk(CPDFSDK_PageView* pPageView, | 319 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDblClk( |
| 319 CPDFSDK_Annot* pAnnot, | 320 CPDFSDK_PageView* pPageView, |
| 320 uint32_t nFlags, | 321 CPDFSDK_Annot* pAnnot, |
| 321 const CFX_FloatPoint& point) { | 322 uint32_t nFlags, |
| 323 const CFX_FloatPoint& point) { |
| 322 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 324 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 323 | 325 |
| 324 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 326 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 325 return pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point); | 327 return pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point); |
| 326 } | 328 } |
| 327 | 329 |
| 328 return FALSE; | 330 return FALSE; |
| 329 } | 331 } |
| 330 | 332 |
| 331 FX_BOOL CFFL_IFormFiller::OnMouseMove(CPDFSDK_PageView* pPageView, | 333 FX_BOOL CFFL_InteractiveFormFiller::OnMouseMove(CPDFSDK_PageView* pPageView, |
| 332 CPDFSDK_Annot* pAnnot, | 334 CPDFSDK_Annot* pAnnot, |
| 333 uint32_t nFlags, | 335 uint32_t nFlags, |
| 334 const CFX_FloatPoint& point) { | 336 const CFX_FloatPoint& point) { |
| 335 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 337 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 336 | 338 |
| 337 // change cursor | 339 // change cursor |
| 338 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) { | 340 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) { |
| 339 return pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point); | 341 return pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point); |
| 340 } | 342 } |
| 341 | 343 |
| 342 return FALSE; | 344 return FALSE; |
| 343 } | 345 } |
| 344 | 346 |
| 345 FX_BOOL CFFL_IFormFiller::OnMouseWheel(CPDFSDK_PageView* pPageView, | 347 FX_BOOL CFFL_InteractiveFormFiller::OnMouseWheel(CPDFSDK_PageView* pPageView, |
| 346 CPDFSDK_Annot* pAnnot, | 348 CPDFSDK_Annot* pAnnot, |
| 347 uint32_t nFlags, | 349 uint32_t nFlags, |
| 348 short zDelta, | 350 short zDelta, |
| 349 const CFX_FloatPoint& point) { | 351 const CFX_FloatPoint& point) { |
| 350 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 352 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 351 | 353 |
| 352 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 354 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 353 return pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta, point); | 355 return pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta, point); |
| 354 } | 356 } |
| 355 | 357 |
| 356 return FALSE; | 358 return FALSE; |
| 357 } | 359 } |
| 358 | 360 |
| 359 FX_BOOL CFFL_IFormFiller::OnRButtonDown(CPDFSDK_PageView* pPageView, | 361 FX_BOOL CFFL_InteractiveFormFiller::OnRButtonDown(CPDFSDK_PageView* pPageView, |
| 360 CPDFSDK_Annot* pAnnot, | 362 CPDFSDK_Annot* pAnnot, |
| 361 uint32_t nFlags, | 363 uint32_t nFlags, |
| 362 const CFX_FloatPoint& point) { | 364 const CFX_FloatPoint& point) { |
| 363 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 365 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 364 | 366 |
| 365 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 367 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 366 return pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point); | 368 return pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point); |
| 367 } | 369 } |
| 368 | 370 |
| 369 return FALSE; | 371 return FALSE; |
| 370 } | 372 } |
| 371 | 373 |
| 372 FX_BOOL CFFL_IFormFiller::OnRButtonUp(CPDFSDK_PageView* pPageView, | 374 FX_BOOL CFFL_InteractiveFormFiller::OnRButtonUp(CPDFSDK_PageView* pPageView, |
| 373 CPDFSDK_Annot* pAnnot, | 375 CPDFSDK_Annot* pAnnot, |
| 374 uint32_t nFlags, | 376 uint32_t nFlags, |
| 375 const CFX_FloatPoint& point) { | 377 const CFX_FloatPoint& point) { |
| 376 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 378 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 377 | 379 |
| 378 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 380 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 379 return pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point); | 381 return pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point); |
| 380 } | 382 } |
| 381 | 383 |
| 382 return FALSE; | 384 return FALSE; |
| 383 } | 385 } |
| 384 | 386 |
| 385 FX_BOOL CFFL_IFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, | 387 FX_BOOL CFFL_InteractiveFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, |
| 386 uint32_t nKeyCode, | 388 uint32_t nKeyCode, |
| 387 uint32_t nFlags) { | 389 uint32_t nFlags) { |
| 388 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 390 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 389 | 391 |
| 390 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 392 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 391 return pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlags); | 393 return pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlags); |
| 392 } | 394 } |
| 393 | 395 |
| 394 return FALSE; | 396 return FALSE; |
| 395 } | 397 } |
| 396 | 398 |
| 397 FX_BOOL CFFL_IFormFiller::OnChar(CPDFSDK_Annot* pAnnot, | 399 FX_BOOL CFFL_InteractiveFormFiller::OnChar(CPDFSDK_Annot* pAnnot, |
| 398 uint32_t nChar, | 400 uint32_t nChar, |
| 399 uint32_t nFlags) { | 401 uint32_t nFlags) { |
| 400 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 402 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 401 if (nChar == FWL_VKEY_Tab) | 403 if (nChar == FWL_VKEY_Tab) |
| 402 return TRUE; | 404 return TRUE; |
| 403 | 405 |
| 404 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) | 406 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) |
| 405 return pFormFiller->OnChar(pAnnot, nChar, nFlags); | 407 return pFormFiller->OnChar(pAnnot, nChar, nFlags); |
| 406 | 408 |
| 407 return FALSE; | 409 return FALSE; |
| 408 } | 410 } |
| 409 | 411 |
| 410 FX_BOOL CFFL_IFormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, uint32_t nFlag) { | 412 FX_BOOL CFFL_InteractiveFormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, |
| 413 uint32_t nFlag) { |
| 411 if (!pAnnot) | 414 if (!pAnnot) |
| 412 return FALSE; | 415 return FALSE; |
| 413 | 416 |
| 414 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 417 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 415 | 418 |
| 416 if (!m_bNotifying) { | 419 if (!m_bNotifying) { |
| 417 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 420 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 418 if (pWidget->GetAAction(CPDF_AAction::GetFocus).GetDict()) { | 421 if (pWidget->GetAAction(CPDF_AAction::GetFocus).GetDict()) { |
| 419 m_bNotifying = TRUE; | 422 m_bNotifying = TRUE; |
| 420 pWidget->GetAppearanceAge(); | 423 pWidget->GetAppearanceAge(); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 444 } | 447 } |
| 445 } | 448 } |
| 446 } | 449 } |
| 447 | 450 |
| 448 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) | 451 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) |
| 449 pFormFiller->SetFocusForAnnot(pAnnot, nFlag); | 452 pFormFiller->SetFocusForAnnot(pAnnot, nFlag); |
| 450 | 453 |
| 451 return TRUE; | 454 return TRUE; |
| 452 } | 455 } |
| 453 | 456 |
| 454 FX_BOOL CFFL_IFormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, uint32_t nFlag) { | 457 FX_BOOL CFFL_InteractiveFormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, |
| 458 uint32_t nFlag) { |
| 455 if (!pAnnot) | 459 if (!pAnnot) |
| 456 return FALSE; | 460 return FALSE; |
| 457 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 461 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 458 | 462 |
| 459 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 463 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { |
| 460 pFormFiller->KillFocusForAnnot(pAnnot, nFlag); | 464 pFormFiller->KillFocusForAnnot(pAnnot, nFlag); |
| 461 | 465 |
| 462 if (!m_bNotifying) { | 466 if (!m_bNotifying) { |
| 463 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 467 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 464 if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) { | 468 if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 476 | 480 |
| 477 pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView); | 481 pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView); |
| 478 m_bNotifying = FALSE; | 482 m_bNotifying = FALSE; |
| 479 } | 483 } |
| 480 } | 484 } |
| 481 } | 485 } |
| 482 | 486 |
| 483 return TRUE; | 487 return TRUE; |
| 484 } | 488 } |
| 485 | 489 |
| 486 FX_BOOL CFFL_IFormFiller::IsVisible(CPDFSDK_Widget* pWidget) { | 490 FX_BOOL CFFL_InteractiveFormFiller::IsVisible(CPDFSDK_Widget* pWidget) { |
| 487 return pWidget->IsVisible(); | 491 return pWidget->IsVisible(); |
| 488 } | 492 } |
| 489 | 493 |
| 490 FX_BOOL CFFL_IFormFiller::IsReadOnly(CPDFSDK_Widget* pWidget) { | 494 FX_BOOL CFFL_InteractiveFormFiller::IsReadOnly(CPDFSDK_Widget* pWidget) { |
| 491 int nFieldFlags = pWidget->GetFieldFlags(); | 495 int nFieldFlags = pWidget->GetFieldFlags(); |
| 492 return (nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY; | 496 return (nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY; |
| 493 } | 497 } |
| 494 | 498 |
| 495 FX_BOOL CFFL_IFormFiller::IsFillingAllowed(CPDFSDK_Widget* pWidget) { | 499 FX_BOOL CFFL_InteractiveFormFiller::IsFillingAllowed(CPDFSDK_Widget* pWidget) { |
| 496 if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON) | 500 if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON) |
| 497 return TRUE; | 501 return TRUE; |
| 498 | 502 |
| 499 CPDF_Page* pPage = pWidget->GetPDFPage(); | 503 CPDF_Page* pPage = pWidget->GetPDFPage(); |
| 500 CPDF_Document* pDocument = pPage->m_pDocument; | 504 CPDF_Document* pDocument = pPage->m_pDocument; |
| 501 uint32_t dwPermissions = pDocument->GetUserPermissions(); | 505 uint32_t dwPermissions = pDocument->GetUserPermissions(); |
| 502 return (dwPermissions & FPDFPERM_FILL_FORM) || | 506 return (dwPermissions & FPDFPERM_FILL_FORM) || |
| 503 (dwPermissions & FPDFPERM_ANNOT_FORM) || | 507 (dwPermissions & FPDFPERM_ANNOT_FORM) || |
| 504 (dwPermissions & FPDFPERM_MODIFY); | 508 (dwPermissions & FPDFPERM_MODIFY); |
| 505 } | 509 } |
| 506 | 510 |
| 507 CFFL_FormFiller* CFFL_IFormFiller::GetFormFiller(CPDFSDK_Annot* pAnnot, | 511 CFFL_FormFiller* CFFL_InteractiveFormFiller::GetFormFiller( |
| 508 FX_BOOL bRegister) { | 512 CPDFSDK_Annot* pAnnot, |
| 513 FX_BOOL bRegister) { |
| 509 auto it = m_Maps.find(pAnnot); | 514 auto it = m_Maps.find(pAnnot); |
| 510 if (it != m_Maps.end()) | 515 if (it != m_Maps.end()) |
| 511 return it->second.get(); | 516 return it->second.get(); |
| 512 | 517 |
| 513 if (!bRegister) | 518 if (!bRegister) |
| 514 return nullptr; | 519 return nullptr; |
| 515 | 520 |
| 516 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 521 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 517 int nFieldType = pWidget->GetFieldType(); | 522 int nFieldType = pWidget->GetFieldType(); |
| 518 CFFL_FormFiller* pFormFiller; | 523 CFFL_FormFiller* pFormFiller; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 541 break; | 546 break; |
| 542 } | 547 } |
| 543 | 548 |
| 544 if (!pFormFiller) | 549 if (!pFormFiller) |
| 545 return nullptr; | 550 return nullptr; |
| 546 | 551 |
| 547 m_Maps[pAnnot].reset(pFormFiller); | 552 m_Maps[pAnnot].reset(pFormFiller); |
| 548 return pFormFiller; | 553 return pFormFiller; |
| 549 } | 554 } |
| 550 | 555 |
| 551 void CFFL_IFormFiller::RemoveFormFiller(CPDFSDK_Annot* pAnnot) { | 556 void CFFL_InteractiveFormFiller::RemoveFormFiller(CPDFSDK_Annot* pAnnot) { |
| 552 if (pAnnot) { | 557 if (pAnnot) { |
| 553 UnRegisterFormFiller(pAnnot); | 558 UnRegisterFormFiller(pAnnot); |
| 554 } | 559 } |
| 555 } | 560 } |
| 556 | 561 |
| 557 void CFFL_IFormFiller::UnRegisterFormFiller(CPDFSDK_Annot* pAnnot) { | 562 void CFFL_InteractiveFormFiller::UnRegisterFormFiller(CPDFSDK_Annot* pAnnot) { |
| 558 auto it = m_Maps.find(pAnnot); | 563 auto it = m_Maps.find(pAnnot); |
| 559 if (it == m_Maps.end()) | 564 if (it == m_Maps.end()) |
| 560 return; | 565 return; |
| 561 | 566 |
| 562 m_Maps.erase(it); | 567 m_Maps.erase(it); |
| 563 } | 568 } |
| 564 | 569 |
| 565 void CFFL_IFormFiller::QueryWherePopup(void* pPrivateData, | 570 void CFFL_InteractiveFormFiller::QueryWherePopup(void* pPrivateData, |
| 566 FX_FLOAT fPopupMin, | 571 FX_FLOAT fPopupMin, |
| 567 FX_FLOAT fPopupMax, | 572 FX_FLOAT fPopupMax, |
| 568 int32_t& nRet, | 573 int32_t& nRet, |
| 569 FX_FLOAT& fPopupRet) { | 574 FX_FLOAT& fPopupRet) { |
| 570 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; | 575 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; |
| 571 | 576 |
| 572 CFX_FloatRect rcPageView(0, 0, 0, 0); | 577 CFX_FloatRect rcPageView(0, 0, 0, 0); |
| 573 rcPageView.right = pData->pWidget->GetPDFPage()->GetPageWidth(); | 578 rcPageView.right = pData->pWidget->GetPDFPage()->GetPageWidth(); |
| 574 rcPageView.bottom = pData->pWidget->GetPDFPage()->GetPageHeight(); | 579 rcPageView.bottom = pData->pWidget->GetPDFPage()->GetPageHeight(); |
| 575 rcPageView.Normalize(); | 580 rcPageView.Normalize(); |
| 576 | 581 |
| 577 CFX_FloatRect rcAnnot = pData->pWidget->GetRect(); | 582 CFX_FloatRect rcAnnot = pData->pWidget->GetRect(); |
| 578 | 583 |
| 579 FX_FLOAT fTop = 0.0f; | 584 FX_FLOAT fTop = 0.0f; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 fFactHeight = fBottom; | 633 fFactHeight = fBottom; |
| 629 bBottom = TRUE; | 634 bBottom = TRUE; |
| 630 } | 635 } |
| 631 } | 636 } |
| 632 } | 637 } |
| 633 | 638 |
| 634 nRet = bBottom ? 0 : 1; | 639 nRet = bBottom ? 0 : 1; |
| 635 fPopupRet = fFactHeight; | 640 fPopupRet = fFactHeight; |
| 636 } | 641 } |
| 637 | 642 |
| 638 void CFFL_IFormFiller::OnKeyStrokeCommit(CPDFSDK_Widget* pWidget, | 643 void CFFL_InteractiveFormFiller::OnKeyStrokeCommit(CPDFSDK_Widget* pWidget, |
| 639 CPDFSDK_PageView* pPageView, | 644 CPDFSDK_PageView* pPageView, |
| 640 FX_BOOL& bRC, | 645 FX_BOOL& bRC, |
| 641 FX_BOOL& bExit, | 646 FX_BOOL& bExit, |
| 642 uint32_t nFlag) { | 647 uint32_t nFlag) { |
| 643 if (!m_bNotifying) { | 648 if (!m_bNotifying) { |
| 644 if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { | 649 if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { |
| 645 m_bNotifying = TRUE; | 650 m_bNotifying = TRUE; |
| 646 pWidget->ClearAppModified(); | 651 pWidget->ClearAppModified(); |
| 647 | 652 |
| 648 ASSERT(pPageView); | 653 ASSERT(pPageView); |
| 649 | 654 |
| 650 PDFSDK_FieldAction fa; | 655 PDFSDK_FieldAction fa; |
| 651 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); | 656 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
| 652 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); | 657 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
| 653 fa.bWillCommit = TRUE; | 658 fa.bWillCommit = TRUE; |
| 654 fa.bKeyDown = TRUE; | 659 fa.bKeyDown = TRUE; |
| 655 fa.bRC = TRUE; | 660 fa.bRC = TRUE; |
| 656 | 661 |
| 657 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); | 662 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); |
| 658 pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa); | 663 pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa); |
| 659 pFormFiller->SaveState(pPageView); | 664 pFormFiller->SaveState(pPageView); |
| 660 | 665 |
| 661 pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView); | 666 pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView); |
| 662 | 667 |
| 663 bRC = fa.bRC; | 668 bRC = fa.bRC; |
| 664 m_bNotifying = FALSE; | 669 m_bNotifying = FALSE; |
| 665 } | 670 } |
| 666 } | 671 } |
| 667 } | 672 } |
| 668 | 673 |
| 669 void CFFL_IFormFiller::OnValidate(CPDFSDK_Widget* pWidget, | 674 void CFFL_InteractiveFormFiller::OnValidate(CPDFSDK_Widget* pWidget, |
| 670 CPDFSDK_PageView* pPageView, | 675 CPDFSDK_PageView* pPageView, |
| 671 FX_BOOL& bRC, | 676 FX_BOOL& bRC, |
| 672 FX_BOOL& bExit, | 677 FX_BOOL& bExit, |
| 673 uint32_t nFlag) { | 678 uint32_t nFlag) { |
| 674 if (!m_bNotifying) { | 679 if (!m_bNotifying) { |
| 675 if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) { | 680 if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) { |
| 676 m_bNotifying = TRUE; | 681 m_bNotifying = TRUE; |
| 677 pWidget->ClearAppModified(); | 682 pWidget->ClearAppModified(); |
| 678 | 683 |
| 679 ASSERT(pPageView); | 684 ASSERT(pPageView); |
| 680 | 685 |
| 681 PDFSDK_FieldAction fa; | 686 PDFSDK_FieldAction fa; |
| 682 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); | 687 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
| 683 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); | 688 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
| 684 fa.bKeyDown = TRUE; | 689 fa.bKeyDown = TRUE; |
| 685 fa.bRC = TRUE; | 690 fa.bRC = TRUE; |
| 686 | 691 |
| 687 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); | 692 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); |
| 688 pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa); | 693 pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa); |
| 689 pFormFiller->SaveState(pPageView); | 694 pFormFiller->SaveState(pPageView); |
| 690 | 695 |
| 691 pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView); | 696 pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView); |
| 692 | 697 |
| 693 bRC = fa.bRC; | 698 bRC = fa.bRC; |
| 694 m_bNotifying = FALSE; | 699 m_bNotifying = FALSE; |
| 695 } | 700 } |
| 696 } | 701 } |
| 697 } | 702 } |
| 698 | 703 |
| 699 void CFFL_IFormFiller::OnCalculate(CPDFSDK_Widget* pWidget, | 704 void CFFL_InteractiveFormFiller::OnCalculate(CPDFSDK_Widget* pWidget, |
| 700 CPDFSDK_PageView* pPageView, | 705 CPDFSDK_PageView* pPageView, |
| 701 FX_BOOL& bExit, | 706 FX_BOOL& bExit, |
| 702 uint32_t nFlag) { | 707 uint32_t nFlag) { |
| 703 if (!m_bNotifying) { | 708 if (!m_bNotifying) { |
| 704 ASSERT(pWidget); | 709 ASSERT(pWidget); |
| 705 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); | 710 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); |
| 706 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 711 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
| 707 pInterForm->OnCalculate(pWidget->GetFormField()); | 712 pInterForm->OnCalculate(pWidget->GetFormField()); |
| 708 m_bNotifying = FALSE; | 713 m_bNotifying = FALSE; |
| 709 } | 714 } |
| 710 } | 715 } |
| 711 | 716 |
| 712 void CFFL_IFormFiller::OnFormat(CPDFSDK_Widget* pWidget, | 717 void CFFL_InteractiveFormFiller::OnFormat(CPDFSDK_Widget* pWidget, |
| 713 CPDFSDK_PageView* pPageView, | 718 CPDFSDK_PageView* pPageView, |
| 714 FX_BOOL& bExit, | 719 FX_BOOL& bExit, |
| 715 uint32_t nFlag) { | 720 uint32_t nFlag) { |
| 716 if (!m_bNotifying) { | 721 if (!m_bNotifying) { |
| 717 ASSERT(pWidget); | 722 ASSERT(pWidget); |
| 718 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); | 723 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); |
| 719 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); | 724 CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm(); |
| 720 | 725 |
| 721 FX_BOOL bFormatted = FALSE; | 726 FX_BOOL bFormatted = FALSE; |
| 722 CFX_WideString sValue = | 727 CFX_WideString sValue = |
| 723 pInterForm->OnFormat(pWidget->GetFormField(), bFormatted); | 728 pInterForm->OnFormat(pWidget->GetFormField(), bFormatted); |
| 724 | 729 |
| 725 if (bExit) | 730 if (bExit) |
| 726 return; | 731 return; |
| 727 | 732 |
| 728 if (bFormatted) { | 733 if (bFormatted) { |
| 729 pInterForm->ResetFieldAppearance(pWidget->GetFormField(), &sValue, TRUE); | 734 pInterForm->ResetFieldAppearance(pWidget->GetFormField(), &sValue, TRUE); |
| 730 pInterForm->UpdateField(pWidget->GetFormField()); | 735 pInterForm->UpdateField(pWidget->GetFormField()); |
| 731 } | 736 } |
| 732 | 737 |
| 733 m_bNotifying = FALSE; | 738 m_bNotifying = FALSE; |
| 734 } | 739 } |
| 735 } | 740 } |
| 736 | 741 |
| 737 #ifdef PDF_ENABLE_XFA | 742 #ifdef PDF_ENABLE_XFA |
| 738 void CFFL_IFormFiller::OnClick(CPDFSDK_Widget* pWidget, | 743 void CFFL_InteractiveFormFiller::OnClick(CPDFSDK_Widget* pWidget, |
| 739 CPDFSDK_PageView* pPageView, | 744 CPDFSDK_PageView* pPageView, |
| 740 FX_BOOL& bReset, | 745 FX_BOOL& bReset, |
| 741 FX_BOOL& bExit, | 746 FX_BOOL& bExit, |
| 742 uint32_t nFlag) { | 747 uint32_t nFlag) { |
| 743 if (!m_bNotifying) { | 748 if (!m_bNotifying) { |
| 744 if (pWidget->HasXFAAAction(PDFSDK_XFA_Click)) { | 749 if (pWidget->HasXFAAAction(PDFSDK_XFA_Click)) { |
| 745 m_bNotifying = TRUE; | 750 m_bNotifying = TRUE; |
| 746 int nAge = pWidget->GetAppearanceAge(); | 751 int nAge = pWidget->GetAppearanceAge(); |
| 747 int nValueAge = pWidget->GetValueAge(); | 752 int nValueAge = pWidget->GetValueAge(); |
| 748 | 753 |
| 749 PDFSDK_FieldAction fa; | 754 PDFSDK_FieldAction fa; |
| 750 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); | 755 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
| 751 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); | 756 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
| 752 | 757 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 763 pFormFiller->ResetPDFWindow(pPageView, | 768 pFormFiller->ResetPDFWindow(pPageView, |
| 764 nValueAge == pWidget->GetValueAge()); | 769 nValueAge == pWidget->GetValueAge()); |
| 765 } | 770 } |
| 766 | 771 |
| 767 bReset = TRUE; | 772 bReset = TRUE; |
| 768 } | 773 } |
| 769 } | 774 } |
| 770 } | 775 } |
| 771 } | 776 } |
| 772 | 777 |
| 773 void CFFL_IFormFiller::OnFull(CPDFSDK_Widget* pWidget, | 778 void CFFL_InteractiveFormFiller::OnFull(CPDFSDK_Widget* pWidget, |
| 774 CPDFSDK_PageView* pPageView, | 779 CPDFSDK_PageView* pPageView, |
| 775 FX_BOOL& bReset, | 780 FX_BOOL& bReset, |
| 776 FX_BOOL& bExit, | 781 FX_BOOL& bExit, |
| 777 uint32_t nFlag) { | 782 uint32_t nFlag) { |
| 778 if (!m_bNotifying) { | 783 if (!m_bNotifying) { |
| 779 if (pWidget->HasXFAAAction(PDFSDK_XFA_Full)) { | 784 if (pWidget->HasXFAAAction(PDFSDK_XFA_Full)) { |
| 780 m_bNotifying = TRUE; | 785 m_bNotifying = TRUE; |
| 781 int nAge = pWidget->GetAppearanceAge(); | 786 int nAge = pWidget->GetAppearanceAge(); |
| 782 int nValueAge = pWidget->GetValueAge(); | 787 int nValueAge = pWidget->GetValueAge(); |
| 783 | 788 |
| 784 PDFSDK_FieldAction fa; | 789 PDFSDK_FieldAction fa; |
| 785 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); | 790 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
| 786 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); | 791 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
| 787 | 792 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 798 pFormFiller->ResetPDFWindow(pPageView, | 803 pFormFiller->ResetPDFWindow(pPageView, |
| 799 nValueAge == pWidget->GetValueAge()); | 804 nValueAge == pWidget->GetValueAge()); |
| 800 } | 805 } |
| 801 | 806 |
| 802 bReset = TRUE; | 807 bReset = TRUE; |
| 803 } | 808 } |
| 804 } | 809 } |
| 805 } | 810 } |
| 806 } | 811 } |
| 807 | 812 |
| 808 void CFFL_IFormFiller::OnPopupPreOpen(void* pPrivateData, | 813 void CFFL_InteractiveFormFiller::OnPopupPreOpen(void* pPrivateData, |
| 809 FX_BOOL& bExit, | 814 FX_BOOL& bExit, |
| 810 uint32_t nFlag) { | 815 uint32_t nFlag) { |
| 811 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; | 816 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; |
| 812 ASSERT(pData); | 817 ASSERT(pData); |
| 813 ASSERT(pData->pWidget); | 818 ASSERT(pData->pWidget); |
| 814 | 819 |
| 815 FX_BOOL bTempReset = FALSE; | 820 FX_BOOL bTempReset = FALSE; |
| 816 FX_BOOL bTempExit = FALSE; | 821 FX_BOOL bTempExit = FALSE; |
| 817 OnPreOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); | 822 OnPreOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); |
| 818 | 823 |
| 819 if (bTempReset || bTempExit) { | 824 if (bTempReset || bTempExit) { |
| 820 bExit = TRUE; | 825 bExit = TRUE; |
| 821 } | 826 } |
| 822 } | 827 } |
| 823 | 828 |
| 824 void CFFL_IFormFiller::OnPopupPostOpen(void* pPrivateData, | 829 void CFFL_InteractiveFormFiller::OnPopupPostOpen(void* pPrivateData, |
| 825 FX_BOOL& bExit, | 830 FX_BOOL& bExit, |
| 826 uint32_t nFlag) { | 831 uint32_t nFlag) { |
| 827 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; | 832 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; |
| 828 ASSERT(pData); | 833 ASSERT(pData); |
| 829 ASSERT(pData->pWidget); | 834 ASSERT(pData->pWidget); |
| 830 | 835 |
| 831 FX_BOOL bTempReset = FALSE; | 836 FX_BOOL bTempReset = FALSE; |
| 832 FX_BOOL bTempExit = FALSE; | 837 FX_BOOL bTempExit = FALSE; |
| 833 OnPostOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); | 838 OnPostOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); |
| 834 | 839 |
| 835 if (bTempReset || bTempExit) { | 840 if (bTempReset || bTempExit) { |
| 836 bExit = TRUE; | 841 bExit = TRUE; |
| 837 } | 842 } |
| 838 } | 843 } |
| 839 | 844 |
| 840 void CFFL_IFormFiller::OnPreOpen(CPDFSDK_Widget* pWidget, | 845 void CFFL_InteractiveFormFiller::OnPreOpen(CPDFSDK_Widget* pWidget, |
| 841 CPDFSDK_PageView* pPageView, | 846 CPDFSDK_PageView* pPageView, |
| 842 FX_BOOL& bReset, | 847 FX_BOOL& bReset, |
| 843 FX_BOOL& bExit, | 848 FX_BOOL& bExit, |
| 844 uint32_t nFlag) { | 849 uint32_t nFlag) { |
| 845 if (!m_bNotifying) { | 850 if (!m_bNotifying) { |
| 846 if (pWidget->HasXFAAAction(PDFSDK_XFA_PreOpen)) { | 851 if (pWidget->HasXFAAAction(PDFSDK_XFA_PreOpen)) { |
| 847 m_bNotifying = TRUE; | 852 m_bNotifying = TRUE; |
| 848 int nAge = pWidget->GetAppearanceAge(); | 853 int nAge = pWidget->GetAppearanceAge(); |
| 849 int nValueAge = pWidget->GetValueAge(); | 854 int nValueAge = pWidget->GetValueAge(); |
| 850 | 855 |
| 851 PDFSDK_FieldAction fa; | 856 PDFSDK_FieldAction fa; |
| 852 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); | 857 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
| 853 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); | 858 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
| 854 | 859 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 865 pFormFiller->ResetPDFWindow(pPageView, | 870 pFormFiller->ResetPDFWindow(pPageView, |
| 866 nValueAge == pWidget->GetValueAge()); | 871 nValueAge == pWidget->GetValueAge()); |
| 867 } | 872 } |
| 868 | 873 |
| 869 bReset = TRUE; | 874 bReset = TRUE; |
| 870 } | 875 } |
| 871 } | 876 } |
| 872 } | 877 } |
| 873 } | 878 } |
| 874 | 879 |
| 875 void CFFL_IFormFiller::OnPostOpen(CPDFSDK_Widget* pWidget, | 880 void CFFL_InteractiveFormFiller::OnPostOpen(CPDFSDK_Widget* pWidget, |
| 876 CPDFSDK_PageView* pPageView, | 881 CPDFSDK_PageView* pPageView, |
| 877 FX_BOOL& bReset, | 882 FX_BOOL& bReset, |
| 878 FX_BOOL& bExit, | 883 FX_BOOL& bExit, |
| 879 uint32_t nFlag) { | 884 uint32_t nFlag) { |
| 880 if (!m_bNotifying) { | 885 if (!m_bNotifying) { |
| 881 if (pWidget->HasXFAAAction(PDFSDK_XFA_PostOpen)) { | 886 if (pWidget->HasXFAAAction(PDFSDK_XFA_PostOpen)) { |
| 882 m_bNotifying = TRUE; | 887 m_bNotifying = TRUE; |
| 883 int nAge = pWidget->GetAppearanceAge(); | 888 int nAge = pWidget->GetAppearanceAge(); |
| 884 int nValueAge = pWidget->GetValueAge(); | 889 int nValueAge = pWidget->GetValueAge(); |
| 885 | 890 |
| 886 PDFSDK_FieldAction fa; | 891 PDFSDK_FieldAction fa; |
| 887 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); | 892 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); |
| 888 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); | 893 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); |
| 889 | 894 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 901 nValueAge == pWidget->GetValueAge()); | 906 nValueAge == pWidget->GetValueAge()); |
| 902 } | 907 } |
| 903 | 908 |
| 904 bReset = TRUE; | 909 bReset = TRUE; |
| 905 } | 910 } |
| 906 } | 911 } |
| 907 } | 912 } |
| 908 } | 913 } |
| 909 #endif // PDF_ENABLE_XFA | 914 #endif // PDF_ENABLE_XFA |
| 910 | 915 |
| 911 FX_BOOL CFFL_IFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView, | 916 FX_BOOL CFFL_InteractiveFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView, |
| 912 CPDFSDK_Annot* pAnnot) { | 917 CPDFSDK_Annot* pAnnot) { |
| 913 if (pPageView) | 918 if (pPageView) |
| 914 return pPageView->IsValidAnnot(pAnnot->GetPDFAnnot()); | 919 return pPageView->IsValidAnnot(pAnnot->GetPDFAnnot()); |
| 915 | 920 |
| 916 return FALSE; | 921 return FALSE; |
| 917 } | 922 } |
| 918 | 923 |
| 919 void CFFL_IFormFiller::OnBeforeKeyStroke(void* pPrivateData, | 924 void CFFL_InteractiveFormFiller::OnBeforeKeyStroke( |
| 920 CFX_WideString& strChange, | 925 void* pPrivateData, |
| 921 const CFX_WideString& strChangeEx, | 926 CFX_WideString& strChange, |
| 922 int nSelStart, | 927 const CFX_WideString& strChangeEx, |
| 923 int nSelEnd, | 928 int nSelStart, |
| 924 FX_BOOL bKeyDown, | 929 int nSelEnd, |
| 925 FX_BOOL& bRC, | 930 FX_BOOL bKeyDown, |
| 926 FX_BOOL& bExit, | 931 FX_BOOL& bRC, |
| 927 uint32_t nFlag) { | 932 FX_BOOL& bExit, |
| 933 uint32_t nFlag) { |
| 928 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; | 934 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; |
| 929 ASSERT(pData->pWidget); | 935 ASSERT(pData->pWidget); |
| 930 | 936 |
| 931 CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, FALSE); | 937 CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, FALSE); |
| 932 | 938 |
| 933 #ifdef PDF_ENABLE_XFA | 939 #ifdef PDF_ENABLE_XFA |
| 934 if (pFormFiller->IsFieldFull(pData->pPageView)) { | 940 if (pFormFiller->IsFieldFull(pData->pPageView)) { |
| 935 FX_BOOL bFullExit = FALSE; | 941 FX_BOOL bFullExit = FALSE; |
| 936 FX_BOOL bFullReset = FALSE; | 942 FX_BOOL bFullReset = FALSE; |
| 937 OnFull(pData->pWidget, pData->pPageView, bFullReset, bFullExit, nFlag); | 943 OnFull(pData->pWidget, pData->pPageView, bFullReset, bFullExit, nFlag); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 998 bExit = TRUE; | 1004 bExit = TRUE; |
| 999 m_bNotifying = FALSE; | 1005 m_bNotifying = FALSE; |
| 1000 return; | 1006 return; |
| 1001 } | 1007 } |
| 1002 } | 1008 } |
| 1003 | 1009 |
| 1004 m_bNotifying = FALSE; | 1010 m_bNotifying = FALSE; |
| 1005 } | 1011 } |
| 1006 } | 1012 } |
| 1007 } | 1013 } |
| OLD | NEW |