| 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_interactiveformfiller.h" | 7 #include "fpdfsdk/formfiller/cffl_interactiveformfiller.h" |
| 8 | 8 |
| 9 #include "core/fpdfapi/page/cpdf_page.h" | 9 #include "core/fpdfapi/page/cpdf_page.h" |
| 10 #include "core/fpdfapi/parser/cpdf_document.h" | 10 #include "core/fpdfapi/parser/cpdf_document.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 #include "fpdfsdk/formfiller/cffl_listbox.h" | 21 #include "fpdfsdk/formfiller/cffl_listbox.h" |
| 22 #include "fpdfsdk/formfiller/cffl_pushbutton.h" | 22 #include "fpdfsdk/formfiller/cffl_pushbutton.h" |
| 23 #include "fpdfsdk/formfiller/cffl_radiobutton.h" | 23 #include "fpdfsdk/formfiller/cffl_radiobutton.h" |
| 24 #include "fpdfsdk/formfiller/cffl_textfield.h" | 24 #include "fpdfsdk/formfiller/cffl_textfield.h" |
| 25 #include "fpdfsdk/pdfwindow/PWL_Utils.h" | 25 #include "fpdfsdk/pdfwindow/PWL_Utils.h" |
| 26 | 26 |
| 27 #define FFL_MAXLISTBOXHEIGHT 140.0f | 27 #define FFL_MAXLISTBOXHEIGHT 140.0f |
| 28 | 28 |
| 29 CFFL_InteractiveFormFiller::CFFL_InteractiveFormFiller( | 29 CFFL_InteractiveFormFiller::CFFL_InteractiveFormFiller( |
| 30 CPDFSDK_FormFillEnvironment* pFormFillEnv) | 30 CPDFSDK_FormFillEnvironment* pFormFillEnv) |
| 31 : m_pFormFillEnv(pFormFillEnv), m_bNotifying(FALSE) {} | 31 : m_pFormFillEnv(pFormFillEnv), m_bNotifying(false) {} |
| 32 | 32 |
| 33 CFFL_InteractiveFormFiller::~CFFL_InteractiveFormFiller() {} | 33 CFFL_InteractiveFormFiller::~CFFL_InteractiveFormFiller() {} |
| 34 | 34 |
| 35 FX_BOOL CFFL_InteractiveFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView, | 35 bool CFFL_InteractiveFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView, |
| 36 CPDFSDK_Annot* pAnnot, | 36 CPDFSDK_Annot* pAnnot, |
| 37 CFX_FloatPoint point) { | 37 CFX_FloatPoint point) { |
| 38 CFX_FloatRect rc = pAnnot->GetRect(); | 38 CFX_FloatRect rc = pAnnot->GetRect(); |
| 39 return rc.Contains(point.x, point.y); | 39 return rc.Contains(point.x, point.y); |
| 40 } | 40 } |
| 41 | 41 |
| 42 FX_RECT CFFL_InteractiveFormFiller::GetViewBBox(CPDFSDK_PageView* pPageView, | 42 FX_RECT CFFL_InteractiveFormFiller::GetViewBBox(CPDFSDK_PageView* pPageView, |
| 43 CPDFSDK_Annot* pAnnot) { | 43 CPDFSDK_Annot* pAnnot) { |
| 44 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) | 44 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, false)) |
| 45 return pFormFiller->GetViewBBox(pPageView, pAnnot); | 45 return pFormFiller->GetViewBBox(pPageView, pAnnot); |
| 46 | 46 |
| 47 ASSERT(pPageView); | 47 ASSERT(pPageView); |
| 48 | 48 |
| 49 CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot(); | 49 CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot(); |
| 50 CFX_FloatRect rcWin = CPWL_Utils::InflateRect(pPDFAnnot->GetRect(), 1); | 50 CFX_FloatRect rcWin = CPWL_Utils::InflateRect(pPDFAnnot->GetRect(), 1); |
| 51 return rcWin.GetOuterRect(); | 51 return rcWin.GetOuterRect(); |
| 52 } | 52 } |
| 53 | 53 |
| 54 void CFFL_InteractiveFormFiller::OnDraw(CPDFSDK_PageView* pPageView, | 54 void CFFL_InteractiveFormFiller::OnDraw(CPDFSDK_PageView* pPageView, |
| 55 CPDFSDK_Annot* pAnnot, | 55 CPDFSDK_Annot* pAnnot, |
| 56 CFX_RenderDevice* pDevice, | 56 CFX_RenderDevice* pDevice, |
| 57 CFX_Matrix* pUser2Device) { | 57 CFX_Matrix* pUser2Device) { |
| 58 ASSERT(pPageView); | 58 ASSERT(pPageView); |
| 59 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 59 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 60 | 60 |
| 61 if (!IsVisible(pWidget)) | 61 if (!IsVisible(pWidget)) |
| 62 return; | 62 return; |
| 63 | 63 |
| 64 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 64 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, false)) { |
| 65 if (pFormFiller->IsValid()) { | 65 if (pFormFiller->IsValid()) { |
| 66 pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device); | 66 pFormFiller->OnDraw(pPageView, pAnnot, pDevice, pUser2Device); |
| 67 pAnnot->GetPDFPage(); | 67 pAnnot->GetPDFPage(); |
| 68 | 68 |
| 69 if (m_pFormFillEnv->GetFocusAnnot() == pAnnot) { | 69 if (m_pFormFillEnv->GetFocusAnnot() == pAnnot) { |
| 70 CFX_FloatRect rcFocus = pFormFiller->GetFocusBox(pPageView); | 70 CFX_FloatRect rcFocus = pFormFiller->GetFocusBox(pPageView); |
| 71 if (!rcFocus.IsEmpty()) { | 71 if (!rcFocus.IsEmpty()) { |
| 72 CFX_PathData path; | 72 CFX_PathData path; |
| 73 path.SetPointCount(5); | 73 path.SetPointCount(5); |
| 74 path.SetPoint(0, rcFocus.left, rcFocus.top, FXPT_MOVETO); | 74 path.SetPoint(0, rcFocus.left, rcFocus.top, FXPT_MOVETO); |
| 75 path.SetPoint(1, rcFocus.left, rcFocus.bottom, FXPT_LINETO); | 75 path.SetPoint(1, rcFocus.left, rcFocus.bottom, FXPT_LINETO); |
| 76 path.SetPoint(2, rcFocus.right, rcFocus.bottom, FXPT_LINETO); | 76 path.SetPoint(2, rcFocus.right, rcFocus.bottom, FXPT_LINETO); |
| 77 path.SetPoint(3, rcFocus.right, rcFocus.top, FXPT_LINETO); | 77 path.SetPoint(3, rcFocus.right, rcFocus.top, FXPT_LINETO); |
| 78 path.SetPoint(4, rcFocus.left, rcFocus.top, FXPT_LINETO); | 78 path.SetPoint(4, rcFocus.left, rcFocus.top, FXPT_LINETO); |
| 79 | 79 |
| 80 CFX_GraphStateData gsd; | 80 CFX_GraphStateData gsd; |
| 81 gsd.SetDashCount(1); | 81 gsd.SetDashCount(1); |
| 82 gsd.m_DashArray[0] = 1.0f; | 82 gsd.m_DashArray[0] = 1.0f; |
| 83 gsd.m_DashPhase = 0; | 83 gsd.m_DashPhase = 0; |
| 84 gsd.m_LineWidth = 1.0f; | 84 gsd.m_LineWidth = 1.0f; |
| 85 pDevice->DrawPath(&path, pUser2Device, &gsd, 0, | 85 pDevice->DrawPath(&path, pUser2Device, &gsd, 0, |
| 86 ArgbEncode(255, 0, 0, 0), FXFILL_ALTERNATE); | 86 ArgbEncode(255, 0, 0, 0), FXFILL_ALTERNATE); |
| 87 } | 87 } |
| 88 } | 88 } |
| 89 return; | 89 return; |
| 90 } | 90 } |
| 91 } | 91 } |
| 92 | 92 |
| 93 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 93 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, false)) { |
| 94 pFormFiller->OnDrawDeactive(pPageView, pAnnot, pDevice, pUser2Device); | 94 pFormFiller->OnDrawDeactive(pPageView, pAnnot, pDevice, pUser2Device); |
| 95 } else { | 95 } else { |
| 96 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, nullptr); | 96 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, nullptr); |
| 97 } | 97 } |
| 98 | 98 |
| 99 if (!IsReadOnly(pWidget) && IsFillingAllowed(pWidget)) | 99 if (!IsReadOnly(pWidget) && IsFillingAllowed(pWidget)) |
| 100 pWidget->DrawShadow(pDevice, pPageView); | 100 pWidget->DrawShadow(pDevice, pPageView); |
| 101 } | 101 } |
| 102 | 102 |
| 103 void CFFL_InteractiveFormFiller::OnDelete(CPDFSDK_Annot* pAnnot) { | 103 void CFFL_InteractiveFormFiller::OnDelete(CPDFSDK_Annot* pAnnot) { |
| 104 UnRegisterFormFiller(pAnnot); | 104 UnRegisterFormFiller(pAnnot); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void CFFL_InteractiveFormFiller::OnMouseEnter( | 107 void CFFL_InteractiveFormFiller::OnMouseEnter( |
| 108 CPDFSDK_PageView* pPageView, | 108 CPDFSDK_PageView* pPageView, |
| 109 CPDFSDK_Annot::ObservedPtr* pAnnot, | 109 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 110 uint32_t nFlag) { | 110 uint32_t nFlag) { |
| 111 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 111 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 112 if (!m_bNotifying) { | 112 if (!m_bNotifying) { |
| 113 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 113 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 114 if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) { | 114 if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) { |
| 115 m_bNotifying = TRUE; | 115 m_bNotifying = true; |
| 116 | 116 |
| 117 int nValueAge = pWidget->GetValueAge(); | 117 int nValueAge = pWidget->GetValueAge(); |
| 118 pWidget->ClearAppModified(); | 118 pWidget->ClearAppModified(); |
| 119 ASSERT(pPageView); | 119 ASSERT(pPageView); |
| 120 | 120 |
| 121 PDFSDK_FieldAction fa; | 121 PDFSDK_FieldAction fa; |
| 122 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 122 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 123 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 123 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 124 pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView); | 124 pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView); |
| 125 m_bNotifying = FALSE; | 125 m_bNotifying = false; |
| 126 if (!(*pAnnot)) | 126 if (!(*pAnnot)) |
| 127 return; | 127 return; |
| 128 | 128 |
| 129 if (pWidget->IsAppModified()) { | 129 if (pWidget->IsAppModified()) { |
| 130 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { | 130 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false)) { |
| 131 pFormFiller->ResetPDFWindow(pPageView, | 131 pFormFiller->ResetPDFWindow(pPageView, |
| 132 pWidget->GetValueAge() == nValueAge); | 132 pWidget->GetValueAge() == nValueAge); |
| 133 } | 133 } |
| 134 } | 134 } |
| 135 } | 135 } |
| 136 } | 136 } |
| 137 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE)) | 137 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), true)) |
| 138 pFormFiller->OnMouseEnter(pPageView, pAnnot->Get()); | 138 pFormFiller->OnMouseEnter(pPageView, pAnnot->Get()); |
| 139 } | 139 } |
| 140 | 140 |
| 141 void CFFL_InteractiveFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, | 141 void CFFL_InteractiveFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, |
| 142 CPDFSDK_Annot::ObservedPtr* pAnnot, | 142 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 143 uint32_t nFlag) { | 143 uint32_t nFlag) { |
| 144 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 144 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 145 if (!m_bNotifying) { | 145 if (!m_bNotifying) { |
| 146 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 146 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 147 if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) { | 147 if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) { |
| 148 m_bNotifying = TRUE; | 148 m_bNotifying = true; |
| 149 pWidget->GetAppearanceAge(); | 149 pWidget->GetAppearanceAge(); |
| 150 | 150 |
| 151 int nValueAge = pWidget->GetValueAge(); | 151 int nValueAge = pWidget->GetValueAge(); |
| 152 pWidget->ClearAppModified(); | 152 pWidget->ClearAppModified(); |
| 153 ASSERT(pPageView); | 153 ASSERT(pPageView); |
| 154 | 154 |
| 155 PDFSDK_FieldAction fa; | 155 PDFSDK_FieldAction fa; |
| 156 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 156 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 157 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 157 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 158 pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView); | 158 pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView); |
| 159 m_bNotifying = FALSE; | 159 m_bNotifying = false; |
| 160 if (!(*pAnnot)) | 160 if (!(*pAnnot)) |
| 161 return; | 161 return; |
| 162 | 162 |
| 163 if (pWidget->IsAppModified()) { | 163 if (pWidget->IsAppModified()) { |
| 164 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { | 164 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false)) { |
| 165 pFormFiller->ResetPDFWindow(pPageView, | 165 pFormFiller->ResetPDFWindow(pPageView, |
| 166 nValueAge == pWidget->GetValueAge()); | 166 nValueAge == pWidget->GetValueAge()); |
| 167 } | 167 } |
| 168 } | 168 } |
| 169 } | 169 } |
| 170 } | 170 } |
| 171 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) | 171 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), false)) |
| 172 pFormFiller->OnMouseExit(pPageView, pAnnot->Get()); | 172 pFormFiller->OnMouseExit(pPageView, pAnnot->Get()); |
| 173 } | 173 } |
| 174 | 174 |
| 175 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDown( | 175 bool CFFL_InteractiveFormFiller::OnLButtonDown( |
| 176 CPDFSDK_PageView* pPageView, | 176 CPDFSDK_PageView* pPageView, |
| 177 CPDFSDK_Annot::ObservedPtr* pAnnot, | 177 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 178 uint32_t nFlags, | 178 uint32_t nFlags, |
| 179 const CFX_FloatPoint& point) { | 179 const CFX_FloatPoint& point) { |
| 180 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 180 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 181 if (!m_bNotifying) { | 181 if (!m_bNotifying) { |
| 182 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 182 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 183 if (Annot_HitTest(pPageView, pAnnot->Get(), point) && | 183 if (Annot_HitTest(pPageView, pAnnot->Get(), point) && |
| 184 pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) { | 184 pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) { |
| 185 m_bNotifying = TRUE; | 185 m_bNotifying = true; |
| 186 pWidget->GetAppearanceAge(); | 186 pWidget->GetAppearanceAge(); |
| 187 | 187 |
| 188 int nValueAge = pWidget->GetValueAge(); | 188 int nValueAge = pWidget->GetValueAge(); |
| 189 pWidget->ClearAppModified(); | 189 pWidget->ClearAppModified(); |
| 190 ASSERT(pPageView); | 190 ASSERT(pPageView); |
| 191 | 191 |
| 192 PDFSDK_FieldAction fa; | 192 PDFSDK_FieldAction fa; |
| 193 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlags); | 193 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlags); |
| 194 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlags); | 194 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlags); |
| 195 pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView); | 195 pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView); |
| 196 m_bNotifying = FALSE; | 196 m_bNotifying = false; |
| 197 if (!(*pAnnot)) | 197 if (!(*pAnnot)) |
| 198 return TRUE; | 198 return true; |
| 199 | 199 |
| 200 if (!IsValidAnnot(pPageView, pAnnot->Get())) | 200 if (!IsValidAnnot(pPageView, pAnnot->Get())) |
| 201 return TRUE; | 201 return true; |
| 202 | 202 |
| 203 if (pWidget->IsAppModified()) { | 203 if (pWidget->IsAppModified()) { |
| 204 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { | 204 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false)) { |
| 205 pFormFiller->ResetPDFWindow(pPageView, | 205 pFormFiller->ResetPDFWindow(pPageView, |
| 206 nValueAge == pWidget->GetValueAge()); | 206 nValueAge == pWidget->GetValueAge()); |
| 207 } | 207 } |
| 208 } | 208 } |
| 209 } | 209 } |
| 210 } | 210 } |
| 211 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) | 211 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), false)) |
| 212 return pFormFiller->OnLButtonDown(pPageView, pAnnot->Get(), nFlags, point); | 212 return pFormFiller->OnLButtonDown(pPageView, pAnnot->Get(), nFlags, point); |
| 213 | 213 |
| 214 return FALSE; | 214 return false; |
| 215 } | 215 } |
| 216 | 216 |
| 217 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp( | 217 bool CFFL_InteractiveFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView, |
| 218 CPDFSDK_PageView* pPageView, | 218 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 219 CPDFSDK_Annot::ObservedPtr* pAnnot, | 219 uint32_t nFlags, |
| 220 uint32_t nFlags, | 220 const CFX_FloatPoint& point) { |
| 221 const CFX_FloatPoint& point) { | |
| 222 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 221 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 223 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 222 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 224 | 223 |
| 225 switch (pWidget->GetFieldType()) { | 224 switch (pWidget->GetFieldType()) { |
| 226 case FIELDTYPE_PUSHBUTTON: | 225 case FIELDTYPE_PUSHBUTTON: |
| 227 case FIELDTYPE_CHECKBOX: | 226 case FIELDTYPE_CHECKBOX: |
| 228 case FIELDTYPE_RADIOBUTTON: | 227 case FIELDTYPE_RADIOBUTTON: |
| 229 if (GetViewBBox(pPageView, pAnnot->Get()) | 228 if (GetViewBBox(pPageView, pAnnot->Get()) |
| 230 .Contains((int)point.x, (int)point.y)) | 229 .Contains((int)point.x, (int)point.y)) |
| 231 m_pFormFillEnv->SetFocusAnnot(pAnnot); | 230 m_pFormFillEnv->SetFocusAnnot(pAnnot); |
| 232 break; | 231 break; |
| 233 default: | 232 default: |
| 234 m_pFormFillEnv->SetFocusAnnot(pAnnot); | 233 m_pFormFillEnv->SetFocusAnnot(pAnnot); |
| 235 break; | 234 break; |
| 236 } | 235 } |
| 237 | 236 |
| 238 FX_BOOL bRet = FALSE; | 237 bool bRet = false; |
| 239 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) | 238 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), false)) |
| 240 bRet = pFormFiller->OnLButtonUp(pPageView, pAnnot->Get(), nFlags, point); | 239 bRet = pFormFiller->OnLButtonUp(pPageView, pAnnot->Get(), nFlags, point); |
| 241 | 240 |
| 242 if (m_pFormFillEnv->GetFocusAnnot() == pAnnot->Get()) { | 241 if (m_pFormFillEnv->GetFocusAnnot() == pAnnot->Get()) { |
| 243 FX_BOOL bExit = FALSE; | 242 bool bExit = false; |
| 244 FX_BOOL bReset = FALSE; | 243 bool bReset = false; |
| 245 OnButtonUp(pAnnot, pPageView, bReset, bExit, nFlags); | 244 OnButtonUp(pAnnot, pPageView, bReset, bExit, nFlags); |
| 246 if (!pAnnot || bExit) | 245 if (!pAnnot || bExit) |
| 247 return TRUE; | 246 return true; |
| 248 #ifdef PDF_ENABLE_XFA | 247 #ifdef PDF_ENABLE_XFA |
| 249 OnClick(pWidget, pPageView, bReset, bExit, nFlags); | 248 OnClick(pWidget, pPageView, bReset, bExit, nFlags); |
| 250 if (!pAnnot || bExit) | 249 if (!pAnnot || bExit) |
| 251 return TRUE; | 250 return true; |
| 252 #endif // PDF_ENABLE_XFA | 251 #endif // PDF_ENABLE_XFA |
| 253 } | 252 } |
| 254 return bRet; | 253 return bRet; |
| 255 } | 254 } |
| 256 | 255 |
| 257 void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot, | 256 void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 258 CPDFSDK_PageView* pPageView, | 257 CPDFSDK_PageView* pPageView, |
| 259 FX_BOOL& bReset, | 258 bool& bReset, |
| 260 FX_BOOL& bExit, | 259 bool& bExit, |
| 261 uint32_t nFlag) { | 260 uint32_t nFlag) { |
| 262 if (!m_bNotifying) { | 261 if (!m_bNotifying) { |
| 263 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 262 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 264 if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) { | 263 if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) { |
| 265 m_bNotifying = TRUE; | 264 m_bNotifying = true; |
| 266 | 265 |
| 267 int nAge = pWidget->GetAppearanceAge(); | 266 int nAge = pWidget->GetAppearanceAge(); |
| 268 int nValueAge = pWidget->GetValueAge(); | 267 int nValueAge = pWidget->GetValueAge(); |
| 269 ASSERT(pPageView); | 268 ASSERT(pPageView); |
| 270 | 269 |
| 271 PDFSDK_FieldAction fa; | 270 PDFSDK_FieldAction fa; |
| 272 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 271 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 273 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 272 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 274 pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView); | 273 pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView); |
| 275 m_bNotifying = FALSE; | 274 m_bNotifying = false; |
| 276 if (!(*pAnnot) || !IsValidAnnot(pPageView, pWidget)) { | 275 if (!(*pAnnot) || !IsValidAnnot(pPageView, pWidget)) { |
| 277 bExit = TRUE; | 276 bExit = true; |
| 278 return; | 277 return; |
| 279 } | 278 } |
| 280 if (nAge != pWidget->GetAppearanceAge()) { | 279 if (nAge != pWidget->GetAppearanceAge()) { |
| 281 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { | 280 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false)) { |
| 282 pFormFiller->ResetPDFWindow(pPageView, | 281 pFormFiller->ResetPDFWindow(pPageView, |
| 283 nValueAge == pWidget->GetValueAge()); | 282 nValueAge == pWidget->GetValueAge()); |
| 284 } | 283 } |
| 285 bReset = TRUE; | 284 bReset = true; |
| 286 } | 285 } |
| 287 } | 286 } |
| 288 } | 287 } |
| 289 } | 288 } |
| 290 | 289 |
| 291 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDblClk( | 290 bool CFFL_InteractiveFormFiller::OnLButtonDblClk( |
| 292 CPDFSDK_PageView* pPageView, | 291 CPDFSDK_PageView* pPageView, |
| 293 CPDFSDK_Annot::ObservedPtr* pAnnot, | 292 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 294 uint32_t nFlags, | 293 uint32_t nFlags, |
| 295 const CFX_FloatPoint& point) { | 294 const CFX_FloatPoint& point) { |
| 296 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 295 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 297 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE); | 296 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), false); |
| 298 return pFormFiller && | 297 return pFormFiller && |
| 299 pFormFiller->OnLButtonDblClk(pPageView, pAnnot->Get(), nFlags, point); | 298 pFormFiller->OnLButtonDblClk(pPageView, pAnnot->Get(), nFlags, point); |
| 300 } | 299 } |
| 301 | 300 |
| 302 FX_BOOL CFFL_InteractiveFormFiller::OnMouseMove( | 301 bool CFFL_InteractiveFormFiller::OnMouseMove(CPDFSDK_PageView* pPageView, |
| 303 CPDFSDK_PageView* pPageView, | 302 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 304 CPDFSDK_Annot::ObservedPtr* pAnnot, | 303 uint32_t nFlags, |
| 305 uint32_t nFlags, | 304 const CFX_FloatPoint& point) { |
| 306 const CFX_FloatPoint& point) { | |
| 307 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 305 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 308 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE); | 306 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), true); |
| 309 return pFormFiller && | 307 return pFormFiller && |
| 310 pFormFiller->OnMouseMove(pPageView, pAnnot->Get(), nFlags, point); | 308 pFormFiller->OnMouseMove(pPageView, pAnnot->Get(), nFlags, point); |
| 311 } | 309 } |
| 312 | 310 |
| 313 FX_BOOL CFFL_InteractiveFormFiller::OnMouseWheel( | 311 bool CFFL_InteractiveFormFiller::OnMouseWheel( |
| 314 CPDFSDK_PageView* pPageView, | 312 CPDFSDK_PageView* pPageView, |
| 315 CPDFSDK_Annot::ObservedPtr* pAnnot, | 313 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 316 uint32_t nFlags, | 314 uint32_t nFlags, |
| 317 short zDelta, | 315 short zDelta, |
| 318 const CFX_FloatPoint& point) { | 316 const CFX_FloatPoint& point) { |
| 319 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 317 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 320 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE); | 318 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), false); |
| 321 return pFormFiller && | 319 return pFormFiller && |
| 322 pFormFiller->OnMouseWheel(pPageView, pAnnot->Get(), nFlags, zDelta, | 320 pFormFiller->OnMouseWheel(pPageView, pAnnot->Get(), nFlags, zDelta, |
| 323 point); | 321 point); |
| 324 } | 322 } |
| 325 | 323 |
| 326 FX_BOOL CFFL_InteractiveFormFiller::OnRButtonDown( | 324 bool CFFL_InteractiveFormFiller::OnRButtonDown( |
| 327 CPDFSDK_PageView* pPageView, | 325 CPDFSDK_PageView* pPageView, |
| 328 CPDFSDK_Annot::ObservedPtr* pAnnot, | 326 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 329 uint32_t nFlags, | 327 uint32_t nFlags, |
| 330 const CFX_FloatPoint& point) { | 328 const CFX_FloatPoint& point) { |
| 331 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 329 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 332 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE); | 330 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), false); |
| 333 return pFormFiller && | 331 return pFormFiller && |
| 334 pFormFiller->OnRButtonDown(pPageView, pAnnot->Get(), nFlags, point); | 332 pFormFiller->OnRButtonDown(pPageView, pAnnot->Get(), nFlags, point); |
| 335 } | 333 } |
| 336 | 334 |
| 337 FX_BOOL CFFL_InteractiveFormFiller::OnRButtonUp( | 335 bool CFFL_InteractiveFormFiller::OnRButtonUp(CPDFSDK_PageView* pPageView, |
| 338 CPDFSDK_PageView* pPageView, | 336 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 339 CPDFSDK_Annot::ObservedPtr* pAnnot, | 337 uint32_t nFlags, |
| 340 uint32_t nFlags, | 338 const CFX_FloatPoint& point) { |
| 341 const CFX_FloatPoint& point) { | |
| 342 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 339 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 343 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE); | 340 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), false); |
| 344 return pFormFiller && | 341 return pFormFiller && |
| 345 pFormFiller->OnRButtonUp(pPageView, pAnnot->Get(), nFlags, point); | 342 pFormFiller->OnRButtonUp(pPageView, pAnnot->Get(), nFlags, point); |
| 346 } | 343 } |
| 347 | 344 |
| 348 FX_BOOL CFFL_InteractiveFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, | 345 bool CFFL_InteractiveFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, |
| 349 uint32_t nKeyCode, | 346 uint32_t nKeyCode, |
| 350 uint32_t nFlags) { | 347 uint32_t nFlags) { |
| 351 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 348 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 352 | 349 |
| 353 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { | 350 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, false)) { |
| 354 return pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlags); | 351 return pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlags); |
| 355 } | 352 } |
| 356 | 353 |
| 357 return FALSE; | 354 return false; |
| 358 } | 355 } |
| 359 | 356 |
| 360 FX_BOOL CFFL_InteractiveFormFiller::OnChar(CPDFSDK_Annot* pAnnot, | 357 bool CFFL_InteractiveFormFiller::OnChar(CPDFSDK_Annot* pAnnot, |
| 361 uint32_t nChar, | 358 uint32_t nChar, |
| 362 uint32_t nFlags) { | 359 uint32_t nFlags) { |
| 363 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 360 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 364 if (nChar == FWL_VKEY_Tab) | 361 if (nChar == FWL_VKEY_Tab) |
| 365 return TRUE; | 362 return true; |
| 366 | 363 |
| 367 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) | 364 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, false)) |
| 368 return pFormFiller->OnChar(pAnnot, nChar, nFlags); | 365 return pFormFiller->OnChar(pAnnot, nChar, nFlags); |
| 369 | 366 |
| 370 return FALSE; | 367 return false; |
| 371 } | 368 } |
| 372 | 369 |
| 373 FX_BOOL CFFL_InteractiveFormFiller::OnSetFocus( | 370 bool CFFL_InteractiveFormFiller::OnSetFocus(CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 374 CPDFSDK_Annot::ObservedPtr* pAnnot, | 371 uint32_t nFlag) { |
| 375 uint32_t nFlag) { | |
| 376 if (!(*pAnnot)) | 372 if (!(*pAnnot)) |
| 377 return FALSE; | 373 return false; |
| 378 | 374 |
| 379 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 375 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 380 if (!m_bNotifying) { | 376 if (!m_bNotifying) { |
| 381 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 377 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 382 if (pWidget->GetAAction(CPDF_AAction::GetFocus).GetDict()) { | 378 if (pWidget->GetAAction(CPDF_AAction::GetFocus).GetDict()) { |
| 383 m_bNotifying = TRUE; | 379 m_bNotifying = true; |
| 384 pWidget->GetAppearanceAge(); | 380 pWidget->GetAppearanceAge(); |
| 385 | 381 |
| 386 int nValueAge = pWidget->GetValueAge(); | 382 int nValueAge = pWidget->GetValueAge(); |
| 387 pWidget->ClearAppModified(); | 383 pWidget->ClearAppModified(); |
| 388 | 384 |
| 389 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE); | 385 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, true); |
| 390 if (!pFormFiller) | 386 if (!pFormFiller) |
| 391 return FALSE; | 387 return false; |
| 392 | 388 |
| 393 CPDFSDK_PageView* pPageView = (*pAnnot)->GetPageView(); | 389 CPDFSDK_PageView* pPageView = (*pAnnot)->GetPageView(); |
| 394 ASSERT(pPageView); | 390 ASSERT(pPageView); |
| 395 | 391 |
| 396 PDFSDK_FieldAction fa; | 392 PDFSDK_FieldAction fa; |
| 397 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 393 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 398 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 394 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 399 pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa); | 395 pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa); |
| 400 pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView); | 396 pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView); |
| 401 m_bNotifying = FALSE; | 397 m_bNotifying = false; |
| 402 if (!(*pAnnot)) | 398 if (!(*pAnnot)) |
| 403 return FALSE; | 399 return false; |
| 404 | 400 |
| 405 if (pWidget->IsAppModified()) { | 401 if (pWidget->IsAppModified()) { |
| 406 if (CFFL_FormFiller* pFiller = GetFormFiller(pWidget, FALSE)) { | 402 if (CFFL_FormFiller* pFiller = GetFormFiller(pWidget, false)) { |
| 407 pFiller->ResetPDFWindow(pPageView, | 403 pFiller->ResetPDFWindow(pPageView, |
| 408 nValueAge == pWidget->GetValueAge()); | 404 nValueAge == pWidget->GetValueAge()); |
| 409 } | 405 } |
| 410 } | 406 } |
| 411 } | 407 } |
| 412 } | 408 } |
| 413 | 409 |
| 414 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE)) | 410 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), true)) |
| 415 pFormFiller->SetFocusForAnnot(pAnnot->Get(), nFlag); | 411 pFormFiller->SetFocusForAnnot(pAnnot->Get(), nFlag); |
| 416 | 412 |
| 417 return TRUE; | 413 return true; |
| 418 } | 414 } |
| 419 | 415 |
| 420 FX_BOOL CFFL_InteractiveFormFiller::OnKillFocus( | 416 bool CFFL_InteractiveFormFiller::OnKillFocus(CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 421 CPDFSDK_Annot::ObservedPtr* pAnnot, | 417 uint32_t nFlag) { |
| 422 uint32_t nFlag) { | |
| 423 if (!(*pAnnot)) | 418 if (!(*pAnnot)) |
| 424 return FALSE; | 419 return false; |
| 425 | 420 |
| 426 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); | 421 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 427 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) { | 422 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), false)) { |
| 428 pFormFiller->KillFocusForAnnot(pAnnot->Get(), nFlag); | 423 pFormFiller->KillFocusForAnnot(pAnnot->Get(), nFlag); |
| 429 if (!m_bNotifying) { | 424 if (!m_bNotifying) { |
| 430 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 425 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 431 if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) { | 426 if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) { |
| 432 m_bNotifying = TRUE; | 427 m_bNotifying = true; |
| 433 pWidget->ClearAppModified(); | 428 pWidget->ClearAppModified(); |
| 434 | 429 |
| 435 CPDFSDK_PageView* pPageView = pWidget->GetPageView(); | 430 CPDFSDK_PageView* pPageView = pWidget->GetPageView(); |
| 436 ASSERT(pPageView); | 431 ASSERT(pPageView); |
| 437 | 432 |
| 438 PDFSDK_FieldAction fa; | 433 PDFSDK_FieldAction fa; |
| 439 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 434 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 440 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 435 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 441 pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa); | 436 pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa); |
| 442 pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView); | 437 pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView); |
| 443 m_bNotifying = FALSE; | 438 m_bNotifying = false; |
| 444 if (!(*pAnnot)) | 439 if (!(*pAnnot)) |
| 445 return FALSE; | 440 return false; |
| 446 } | 441 } |
| 447 } | 442 } |
| 448 } | 443 } |
| 449 return TRUE; | 444 return true; |
| 450 } | 445 } |
| 451 | 446 |
| 452 FX_BOOL CFFL_InteractiveFormFiller::IsVisible(CPDFSDK_Widget* pWidget) { | 447 bool CFFL_InteractiveFormFiller::IsVisible(CPDFSDK_Widget* pWidget) { |
| 453 return pWidget->IsVisible(); | 448 return pWidget->IsVisible(); |
| 454 } | 449 } |
| 455 | 450 |
| 456 FX_BOOL CFFL_InteractiveFormFiller::IsReadOnly(CPDFSDK_Widget* pWidget) { | 451 bool CFFL_InteractiveFormFiller::IsReadOnly(CPDFSDK_Widget* pWidget) { |
| 457 int nFieldFlags = pWidget->GetFieldFlags(); | 452 int nFieldFlags = pWidget->GetFieldFlags(); |
| 458 return (nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY; | 453 return (nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY; |
| 459 } | 454 } |
| 460 | 455 |
| 461 FX_BOOL CFFL_InteractiveFormFiller::IsFillingAllowed(CPDFSDK_Widget* pWidget) { | 456 bool CFFL_InteractiveFormFiller::IsFillingAllowed(CPDFSDK_Widget* pWidget) { |
| 462 if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON) | 457 if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON) |
| 463 return TRUE; | 458 return true; |
| 464 | 459 |
| 465 CPDF_Page* pPage = pWidget->GetPDFPage(); | 460 CPDF_Page* pPage = pWidget->GetPDFPage(); |
| 466 CPDF_Document* pDocument = pPage->m_pDocument; | 461 CPDF_Document* pDocument = pPage->m_pDocument; |
| 467 uint32_t dwPermissions = pDocument->GetUserPermissions(); | 462 uint32_t dwPermissions = pDocument->GetUserPermissions(); |
| 468 return (dwPermissions & FPDFPERM_FILL_FORM) || | 463 return (dwPermissions & FPDFPERM_FILL_FORM) || |
| 469 (dwPermissions & FPDFPERM_ANNOT_FORM) || | 464 (dwPermissions & FPDFPERM_ANNOT_FORM) || |
| 470 (dwPermissions & FPDFPERM_MODIFY); | 465 (dwPermissions & FPDFPERM_MODIFY); |
| 471 } | 466 } |
| 472 | 467 |
| 473 CFFL_FormFiller* CFFL_InteractiveFormFiller::GetFormFiller( | 468 CFFL_FormFiller* CFFL_InteractiveFormFiller::GetFormFiller( |
| 474 CPDFSDK_Annot* pAnnot, | 469 CPDFSDK_Annot* pAnnot, |
| 475 FX_BOOL bRegister) { | 470 bool bRegister) { |
| 476 auto it = m_Maps.find(pAnnot); | 471 auto it = m_Maps.find(pAnnot); |
| 477 if (it != m_Maps.end()) | 472 if (it != m_Maps.end()) |
| 478 return it->second.get(); | 473 return it->second.get(); |
| 479 | 474 |
| 480 if (!bRegister) | 475 if (!bRegister) |
| 481 return nullptr; | 476 return nullptr; |
| 482 | 477 |
| 483 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 478 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 484 int nFieldType = pWidget->GetFieldType(); | 479 int nFieldType = pWidget->GetFieldType(); |
| 485 CFFL_FormFiller* pFormFiller; | 480 CFFL_FormFiller* pFormFiller; |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 fTop = rcAnnot.bottom - rcPageView.bottom; | 555 fTop = rcAnnot.bottom - rcPageView.bottom; |
| 561 fBottom = rcPageView.top - rcAnnot.top; | 556 fBottom = rcPageView.top - rcAnnot.top; |
| 562 break; | 557 break; |
| 563 case 3: | 558 case 3: |
| 564 fTop = rcPageView.right - rcAnnot.right; | 559 fTop = rcPageView.right - rcAnnot.right; |
| 565 fBottom = rcAnnot.left - rcPageView.left; | 560 fBottom = rcAnnot.left - rcPageView.left; |
| 566 break; | 561 break; |
| 567 } | 562 } |
| 568 | 563 |
| 569 FX_FLOAT fFactHeight = 0; | 564 FX_FLOAT fFactHeight = 0; |
| 570 FX_BOOL bBottom = TRUE; | 565 bool bBottom = true; |
| 571 FX_FLOAT fMaxListBoxHeight = 0; | 566 FX_FLOAT fMaxListBoxHeight = 0; |
| 572 if (fPopupMax > FFL_MAXLISTBOXHEIGHT) { | 567 if (fPopupMax > FFL_MAXLISTBOXHEIGHT) { |
| 573 if (fPopupMin > FFL_MAXLISTBOXHEIGHT) { | 568 if (fPopupMin > FFL_MAXLISTBOXHEIGHT) { |
| 574 fMaxListBoxHeight = fPopupMin; | 569 fMaxListBoxHeight = fPopupMin; |
| 575 } else { | 570 } else { |
| 576 fMaxListBoxHeight = FFL_MAXLISTBOXHEIGHT; | 571 fMaxListBoxHeight = FFL_MAXLISTBOXHEIGHT; |
| 577 } | 572 } |
| 578 } else { | 573 } else { |
| 579 fMaxListBoxHeight = fPopupMax; | 574 fMaxListBoxHeight = fPopupMax; |
| 580 } | 575 } |
| 581 | 576 |
| 582 if (fBottom > fMaxListBoxHeight) { | 577 if (fBottom > fMaxListBoxHeight) { |
| 583 fFactHeight = fMaxListBoxHeight; | 578 fFactHeight = fMaxListBoxHeight; |
| 584 bBottom = TRUE; | 579 bBottom = true; |
| 585 } else { | 580 } else { |
| 586 if (fTop > fMaxListBoxHeight) { | 581 if (fTop > fMaxListBoxHeight) { |
| 587 fFactHeight = fMaxListBoxHeight; | 582 fFactHeight = fMaxListBoxHeight; |
| 588 bBottom = FALSE; | 583 bBottom = false; |
| 589 } else { | 584 } else { |
| 590 if (fTop > fBottom) { | 585 if (fTop > fBottom) { |
| 591 fFactHeight = fTop; | 586 fFactHeight = fTop; |
| 592 bBottom = FALSE; | 587 bBottom = false; |
| 593 } else { | 588 } else { |
| 594 fFactHeight = fBottom; | 589 fFactHeight = fBottom; |
| 595 bBottom = TRUE; | 590 bBottom = true; |
| 596 } | 591 } |
| 597 } | 592 } |
| 598 } | 593 } |
| 599 | 594 |
| 600 nRet = bBottom ? 0 : 1; | 595 nRet = bBottom ? 0 : 1; |
| 601 fPopupRet = fFactHeight; | 596 fPopupRet = fFactHeight; |
| 602 } | 597 } |
| 603 | 598 |
| 604 void CFFL_InteractiveFormFiller::OnKeyStrokeCommit( | 599 void CFFL_InteractiveFormFiller::OnKeyStrokeCommit( |
| 605 CPDFSDK_Annot::ObservedPtr* pAnnot, | 600 CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 606 CPDFSDK_PageView* pPageView, | 601 CPDFSDK_PageView* pPageView, |
| 607 FX_BOOL& bRC, | 602 bool& bRC, |
| 608 FX_BOOL& bExit, | 603 bool& bExit, |
| 609 uint32_t nFlag) { | 604 uint32_t nFlag) { |
| 610 if (!m_bNotifying) { | 605 if (!m_bNotifying) { |
| 611 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 606 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 612 if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { | 607 if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { |
| 613 ASSERT(pPageView); | 608 ASSERT(pPageView); |
| 614 m_bNotifying = TRUE; | 609 m_bNotifying = true; |
| 615 pWidget->ClearAppModified(); | 610 pWidget->ClearAppModified(); |
| 616 | 611 |
| 617 PDFSDK_FieldAction fa; | 612 PDFSDK_FieldAction fa; |
| 618 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 613 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 619 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 614 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 620 fa.bWillCommit = TRUE; | 615 fa.bWillCommit = true; |
| 621 fa.bKeyDown = TRUE; | 616 fa.bKeyDown = true; |
| 622 fa.bRC = TRUE; | 617 fa.bRC = true; |
| 623 | 618 |
| 624 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); | 619 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false); |
| 625 pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa); | 620 pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa); |
| 626 pFormFiller->SaveState(pPageView); | 621 pFormFiller->SaveState(pPageView); |
| 627 pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView); | 622 pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView); |
| 628 if (!(*pAnnot)) | 623 if (!(*pAnnot)) |
| 629 return; | 624 return; |
| 630 | 625 |
| 631 bRC = fa.bRC; | 626 bRC = fa.bRC; |
| 632 m_bNotifying = FALSE; | 627 m_bNotifying = false; |
| 633 } | 628 } |
| 634 } | 629 } |
| 635 } | 630 } |
| 636 | 631 |
| 637 void CFFL_InteractiveFormFiller::OnValidate(CPDFSDK_Annot::ObservedPtr* pAnnot, | 632 void CFFL_InteractiveFormFiller::OnValidate(CPDFSDK_Annot::ObservedPtr* pAnnot, |
| 638 CPDFSDK_PageView* pPageView, | 633 CPDFSDK_PageView* pPageView, |
| 639 FX_BOOL& bRC, | 634 bool& bRC, |
| 640 FX_BOOL& bExit, | 635 bool& bExit, |
| 641 uint32_t nFlag) { | 636 uint32_t nFlag) { |
| 642 if (!m_bNotifying) { | 637 if (!m_bNotifying) { |
| 643 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); | 638 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get()); |
| 644 if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) { | 639 if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) { |
| 645 ASSERT(pPageView); | 640 ASSERT(pPageView); |
| 646 m_bNotifying = TRUE; | 641 m_bNotifying = true; |
| 647 pWidget->ClearAppModified(); | 642 pWidget->ClearAppModified(); |
| 648 | 643 |
| 649 PDFSDK_FieldAction fa; | 644 PDFSDK_FieldAction fa; |
| 650 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 645 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 651 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 646 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 652 fa.bKeyDown = TRUE; | 647 fa.bKeyDown = true; |
| 653 fa.bRC = TRUE; | 648 fa.bRC = true; |
| 654 | 649 |
| 655 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); | 650 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false); |
| 656 pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa); | 651 pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa); |
| 657 pFormFiller->SaveState(pPageView); | 652 pFormFiller->SaveState(pPageView); |
| 658 pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView); | 653 pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView); |
| 659 if (!(*pAnnot)) | 654 if (!(*pAnnot)) |
| 660 return; | 655 return; |
| 661 | 656 |
| 662 bRC = fa.bRC; | 657 bRC = fa.bRC; |
| 663 m_bNotifying = FALSE; | 658 m_bNotifying = false; |
| 664 } | 659 } |
| 665 } | 660 } |
| 666 } | 661 } |
| 667 | 662 |
| 668 void CFFL_InteractiveFormFiller::OnCalculate(CPDFSDK_Widget* pWidget, | 663 void CFFL_InteractiveFormFiller::OnCalculate(CPDFSDK_Widget* pWidget, |
| 669 CPDFSDK_PageView* pPageView, | 664 CPDFSDK_PageView* pPageView, |
| 670 FX_BOOL& bExit, | 665 bool& bExit, |
| 671 uint32_t nFlag) { | 666 uint32_t nFlag) { |
| 672 if (!m_bNotifying) { | 667 if (!m_bNotifying) { |
| 673 ASSERT(pWidget); | 668 ASSERT(pWidget); |
| 674 CPDFSDK_InterForm* pInterForm = pPageView->GetFormFillEnv()->GetInterForm(); | 669 CPDFSDK_InterForm* pInterForm = pPageView->GetFormFillEnv()->GetInterForm(); |
| 675 pInterForm->OnCalculate(pWidget->GetFormField()); | 670 pInterForm->OnCalculate(pWidget->GetFormField()); |
| 676 m_bNotifying = FALSE; | 671 m_bNotifying = false; |
| 677 } | 672 } |
| 678 } | 673 } |
| 679 | 674 |
| 680 void CFFL_InteractiveFormFiller::OnFormat(CPDFSDK_Widget* pWidget, | 675 void CFFL_InteractiveFormFiller::OnFormat(CPDFSDK_Widget* pWidget, |
| 681 CPDFSDK_PageView* pPageView, | 676 CPDFSDK_PageView* pPageView, |
| 682 FX_BOOL& bExit, | 677 bool& bExit, |
| 683 uint32_t nFlag) { | 678 uint32_t nFlag) { |
| 684 if (!m_bNotifying) { | 679 if (!m_bNotifying) { |
| 685 ASSERT(pWidget); | 680 ASSERT(pWidget); |
| 686 CPDFSDK_InterForm* pInterForm = pPageView->GetFormFillEnv()->GetInterForm(); | 681 CPDFSDK_InterForm* pInterForm = pPageView->GetFormFillEnv()->GetInterForm(); |
| 687 | 682 |
| 688 FX_BOOL bFormatted = FALSE; | 683 bool bFormatted = false; |
| 689 CFX_WideString sValue = | 684 CFX_WideString sValue = |
| 690 pInterForm->OnFormat(pWidget->GetFormField(), bFormatted); | 685 pInterForm->OnFormat(pWidget->GetFormField(), bFormatted); |
| 691 | 686 |
| 692 if (bExit) | 687 if (bExit) |
| 693 return; | 688 return; |
| 694 | 689 |
| 695 if (bFormatted) { | 690 if (bFormatted) { |
| 696 pInterForm->ResetFieldAppearance(pWidget->GetFormField(), &sValue, TRUE); | 691 pInterForm->ResetFieldAppearance(pWidget->GetFormField(), &sValue, true); |
| 697 pInterForm->UpdateField(pWidget->GetFormField()); | 692 pInterForm->UpdateField(pWidget->GetFormField()); |
| 698 } | 693 } |
| 699 | 694 |
| 700 m_bNotifying = FALSE; | 695 m_bNotifying = false; |
| 701 } | 696 } |
| 702 } | 697 } |
| 703 | 698 |
| 704 #ifdef PDF_ENABLE_XFA | 699 #ifdef PDF_ENABLE_XFA |
| 705 void CFFL_InteractiveFormFiller::OnClick(CPDFSDK_Widget* pWidget, | 700 void CFFL_InteractiveFormFiller::OnClick(CPDFSDK_Widget* pWidget, |
| 706 CPDFSDK_PageView* pPageView, | 701 CPDFSDK_PageView* pPageView, |
| 707 FX_BOOL& bReset, | 702 bool& bReset, |
| 708 FX_BOOL& bExit, | 703 bool& bExit, |
| 709 uint32_t nFlag) { | 704 uint32_t nFlag) { |
| 710 if (!m_bNotifying) { | 705 if (!m_bNotifying) { |
| 711 if (pWidget->HasXFAAAction(PDFSDK_XFA_Click)) { | 706 if (pWidget->HasXFAAAction(PDFSDK_XFA_Click)) { |
| 712 m_bNotifying = TRUE; | 707 m_bNotifying = true; |
| 713 int nAge = pWidget->GetAppearanceAge(); | 708 int nAge = pWidget->GetAppearanceAge(); |
| 714 int nValueAge = pWidget->GetValueAge(); | 709 int nValueAge = pWidget->GetValueAge(); |
| 715 | 710 |
| 716 PDFSDK_FieldAction fa; | 711 PDFSDK_FieldAction fa; |
| 717 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 712 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 718 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 713 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 719 | 714 |
| 720 pWidget->OnXFAAAction(PDFSDK_XFA_Click, fa, pPageView); | 715 pWidget->OnXFAAAction(PDFSDK_XFA_Click, fa, pPageView); |
| 721 m_bNotifying = FALSE; | 716 m_bNotifying = false; |
| 722 | 717 |
| 723 if (!IsValidAnnot(pPageView, pWidget)) { | 718 if (!IsValidAnnot(pPageView, pWidget)) { |
| 724 bExit = TRUE; | 719 bExit = true; |
| 725 return; | 720 return; |
| 726 } | 721 } |
| 727 | 722 |
| 728 if (nAge != pWidget->GetAppearanceAge()) { | 723 if (nAge != pWidget->GetAppearanceAge()) { |
| 729 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { | 724 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false)) { |
| 730 pFormFiller->ResetPDFWindow(pPageView, | 725 pFormFiller->ResetPDFWindow(pPageView, |
| 731 nValueAge == pWidget->GetValueAge()); | 726 nValueAge == pWidget->GetValueAge()); |
| 732 } | 727 } |
| 733 | 728 |
| 734 bReset = TRUE; | 729 bReset = true; |
| 735 } | 730 } |
| 736 } | 731 } |
| 737 } | 732 } |
| 738 } | 733 } |
| 739 | 734 |
| 740 void CFFL_InteractiveFormFiller::OnFull(CPDFSDK_Widget* pWidget, | 735 void CFFL_InteractiveFormFiller::OnFull(CPDFSDK_Widget* pWidget, |
| 741 CPDFSDK_PageView* pPageView, | 736 CPDFSDK_PageView* pPageView, |
| 742 FX_BOOL& bReset, | 737 bool& bReset, |
| 743 FX_BOOL& bExit, | 738 bool& bExit, |
| 744 uint32_t nFlag) { | 739 uint32_t nFlag) { |
| 745 if (!m_bNotifying) { | 740 if (!m_bNotifying) { |
| 746 if (pWidget->HasXFAAAction(PDFSDK_XFA_Full)) { | 741 if (pWidget->HasXFAAAction(PDFSDK_XFA_Full)) { |
| 747 m_bNotifying = TRUE; | 742 m_bNotifying = true; |
| 748 int nAge = pWidget->GetAppearanceAge(); | 743 int nAge = pWidget->GetAppearanceAge(); |
| 749 int nValueAge = pWidget->GetValueAge(); | 744 int nValueAge = pWidget->GetValueAge(); |
| 750 | 745 |
| 751 PDFSDK_FieldAction fa; | 746 PDFSDK_FieldAction fa; |
| 752 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 747 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 753 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 748 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 754 | 749 |
| 755 pWidget->OnXFAAAction(PDFSDK_XFA_Full, fa, pPageView); | 750 pWidget->OnXFAAAction(PDFSDK_XFA_Full, fa, pPageView); |
| 756 m_bNotifying = FALSE; | 751 m_bNotifying = false; |
| 757 | 752 |
| 758 if (!IsValidAnnot(pPageView, pWidget)) { | 753 if (!IsValidAnnot(pPageView, pWidget)) { |
| 759 bExit = TRUE; | 754 bExit = true; |
| 760 return; | 755 return; |
| 761 } | 756 } |
| 762 | 757 |
| 763 if (nAge != pWidget->GetAppearanceAge()) { | 758 if (nAge != pWidget->GetAppearanceAge()) { |
| 764 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { | 759 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false)) { |
| 765 pFormFiller->ResetPDFWindow(pPageView, | 760 pFormFiller->ResetPDFWindow(pPageView, |
| 766 nValueAge == pWidget->GetValueAge()); | 761 nValueAge == pWidget->GetValueAge()); |
| 767 } | 762 } |
| 768 | 763 |
| 769 bReset = TRUE; | 764 bReset = true; |
| 770 } | 765 } |
| 771 } | 766 } |
| 772 } | 767 } |
| 773 } | 768 } |
| 774 | 769 |
| 775 void CFFL_InteractiveFormFiller::OnPopupPreOpen(void* pPrivateData, | 770 void CFFL_InteractiveFormFiller::OnPopupPreOpen(void* pPrivateData, |
| 776 FX_BOOL& bExit, | 771 bool& bExit, |
| 777 uint32_t nFlag) { | 772 uint32_t nFlag) { |
| 778 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; | 773 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; |
| 779 ASSERT(pData); | 774 ASSERT(pData); |
| 780 ASSERT(pData->pWidget); | 775 ASSERT(pData->pWidget); |
| 781 | 776 |
| 782 FX_BOOL bTempReset = FALSE; | 777 bool bTempReset = false; |
| 783 FX_BOOL bTempExit = FALSE; | 778 bool bTempExit = false; |
| 784 OnPreOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); | 779 OnPreOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); |
| 785 if (bTempReset || bTempExit) | 780 if (bTempReset || bTempExit) |
| 786 bExit = TRUE; | 781 bExit = true; |
| 787 } | 782 } |
| 788 | 783 |
| 789 void CFFL_InteractiveFormFiller::OnPopupPostOpen(void* pPrivateData, | 784 void CFFL_InteractiveFormFiller::OnPopupPostOpen(void* pPrivateData, |
| 790 FX_BOOL& bExit, | 785 bool& bExit, |
| 791 uint32_t nFlag) { | 786 uint32_t nFlag) { |
| 792 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; | 787 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; |
| 793 ASSERT(pData); | 788 ASSERT(pData); |
| 794 ASSERT(pData->pWidget); | 789 ASSERT(pData->pWidget); |
| 795 | 790 |
| 796 FX_BOOL bTempReset = FALSE; | 791 bool bTempReset = false; |
| 797 FX_BOOL bTempExit = FALSE; | 792 bool bTempExit = false; |
| 798 OnPostOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); | 793 OnPostOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); |
| 799 if (bTempReset || bTempExit) | 794 if (bTempReset || bTempExit) |
| 800 bExit = TRUE; | 795 bExit = true; |
| 801 } | 796 } |
| 802 | 797 |
| 803 void CFFL_InteractiveFormFiller::OnPreOpen(CPDFSDK_Widget* pWidget, | 798 void CFFL_InteractiveFormFiller::OnPreOpen(CPDFSDK_Widget* pWidget, |
| 804 CPDFSDK_PageView* pPageView, | 799 CPDFSDK_PageView* pPageView, |
| 805 FX_BOOL& bReset, | 800 bool& bReset, |
| 806 FX_BOOL& bExit, | 801 bool& bExit, |
| 807 uint32_t nFlag) { | 802 uint32_t nFlag) { |
| 808 if (!m_bNotifying) { | 803 if (!m_bNotifying) { |
| 809 if (pWidget->HasXFAAAction(PDFSDK_XFA_PreOpen)) { | 804 if (pWidget->HasXFAAAction(PDFSDK_XFA_PreOpen)) { |
| 810 m_bNotifying = TRUE; | 805 m_bNotifying = true; |
| 811 int nAge = pWidget->GetAppearanceAge(); | 806 int nAge = pWidget->GetAppearanceAge(); |
| 812 int nValueAge = pWidget->GetValueAge(); | 807 int nValueAge = pWidget->GetValueAge(); |
| 813 | 808 |
| 814 PDFSDK_FieldAction fa; | 809 PDFSDK_FieldAction fa; |
| 815 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 810 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 816 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 811 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 817 | 812 |
| 818 pWidget->OnXFAAAction(PDFSDK_XFA_PreOpen, fa, pPageView); | 813 pWidget->OnXFAAAction(PDFSDK_XFA_PreOpen, fa, pPageView); |
| 819 m_bNotifying = FALSE; | 814 m_bNotifying = false; |
| 820 | 815 |
| 821 if (!IsValidAnnot(pPageView, pWidget)) { | 816 if (!IsValidAnnot(pPageView, pWidget)) { |
| 822 bExit = TRUE; | 817 bExit = true; |
| 823 return; | 818 return; |
| 824 } | 819 } |
| 825 | 820 |
| 826 if (nAge != pWidget->GetAppearanceAge()) { | 821 if (nAge != pWidget->GetAppearanceAge()) { |
| 827 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { | 822 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false)) { |
| 828 pFormFiller->ResetPDFWindow(pPageView, | 823 pFormFiller->ResetPDFWindow(pPageView, |
| 829 nValueAge == pWidget->GetValueAge()); | 824 nValueAge == pWidget->GetValueAge()); |
| 830 } | 825 } |
| 831 | 826 |
| 832 bReset = TRUE; | 827 bReset = true; |
| 833 } | 828 } |
| 834 } | 829 } |
| 835 } | 830 } |
| 836 } | 831 } |
| 837 | 832 |
| 838 void CFFL_InteractiveFormFiller::OnPostOpen(CPDFSDK_Widget* pWidget, | 833 void CFFL_InteractiveFormFiller::OnPostOpen(CPDFSDK_Widget* pWidget, |
| 839 CPDFSDK_PageView* pPageView, | 834 CPDFSDK_PageView* pPageView, |
| 840 FX_BOOL& bReset, | 835 bool& bReset, |
| 841 FX_BOOL& bExit, | 836 bool& bExit, |
| 842 uint32_t nFlag) { | 837 uint32_t nFlag) { |
| 843 if (!m_bNotifying) { | 838 if (!m_bNotifying) { |
| 844 if (pWidget->HasXFAAAction(PDFSDK_XFA_PostOpen)) { | 839 if (pWidget->HasXFAAAction(PDFSDK_XFA_PostOpen)) { |
| 845 m_bNotifying = TRUE; | 840 m_bNotifying = true; |
| 846 int nAge = pWidget->GetAppearanceAge(); | 841 int nAge = pWidget->GetAppearanceAge(); |
| 847 int nValueAge = pWidget->GetValueAge(); | 842 int nValueAge = pWidget->GetValueAge(); |
| 848 | 843 |
| 849 PDFSDK_FieldAction fa; | 844 PDFSDK_FieldAction fa; |
| 850 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 845 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 851 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 846 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 852 | 847 |
| 853 pWidget->OnXFAAAction(PDFSDK_XFA_PostOpen, fa, pPageView); | 848 pWidget->OnXFAAAction(PDFSDK_XFA_PostOpen, fa, pPageView); |
| 854 m_bNotifying = FALSE; | 849 m_bNotifying = false; |
| 855 | 850 |
| 856 if (!IsValidAnnot(pPageView, pWidget)) { | 851 if (!IsValidAnnot(pPageView, pWidget)) { |
| 857 bExit = TRUE; | 852 bExit = true; |
| 858 return; | 853 return; |
| 859 } | 854 } |
| 860 | 855 |
| 861 if (nAge != pWidget->GetAppearanceAge()) { | 856 if (nAge != pWidget->GetAppearanceAge()) { |
| 862 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { | 857 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, false)) { |
| 863 pFormFiller->ResetPDFWindow(pPageView, | 858 pFormFiller->ResetPDFWindow(pPageView, |
| 864 nValueAge == pWidget->GetValueAge()); | 859 nValueAge == pWidget->GetValueAge()); |
| 865 } | 860 } |
| 866 | 861 |
| 867 bReset = TRUE; | 862 bReset = true; |
| 868 } | 863 } |
| 869 } | 864 } |
| 870 } | 865 } |
| 871 } | 866 } |
| 872 #endif // PDF_ENABLE_XFA | 867 #endif // PDF_ENABLE_XFA |
| 873 | 868 |
| 874 FX_BOOL CFFL_InteractiveFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView, | 869 bool CFFL_InteractiveFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView, |
| 875 CPDFSDK_Annot* pAnnot) { | 870 CPDFSDK_Annot* pAnnot) { |
| 876 return pPageView && pPageView->IsValidAnnot(pAnnot->GetPDFAnnot()); | 871 return pPageView && pPageView->IsValidAnnot(pAnnot->GetPDFAnnot()); |
| 877 } | 872 } |
| 878 | 873 |
| 879 void CFFL_InteractiveFormFiller::OnBeforeKeyStroke( | 874 void CFFL_InteractiveFormFiller::OnBeforeKeyStroke( |
| 880 void* pPrivateData, | 875 void* pPrivateData, |
| 881 CFX_WideString& strChange, | 876 CFX_WideString& strChange, |
| 882 const CFX_WideString& strChangeEx, | 877 const CFX_WideString& strChangeEx, |
| 883 int nSelStart, | 878 int nSelStart, |
| 884 int nSelEnd, | 879 int nSelEnd, |
| 885 FX_BOOL bKeyDown, | 880 bool bKeyDown, |
| 886 FX_BOOL& bRC, | 881 bool& bRC, |
| 887 FX_BOOL& bExit, | 882 bool& bExit, |
| 888 uint32_t nFlag) { | 883 uint32_t nFlag) { |
| 889 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; | 884 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; |
| 890 ASSERT(pData->pWidget); | 885 ASSERT(pData->pWidget); |
| 891 | 886 |
| 892 CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, FALSE); | 887 CFFL_FormFiller* pFormFiller = GetFormFiller(pData->pWidget, false); |
| 893 | 888 |
| 894 #ifdef PDF_ENABLE_XFA | 889 #ifdef PDF_ENABLE_XFA |
| 895 if (pFormFiller->IsFieldFull(pData->pPageView)) { | 890 if (pFormFiller->IsFieldFull(pData->pPageView)) { |
| 896 FX_BOOL bFullExit = FALSE; | 891 bool bFullExit = false; |
| 897 FX_BOOL bFullReset = FALSE; | 892 bool bFullReset = false; |
| 898 OnFull(pData->pWidget, pData->pPageView, bFullReset, bFullExit, nFlag); | 893 OnFull(pData->pWidget, pData->pPageView, bFullReset, bFullExit, nFlag); |
| 899 | 894 |
| 900 if (bFullReset || bFullExit) { | 895 if (bFullReset || bFullExit) { |
| 901 bExit = TRUE; | 896 bExit = true; |
| 902 return; | 897 return; |
| 903 } | 898 } |
| 904 } | 899 } |
| 905 #endif // PDF_ENABLE_XFA | 900 #endif // PDF_ENABLE_XFA |
| 906 | 901 |
| 907 if (!m_bNotifying) { | 902 if (!m_bNotifying) { |
| 908 if (pData->pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { | 903 if (pData->pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { |
| 909 m_bNotifying = TRUE; | 904 m_bNotifying = true; |
| 910 int nAge = pData->pWidget->GetAppearanceAge(); | 905 int nAge = pData->pWidget->GetAppearanceAge(); |
| 911 int nValueAge = pData->pWidget->GetValueAge(); | 906 int nValueAge = pData->pWidget->GetValueAge(); |
| 912 | 907 |
| 913 CPDFSDK_FormFillEnvironment* pFormFillEnv = | 908 CPDFSDK_FormFillEnvironment* pFormFillEnv = |
| 914 pData->pPageView->GetFormFillEnv(); | 909 pData->pPageView->GetFormFillEnv(); |
| 915 | 910 |
| 916 PDFSDK_FieldAction fa; | 911 PDFSDK_FieldAction fa; |
| 917 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); | 912 fa.bModifier = m_pFormFillEnv->IsCTRLKeyDown(nFlag); |
| 918 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); | 913 fa.bShift = m_pFormFillEnv->IsSHIFTKeyDown(nFlag); |
| 919 fa.sChange = strChange; | 914 fa.sChange = strChange; |
| 920 fa.sChangeEx = strChangeEx; | 915 fa.sChangeEx = strChangeEx; |
| 921 fa.bKeyDown = bKeyDown; | 916 fa.bKeyDown = bKeyDown; |
| 922 fa.bWillCommit = FALSE; | 917 fa.bWillCommit = false; |
| 923 fa.bRC = TRUE; | 918 fa.bRC = true; |
| 924 fa.nSelStart = nSelStart; | 919 fa.nSelStart = nSelStart; |
| 925 fa.nSelEnd = nSelEnd; | 920 fa.nSelEnd = nSelEnd; |
| 926 | 921 |
| 927 pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa); | 922 pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa); |
| 928 pFormFiller->SaveState(pData->pPageView); | 923 pFormFiller->SaveState(pData->pPageView); |
| 929 | 924 |
| 930 CPDFSDK_Annot::ObservedPtr pObserved(pData->pWidget); | 925 CPDFSDK_Annot::ObservedPtr pObserved(pData->pWidget); |
| 931 if (pData->pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, | 926 if (pData->pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, |
| 932 pData->pPageView)) { | 927 pData->pPageView)) { |
| 933 if (!pObserved || !IsValidAnnot(pData->pPageView, pData->pWidget)) { | 928 if (!pObserved || !IsValidAnnot(pData->pPageView, pData->pWidget)) { |
| 934 bExit = TRUE; | 929 bExit = true; |
| 935 m_bNotifying = FALSE; | 930 m_bNotifying = false; |
| 936 return; | 931 return; |
| 937 } | 932 } |
| 938 | 933 |
| 939 if (nAge != pData->pWidget->GetAppearanceAge()) { | 934 if (nAge != pData->pWidget->GetAppearanceAge()) { |
| 940 CPWL_Wnd* pWnd = pFormFiller->ResetPDFWindow( | 935 CPWL_Wnd* pWnd = pFormFiller->ResetPDFWindow( |
| 941 pData->pPageView, nValueAge == pData->pWidget->GetValueAge()); | 936 pData->pPageView, nValueAge == pData->pWidget->GetValueAge()); |
| 942 pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); | 937 pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); |
| 943 bExit = TRUE; | 938 bExit = true; |
| 944 } | 939 } |
| 945 | 940 |
| 946 if (fa.bRC) { | 941 if (fa.bRC) { |
| 947 pFormFiller->SetActionData(pData->pPageView, CPDF_AAction::KeyStroke, | 942 pFormFiller->SetActionData(pData->pPageView, CPDF_AAction::KeyStroke, |
| 948 fa); | 943 fa); |
| 949 bRC = FALSE; | 944 bRC = false; |
| 950 } else { | 945 } else { |
| 951 pFormFiller->RestoreState(pData->pPageView); | 946 pFormFiller->RestoreState(pData->pPageView); |
| 952 bRC = FALSE; | 947 bRC = false; |
| 953 } | 948 } |
| 954 | 949 |
| 955 if (pFormFillEnv->GetFocusAnnot() != pData->pWidget) { | 950 if (pFormFillEnv->GetFocusAnnot() != pData->pWidget) { |
| 956 pFormFiller->CommitData(pData->pPageView, nFlag); | 951 pFormFiller->CommitData(pData->pPageView, nFlag); |
| 957 bExit = TRUE; | 952 bExit = true; |
| 958 } | 953 } |
| 959 } else { | 954 } else { |
| 960 if (!IsValidAnnot(pData->pPageView, pData->pWidget)) { | 955 if (!IsValidAnnot(pData->pPageView, pData->pWidget)) { |
| 961 bExit = TRUE; | 956 bExit = true; |
| 962 m_bNotifying = FALSE; | 957 m_bNotifying = false; |
| 963 return; | 958 return; |
| 964 } | 959 } |
| 965 } | 960 } |
| 966 | 961 |
| 967 m_bNotifying = FALSE; | 962 m_bNotifying = false; |
| 968 } | 963 } |
| 969 } | 964 } |
| 970 } | 965 } |
| OLD | NEW |