Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Side by Side Diff: fpdfsdk/formfiller/cffl_interactiveformfiller.cpp

Issue 2368403002: Watch destruction of widgets around OnAAction() method (Closed)
Patch Set: blown merge Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/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"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 } 115 }
116 116
117 void CFFL_InteractiveFormFiller::OnDelete(CPDFSDK_Annot* pAnnot) { 117 void CFFL_InteractiveFormFiller::OnDelete(CPDFSDK_Annot* pAnnot) {
118 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 118 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
119 pFormFiller->OnDelete(pAnnot); 119 pFormFiller->OnDelete(pAnnot);
120 } 120 }
121 121
122 UnRegisterFormFiller(pAnnot); 122 UnRegisterFormFiller(pAnnot);
123 } 123 }
124 124
125 void CFFL_InteractiveFormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, 125 void CFFL_InteractiveFormFiller::OnMouseEnter(
126 CPDFSDK_Annot* pAnnot, 126 CPDFSDK_PageView* pPageView,
127 uint32_t nFlag) { 127 CPDFSDK_Annot::ObservedPtr* pAnnot,
128 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 128 uint32_t nFlag) {
129 129 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
130 if (!m_bNotifying) { 130 if (!m_bNotifying) {
131 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; 131 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
132 if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) { 132 if (pWidget->GetAAction(CPDF_AAction::CursorEnter).GetDict()) {
133 m_bNotifying = TRUE; 133 m_bNotifying = TRUE;
134 134
135 int nValueAge = pWidget->GetValueAge(); 135 int nValueAge = pWidget->GetValueAge();
136
137 pWidget->ClearAppModified(); 136 pWidget->ClearAppModified();
138
139 ASSERT(pPageView); 137 ASSERT(pPageView);
140 138
141 PDFSDK_FieldAction fa; 139 PDFSDK_FieldAction fa;
142 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 140 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag);
143 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 141 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag);
144 pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView); 142 pWidget->OnAAction(CPDF_AAction::CursorEnter, fa, pPageView);
145 m_bNotifying = FALSE; 143 m_bNotifying = FALSE;
144 if (!(*pAnnot))
145 return;
146 146
147 if (pWidget->IsAppModified()) { 147 if (pWidget->IsAppModified()) {
148 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { 148 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
149 pFormFiller->ResetPDFWindow(pPageView, 149 pFormFiller->ResetPDFWindow(pPageView,
150 pWidget->GetValueAge() == nValueAge); 150 pWidget->GetValueAge() == nValueAge);
151 } 151 }
152 } 152 }
153 } 153 }
154 } 154 }
155 155 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE))
156 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) { 156 pFormFiller->OnMouseEnter(pPageView, pAnnot->Get());
157 pFormFiller->OnMouseEnter(pPageView, pAnnot);
158 }
159 } 157 }
160 158
161 void CFFL_InteractiveFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, 159 void CFFL_InteractiveFormFiller::OnMouseExit(CPDFSDK_PageView* pPageView,
162 CPDFSDK_Annot* pAnnot, 160 CPDFSDK_Annot::ObservedPtr* pAnnot,
163 uint32_t nFlag) { 161 uint32_t nFlag) {
164 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 162 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
165
166 if (!m_bNotifying) { 163 if (!m_bNotifying) {
167 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; 164 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
168 if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) { 165 if (pWidget->GetAAction(CPDF_AAction::CursorExit).GetDict()) {
169 m_bNotifying = TRUE; 166 m_bNotifying = TRUE;
170 pWidget->GetAppearanceAge(); 167 pWidget->GetAppearanceAge();
168
171 int nValueAge = pWidget->GetValueAge(); 169 int nValueAge = pWidget->GetValueAge();
172 pWidget->ClearAppModified(); 170 pWidget->ClearAppModified();
173
174 ASSERT(pPageView); 171 ASSERT(pPageView);
175 172
176 PDFSDK_FieldAction fa; 173 PDFSDK_FieldAction fa;
177 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 174 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag);
178 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 175 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag);
179
180 pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView); 176 pWidget->OnAAction(CPDF_AAction::CursorExit, fa, pPageView);
181 m_bNotifying = FALSE; 177 m_bNotifying = FALSE;
178 if (!(*pAnnot))
179 return;
182 180
183 if (pWidget->IsAppModified()) { 181 if (pWidget->IsAppModified()) {
184 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { 182 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
185 pFormFiller->ResetPDFWindow(pPageView, 183 pFormFiller->ResetPDFWindow(pPageView,
186 nValueAge == pWidget->GetValueAge()); 184 nValueAge == pWidget->GetValueAge());
187 } 185 }
188 } 186 }
189 } 187 }
190 } 188 }
191 189 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE))
192 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 190 pFormFiller->OnMouseExit(pPageView, pAnnot->Get());
193 pFormFiller->OnMouseExit(pPageView, pAnnot);
194 }
195 } 191 }
196 192
197 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, 193 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDown(
198 CPDFSDK_Annot* pAnnot, 194 CPDFSDK_PageView* pPageView,
199 uint32_t nFlags, 195 CPDFSDK_Annot::ObservedPtr* pAnnot,
200 const CFX_FloatPoint& point) { 196 uint32_t nFlags,
201 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 197 const CFX_FloatPoint& point) {
202 198 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
203 if (!m_bNotifying) { 199 if (!m_bNotifying) {
204 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; 200 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
205 if (Annot_HitTest(pPageView, pAnnot, point) && 201 if (Annot_HitTest(pPageView, pAnnot->Get(), point) &&
206 pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) { 202 pWidget->GetAAction(CPDF_AAction::ButtonDown).GetDict()) {
207 m_bNotifying = TRUE; 203 m_bNotifying = TRUE;
208 pWidget->GetAppearanceAge(); 204 pWidget->GetAppearanceAge();
205
209 int nValueAge = pWidget->GetValueAge(); 206 int nValueAge = pWidget->GetValueAge();
210 pWidget->ClearAppModified(); 207 pWidget->ClearAppModified();
211
212 ASSERT(pPageView); 208 ASSERT(pPageView);
213 209
214 PDFSDK_FieldAction fa; 210 PDFSDK_FieldAction fa;
215 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlags); 211 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlags);
216 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlags); 212 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlags);
217 pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView); 213 pWidget->OnAAction(CPDF_AAction::ButtonDown, fa, pPageView);
218 m_bNotifying = FALSE; 214 m_bNotifying = FALSE;
215 if (!(*pAnnot))
216 return TRUE;
219 217
220 if (!IsValidAnnot(pPageView, pAnnot)) 218 if (!IsValidAnnot(pPageView, pAnnot->Get()))
221 return TRUE; 219 return TRUE;
222 220
223 if (pWidget->IsAppModified()) { 221 if (pWidget->IsAppModified()) {
224 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { 222 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
225 pFormFiller->ResetPDFWindow(pPageView, 223 pFormFiller->ResetPDFWindow(pPageView,
226 nValueAge == pWidget->GetValueAge()); 224 nValueAge == pWidget->GetValueAge());
227 } 225 }
228 } 226 }
229 } 227 }
230 } 228 }
231 229 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE))
232 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 230 return pFormFiller->OnLButtonDown(pPageView, pAnnot->Get(), nFlags, point);
233 return pFormFiller->OnLButtonDown(pPageView, pAnnot, nFlags, point);
234 }
235 231
236 return FALSE; 232 return FALSE;
237 } 233 }
238 234
239 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp(CPDFSDK_PageView* pPageView, 235 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonUp(
240 CPDFSDK_Annot* pAnnot, 236 CPDFSDK_PageView* pPageView,
241 uint32_t nFlags, 237 CPDFSDK_Annot::ObservedPtr* pAnnot,
242 const CFX_FloatPoint& point) { 238 uint32_t nFlags,
243 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 239 const CFX_FloatPoint& point) {
244 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; 240 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
241 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
245 CPDFSDK_Document* pDocument = m_pEnv->GetSDKDocument(); 242 CPDFSDK_Document* pDocument = m_pEnv->GetSDKDocument();
246 243
247 switch (pWidget->GetFieldType()) { 244 switch (pWidget->GetFieldType()) {
248 case FIELDTYPE_PUSHBUTTON: 245 case FIELDTYPE_PUSHBUTTON:
249 case FIELDTYPE_CHECKBOX: 246 case FIELDTYPE_CHECKBOX:
250 case FIELDTYPE_RADIOBUTTON: 247 case FIELDTYPE_RADIOBUTTON:
251 if (GetViewBBox(pPageView, pAnnot).Contains((int)point.x, (int)point.y)) 248 if (GetViewBBox(pPageView, pAnnot->Get())
249 .Contains((int)point.x, (int)point.y))
252 pDocument->SetFocusAnnot(pAnnot); 250 pDocument->SetFocusAnnot(pAnnot);
253 break; 251 break;
254 default: 252 default:
255 pDocument->SetFocusAnnot(pAnnot); 253 pDocument->SetFocusAnnot(pAnnot);
256 break; 254 break;
257 } 255 }
258 256
259 FX_BOOL bRet = FALSE; 257 FX_BOOL bRet = FALSE;
258 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE))
259 bRet = pFormFiller->OnLButtonUp(pPageView, pAnnot->Get(), nFlags, point);
260 260
261 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 261 if (pDocument->GetFocusAnnot() == pAnnot->Get()) {
262 bRet = pFormFiller->OnLButtonUp(pPageView, pAnnot, nFlags, point);
263 }
264
265 if (pDocument->GetFocusAnnot() == pAnnot) {
266 FX_BOOL bExit = FALSE; 262 FX_BOOL bExit = FALSE;
267 FX_BOOL bReset = FALSE; 263 FX_BOOL bReset = FALSE;
268 OnButtonUp(pWidget, pPageView, bReset, bExit, nFlags); 264 OnButtonUp(pAnnot, pPageView, bReset, bExit, nFlags);
269 if (bExit) 265 if (!pAnnot || bExit)
270 return TRUE; 266 return TRUE;
271 #ifdef PDF_ENABLE_XFA 267 #ifdef PDF_ENABLE_XFA
272 OnClick(pWidget, pPageView, bReset, bExit, nFlags); 268 OnClick(pWidget, pPageView, bReset, bExit, nFlags);
273 if (bExit) 269 if (!pAnnot || bExit)
274 return TRUE; 270 return TRUE;
275 #endif // PDF_ENABLE_XFA 271 #endif // PDF_ENABLE_XFA
276 } 272 }
277 return bRet; 273 return bRet;
278 } 274 }
279 275
280 void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Widget* pWidget, 276 void CFFL_InteractiveFormFiller::OnButtonUp(CPDFSDK_Annot::ObservedPtr* pAnnot,
281 CPDFSDK_PageView* pPageView, 277 CPDFSDK_PageView* pPageView,
282 FX_BOOL& bReset, 278 FX_BOOL& bReset,
283 FX_BOOL& bExit, 279 FX_BOOL& bExit,
284 uint32_t nFlag) { 280 uint32_t nFlag) {
285 ASSERT(pWidget);
286
287 if (!m_bNotifying) { 281 if (!m_bNotifying) {
282 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
288 if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) { 283 if (pWidget->GetAAction(CPDF_AAction::ButtonUp).GetDict()) {
289 m_bNotifying = TRUE; 284 m_bNotifying = TRUE;
285
290 int nAge = pWidget->GetAppearanceAge(); 286 int nAge = pWidget->GetAppearanceAge();
291 int nValueAge = pWidget->GetValueAge(); 287 int nValueAge = pWidget->GetValueAge();
292
293 ASSERT(pPageView); 288 ASSERT(pPageView);
294 289
295 PDFSDK_FieldAction fa; 290 PDFSDK_FieldAction fa;
296 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 291 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag);
297 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 292 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag);
298
299 pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView); 293 pWidget->OnAAction(CPDF_AAction::ButtonUp, fa, pPageView);
300 m_bNotifying = FALSE; 294 m_bNotifying = FALSE;
301 295 if (!(*pAnnot) || !IsValidAnnot(pPageView, pWidget)) {
302 if (!IsValidAnnot(pPageView, pWidget)) {
303 bExit = TRUE; 296 bExit = TRUE;
304 return; 297 return;
305 } 298 }
306
307 if (nAge != pWidget->GetAppearanceAge()) { 299 if (nAge != pWidget->GetAppearanceAge()) {
308 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) { 300 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE)) {
309 pFormFiller->ResetPDFWindow(pPageView, 301 pFormFiller->ResetPDFWindow(pPageView,
310 nValueAge == pWidget->GetValueAge()); 302 nValueAge == pWidget->GetValueAge());
311 } 303 }
312
313 bReset = TRUE; 304 bReset = TRUE;
314 } 305 }
315 } 306 }
316 } 307 }
317 } 308 }
318 309
319 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDblClk( 310 FX_BOOL CFFL_InteractiveFormFiller::OnLButtonDblClk(
320 CPDFSDK_PageView* pPageView, 311 CPDFSDK_PageView* pPageView,
321 CPDFSDK_Annot* pAnnot, 312 CPDFSDK_Annot::ObservedPtr* pAnnot,
322 uint32_t nFlags, 313 uint32_t nFlags,
323 const CFX_FloatPoint& point) { 314 const CFX_FloatPoint& point) {
324 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 315 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
325 316 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE);
326 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 317 return pFormFiller &&
327 return pFormFiller->OnLButtonDblClk(pPageView, pAnnot, nFlags, point); 318 pFormFiller->OnLButtonDblClk(pPageView, pAnnot->Get(), nFlags, point);
328 }
329
330 return FALSE;
331 } 319 }
332 320
333 FX_BOOL CFFL_InteractiveFormFiller::OnMouseMove(CPDFSDK_PageView* pPageView, 321 FX_BOOL CFFL_InteractiveFormFiller::OnMouseMove(
334 CPDFSDK_Annot* pAnnot, 322 CPDFSDK_PageView* pPageView,
335 uint32_t nFlags, 323 CPDFSDK_Annot::ObservedPtr* pAnnot,
336 const CFX_FloatPoint& point) { 324 uint32_t nFlags,
337 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 325 const CFX_FloatPoint& point) {
338 326 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
339 // change cursor 327 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE);
340 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) { 328 return pFormFiller &&
341 return pFormFiller->OnMouseMove(pPageView, pAnnot, nFlags, point); 329 pFormFiller->OnMouseMove(pPageView, pAnnot->Get(), nFlags, point);
342 }
343
344 return FALSE;
345 } 330 }
346 331
347 FX_BOOL CFFL_InteractiveFormFiller::OnMouseWheel(CPDFSDK_PageView* pPageView, 332 FX_BOOL CFFL_InteractiveFormFiller::OnMouseWheel(
348 CPDFSDK_Annot* pAnnot, 333 CPDFSDK_PageView* pPageView,
349 uint32_t nFlags, 334 CPDFSDK_Annot::ObservedPtr* pAnnot,
350 short zDelta, 335 uint32_t nFlags,
351 const CFX_FloatPoint& point) { 336 short zDelta,
352 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 337 const CFX_FloatPoint& point) {
353 338 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
354 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 339 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE);
355 return pFormFiller->OnMouseWheel(pPageView, pAnnot, nFlags, zDelta, point); 340 return pFormFiller &&
356 } 341 pFormFiller->OnMouseWheel(pPageView, pAnnot->Get(), nFlags, zDelta,
357 342 point);
358 return FALSE;
359 } 343 }
360 344
361 FX_BOOL CFFL_InteractiveFormFiller::OnRButtonDown(CPDFSDK_PageView* pPageView, 345 FX_BOOL CFFL_InteractiveFormFiller::OnRButtonDown(
362 CPDFSDK_Annot* pAnnot, 346 CPDFSDK_PageView* pPageView,
363 uint32_t nFlags, 347 CPDFSDK_Annot::ObservedPtr* pAnnot,
364 const CFX_FloatPoint& point) { 348 uint32_t nFlags,
365 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 349 const CFX_FloatPoint& point) {
366 350 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
367 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 351 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE);
368 return pFormFiller->OnRButtonDown(pPageView, pAnnot, nFlags, point); 352 return pFormFiller &&
369 } 353 pFormFiller->OnRButtonDown(pPageView, pAnnot->Get(), nFlags, point);
370
371 return FALSE;
372 } 354 }
373 355
374 FX_BOOL CFFL_InteractiveFormFiller::OnRButtonUp(CPDFSDK_PageView* pPageView, 356 FX_BOOL CFFL_InteractiveFormFiller::OnRButtonUp(
375 CPDFSDK_Annot* pAnnot, 357 CPDFSDK_PageView* pPageView,
376 uint32_t nFlags, 358 CPDFSDK_Annot::ObservedPtr* pAnnot,
377 const CFX_FloatPoint& point) { 359 uint32_t nFlags,
378 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 360 const CFX_FloatPoint& point) {
379 361 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
380 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 362 CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE);
381 return pFormFiller->OnRButtonUp(pPageView, pAnnot, nFlags, point); 363 return pFormFiller &&
382 } 364 pFormFiller->OnRButtonUp(pPageView, pAnnot->Get(), nFlags, point);
383
384 return FALSE;
385 } 365 }
386 366
387 FX_BOOL CFFL_InteractiveFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, 367 FX_BOOL CFFL_InteractiveFormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot,
388 uint32_t nKeyCode, 368 uint32_t nKeyCode,
389 uint32_t nFlags) { 369 uint32_t nFlags) {
390 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 370 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
391 371
392 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 372 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) {
393 return pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlags); 373 return pFormFiller->OnKeyDown(pAnnot, nKeyCode, nFlags);
394 } 374 }
395 375
396 return FALSE; 376 return FALSE;
397 } 377 }
398 378
399 FX_BOOL CFFL_InteractiveFormFiller::OnChar(CPDFSDK_Annot* pAnnot, 379 FX_BOOL CFFL_InteractiveFormFiller::OnChar(CPDFSDK_Annot* pAnnot,
400 uint32_t nChar, 380 uint32_t nChar,
401 uint32_t nFlags) { 381 uint32_t nFlags) {
402 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 382 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
403 if (nChar == FWL_VKEY_Tab) 383 if (nChar == FWL_VKEY_Tab)
404 return TRUE; 384 return TRUE;
405 385
406 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) 386 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE))
407 return pFormFiller->OnChar(pAnnot, nChar, nFlags); 387 return pFormFiller->OnChar(pAnnot, nChar, nFlags);
408 388
409 return FALSE; 389 return FALSE;
410 } 390 }
411 391
412 FX_BOOL CFFL_InteractiveFormFiller::OnSetFocus(CPDFSDK_Annot* pAnnot, 392 FX_BOOL CFFL_InteractiveFormFiller::OnSetFocus(
413 uint32_t nFlag) { 393 CPDFSDK_Annot::ObservedPtr* pAnnot,
414 if (!pAnnot) 394 uint32_t nFlag) {
395 if (!(*pAnnot))
415 return FALSE; 396 return FALSE;
416 397
417 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET); 398 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
418
419 if (!m_bNotifying) { 399 if (!m_bNotifying) {
420 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; 400 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
421 if (pWidget->GetAAction(CPDF_AAction::GetFocus).GetDict()) { 401 if (pWidget->GetAAction(CPDF_AAction::GetFocus).GetDict()) {
422 m_bNotifying = TRUE; 402 m_bNotifying = TRUE;
423 pWidget->GetAppearanceAge(); 403 pWidget->GetAppearanceAge();
424 404
425 int nValueAge = pWidget->GetValueAge(); 405 int nValueAge = pWidget->GetValueAge();
426 pWidget->ClearAppModified(); 406 pWidget->ClearAppModified();
427 407
428 CPDFSDK_PageView* pPageView = pAnnot->GetPageView(); 408 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE);
409 if (!pFormFiller)
410 return FALSE;
411
412 CPDFSDK_PageView* pPageView = (*pAnnot)->GetPageView();
429 ASSERT(pPageView); 413 ASSERT(pPageView);
430 414
431 PDFSDK_FieldAction fa; 415 PDFSDK_FieldAction fa;
432 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 416 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag);
433 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 417 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag);
434
435 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, TRUE);
436 if (!pFormFiller)
437 return FALSE;
438 pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa); 418 pFormFiller->GetActionData(pPageView, CPDF_AAction::GetFocus, fa);
439 pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView); 419 pWidget->OnAAction(CPDF_AAction::GetFocus, fa, pPageView);
440 m_bNotifying = FALSE; 420 m_bNotifying = FALSE;
421 if (!(*pAnnot))
422 return FALSE;
441 423
442 if (pWidget->IsAppModified()) { 424 if (pWidget->IsAppModified()) {
443 if (CFFL_FormFiller* pFiller = GetFormFiller(pWidget, FALSE)) { 425 if (CFFL_FormFiller* pFiller = GetFormFiller(pWidget, FALSE)) {
444 pFiller->ResetPDFWindow(pPageView, 426 pFiller->ResetPDFWindow(pPageView,
445 nValueAge == pWidget->GetValueAge()); 427 nValueAge == pWidget->GetValueAge());
446 } 428 }
447 } 429 }
448 } 430 }
449 } 431 }
450 432
451 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, TRUE)) 433 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), TRUE))
452 pFormFiller->SetFocusForAnnot(pAnnot, nFlag); 434 pFormFiller->SetFocusForAnnot(pAnnot->Get(), nFlag);
453 435
454 return TRUE; 436 return TRUE;
455 } 437 }
456 438
457 FX_BOOL CFFL_InteractiveFormFiller::OnKillFocus(CPDFSDK_Annot* pAnnot, 439 FX_BOOL CFFL_InteractiveFormFiller::OnKillFocus(
458 uint32_t nFlag) { 440 CPDFSDK_Annot::ObservedPtr* pAnnot,
459 if (!pAnnot) 441 uint32_t nFlag) {
442 if (!(*pAnnot))
460 return FALSE; 443 return FALSE;
461 ASSERT(pAnnot->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
462 444
463 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot, FALSE)) { 445 ASSERT((*pAnnot)->GetPDFAnnot()->GetSubtype() == CPDF_Annot::Subtype::WIDGET);
464 pFormFiller->KillFocusForAnnot(pAnnot, nFlag); 446 if (CFFL_FormFiller* pFormFiller = GetFormFiller(pAnnot->Get(), FALSE)) {
465 447 pFormFiller->KillFocusForAnnot(pAnnot->Get(), nFlag);
466 if (!m_bNotifying) { 448 if (!m_bNotifying) {
467 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; 449 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
468 if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) { 450 if (pWidget->GetAAction(CPDF_AAction::LoseFocus).GetDict()) {
469 m_bNotifying = TRUE; 451 m_bNotifying = TRUE;
470 pWidget->ClearAppModified(); 452 pWidget->ClearAppModified();
471 453
472 CPDFSDK_PageView* pPageView = pWidget->GetPageView(); 454 CPDFSDK_PageView* pPageView = pWidget->GetPageView();
473 ASSERT(pPageView); 455 ASSERT(pPageView);
474 456
475 PDFSDK_FieldAction fa; 457 PDFSDK_FieldAction fa;
476 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 458 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag);
477 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 459 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag);
478
479 pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa); 460 pFormFiller->GetActionData(pPageView, CPDF_AAction::LoseFocus, fa);
480
481 pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView); 461 pWidget->OnAAction(CPDF_AAction::LoseFocus, fa, pPageView);
482 m_bNotifying = FALSE; 462 m_bNotifying = FALSE;
463 if (!(*pAnnot))
464 return FALSE;
483 } 465 }
484 } 466 }
485 } 467 }
486
487 return TRUE; 468 return TRUE;
488 } 469 }
489 470
490 FX_BOOL CFFL_InteractiveFormFiller::IsVisible(CPDFSDK_Widget* pWidget) { 471 FX_BOOL CFFL_InteractiveFormFiller::IsVisible(CPDFSDK_Widget* pWidget) {
491 return pWidget->IsVisible(); 472 return pWidget->IsVisible();
492 } 473 }
493 474
494 FX_BOOL CFFL_InteractiveFormFiller::IsReadOnly(CPDFSDK_Widget* pWidget) { 475 FX_BOOL CFFL_InteractiveFormFiller::IsReadOnly(CPDFSDK_Widget* pWidget) {
495 int nFieldFlags = pWidget->GetFieldFlags(); 476 int nFieldFlags = pWidget->GetFieldFlags();
496 return (nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY; 477 return (nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY;
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 fFactHeight = fBottom; 614 fFactHeight = fBottom;
634 bBottom = TRUE; 615 bBottom = TRUE;
635 } 616 }
636 } 617 }
637 } 618 }
638 619
639 nRet = bBottom ? 0 : 1; 620 nRet = bBottom ? 0 : 1;
640 fPopupRet = fFactHeight; 621 fPopupRet = fFactHeight;
641 } 622 }
642 623
643 void CFFL_InteractiveFormFiller::OnKeyStrokeCommit(CPDFSDK_Widget* pWidget, 624 void CFFL_InteractiveFormFiller::OnKeyStrokeCommit(
644 CPDFSDK_PageView* pPageView, 625 CPDFSDK_Annot::ObservedPtr* pAnnot,
645 FX_BOOL& bRC, 626 CPDFSDK_PageView* pPageView,
646 FX_BOOL& bExit, 627 FX_BOOL& bRC,
647 uint32_t nFlag) { 628 FX_BOOL& bExit,
629 uint32_t nFlag) {
648 if (!m_bNotifying) { 630 if (!m_bNotifying) {
631 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
649 if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) { 632 if (pWidget->GetAAction(CPDF_AAction::KeyStroke).GetDict()) {
633 ASSERT(pPageView);
650 m_bNotifying = TRUE; 634 m_bNotifying = TRUE;
651 pWidget->ClearAppModified(); 635 pWidget->ClearAppModified();
652 636
653 ASSERT(pPageView);
654
655 PDFSDK_FieldAction fa; 637 PDFSDK_FieldAction fa;
656 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 638 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag);
657 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 639 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag);
658 fa.bWillCommit = TRUE; 640 fa.bWillCommit = TRUE;
659 fa.bKeyDown = TRUE; 641 fa.bKeyDown = TRUE;
660 fa.bRC = TRUE; 642 fa.bRC = TRUE;
661 643
662 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); 644 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE);
663 pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa); 645 pFormFiller->GetActionData(pPageView, CPDF_AAction::KeyStroke, fa);
664 pFormFiller->SaveState(pPageView); 646 pFormFiller->SaveState(pPageView);
665
666 pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView); 647 pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, pPageView);
648 if (!(*pAnnot))
649 return;
667 650
668 bRC = fa.bRC; 651 bRC = fa.bRC;
669 m_bNotifying = FALSE; 652 m_bNotifying = FALSE;
670 } 653 }
671 } 654 }
672 } 655 }
673 656
674 void CFFL_InteractiveFormFiller::OnValidate(CPDFSDK_Widget* pWidget, 657 void CFFL_InteractiveFormFiller::OnValidate(CPDFSDK_Annot::ObservedPtr* pAnnot,
675 CPDFSDK_PageView* pPageView, 658 CPDFSDK_PageView* pPageView,
676 FX_BOOL& bRC, 659 FX_BOOL& bRC,
677 FX_BOOL& bExit, 660 FX_BOOL& bExit,
678 uint32_t nFlag) { 661 uint32_t nFlag) {
679 if (!m_bNotifying) { 662 if (!m_bNotifying) {
663 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot->Get());
680 if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) { 664 if (pWidget->GetAAction(CPDF_AAction::Validate).GetDict()) {
665 ASSERT(pPageView);
681 m_bNotifying = TRUE; 666 m_bNotifying = TRUE;
682 pWidget->ClearAppModified(); 667 pWidget->ClearAppModified();
683 668
684 ASSERT(pPageView);
685
686 PDFSDK_FieldAction fa; 669 PDFSDK_FieldAction fa;
687 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag); 670 fa.bModifier = m_pEnv->IsCTRLKeyDown(nFlag);
688 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag); 671 fa.bShift = m_pEnv->IsSHIFTKeyDown(nFlag);
689 fa.bKeyDown = TRUE; 672 fa.bKeyDown = TRUE;
690 fa.bRC = TRUE; 673 fa.bRC = TRUE;
691 674
692 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE); 675 CFFL_FormFiller* pFormFiller = GetFormFiller(pWidget, FALSE);
693 pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa); 676 pFormFiller->GetActionData(pPageView, CPDF_AAction::Validate, fa);
694 pFormFiller->SaveState(pPageView); 677 pFormFiller->SaveState(pPageView);
695
696 pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView); 678 pWidget->OnAAction(CPDF_AAction::Validate, fa, pPageView);
679 if (!(*pAnnot))
680 return;
697 681
698 bRC = fa.bRC; 682 bRC = fa.bRC;
699 m_bNotifying = FALSE; 683 m_bNotifying = FALSE;
700 } 684 }
701 } 685 }
702 } 686 }
703 687
704 void CFFL_InteractiveFormFiller::OnCalculate(CPDFSDK_Widget* pWidget, 688 void CFFL_InteractiveFormFiller::OnCalculate(CPDFSDK_Widget* pWidget,
705 CPDFSDK_PageView* pPageView, 689 CPDFSDK_PageView* pPageView,
706 FX_BOOL& bExit, 690 FX_BOOL& bExit,
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 void CFFL_InteractiveFormFiller::OnPopupPreOpen(void* pPrivateData, 797 void CFFL_InteractiveFormFiller::OnPopupPreOpen(void* pPrivateData,
814 FX_BOOL& bExit, 798 FX_BOOL& bExit,
815 uint32_t nFlag) { 799 uint32_t nFlag) {
816 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; 800 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
817 ASSERT(pData); 801 ASSERT(pData);
818 ASSERT(pData->pWidget); 802 ASSERT(pData->pWidget);
819 803
820 FX_BOOL bTempReset = FALSE; 804 FX_BOOL bTempReset = FALSE;
821 FX_BOOL bTempExit = FALSE; 805 FX_BOOL bTempExit = FALSE;
822 OnPreOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); 806 OnPreOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag);
823 807 if (bTempReset || bTempExit)
824 if (bTempReset || bTempExit) {
825 bExit = TRUE; 808 bExit = TRUE;
826 }
827 } 809 }
828 810
829 void CFFL_InteractiveFormFiller::OnPopupPostOpen(void* pPrivateData, 811 void CFFL_InteractiveFormFiller::OnPopupPostOpen(void* pPrivateData,
830 FX_BOOL& bExit, 812 FX_BOOL& bExit,
831 uint32_t nFlag) { 813 uint32_t nFlag) {
832 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData; 814 CFFL_PrivateData* pData = (CFFL_PrivateData*)pPrivateData;
833 ASSERT(pData); 815 ASSERT(pData);
834 ASSERT(pData->pWidget); 816 ASSERT(pData->pWidget);
835 817
836 FX_BOOL bTempReset = FALSE; 818 FX_BOOL bTempReset = FALSE;
837 FX_BOOL bTempExit = FALSE; 819 FX_BOOL bTempExit = FALSE;
838 OnPostOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag); 820 OnPostOpen(pData->pWidget, pData->pPageView, bTempReset, bTempExit, nFlag);
839 821 if (bTempReset || bTempExit)
840 if (bTempReset || bTempExit) {
841 bExit = TRUE; 822 bExit = TRUE;
842 }
843 } 823 }
844 824
845 void CFFL_InteractiveFormFiller::OnPreOpen(CPDFSDK_Widget* pWidget, 825 void CFFL_InteractiveFormFiller::OnPreOpen(CPDFSDK_Widget* pWidget,
846 CPDFSDK_PageView* pPageView, 826 CPDFSDK_PageView* pPageView,
847 FX_BOOL& bReset, 827 FX_BOOL& bReset,
848 FX_BOOL& bExit, 828 FX_BOOL& bExit,
849 uint32_t nFlag) { 829 uint32_t nFlag) {
850 if (!m_bNotifying) { 830 if (!m_bNotifying) {
851 if (pWidget->HasXFAAAction(PDFSDK_XFA_PreOpen)) { 831 if (pWidget->HasXFAAAction(PDFSDK_XFA_PreOpen)) {
852 m_bNotifying = TRUE; 832 m_bNotifying = TRUE;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 888
909 bReset = TRUE; 889 bReset = TRUE;
910 } 890 }
911 } 891 }
912 } 892 }
913 } 893 }
914 #endif // PDF_ENABLE_XFA 894 #endif // PDF_ENABLE_XFA
915 895
916 FX_BOOL CFFL_InteractiveFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView, 896 FX_BOOL CFFL_InteractiveFormFiller::IsValidAnnot(CPDFSDK_PageView* pPageView,
917 CPDFSDK_Annot* pAnnot) { 897 CPDFSDK_Annot* pAnnot) {
918 if (pPageView) 898 return pPageView && pPageView->IsValidAnnot(pAnnot->GetPDFAnnot());
919 return pPageView->IsValidAnnot(pAnnot->GetPDFAnnot());
920
921 return FALSE;
922 } 899 }
923 900
924 void CFFL_InteractiveFormFiller::OnBeforeKeyStroke( 901 void CFFL_InteractiveFormFiller::OnBeforeKeyStroke(
925 void* pPrivateData, 902 void* pPrivateData,
926 CFX_WideString& strChange, 903 CFX_WideString& strChange,
927 const CFX_WideString& strChangeEx, 904 const CFX_WideString& strChangeEx,
928 int nSelStart, 905 int nSelStart,
929 int nSelEnd, 906 int nSelEnd,
930 FX_BOOL bKeyDown, 907 FX_BOOL bKeyDown,
931 FX_BOOL& bRC, 908 FX_BOOL& bRC,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 fa.sChangeEx = strChangeEx; 941 fa.sChangeEx = strChangeEx;
965 fa.bKeyDown = bKeyDown; 942 fa.bKeyDown = bKeyDown;
966 fa.bWillCommit = FALSE; 943 fa.bWillCommit = FALSE;
967 fa.bRC = TRUE; 944 fa.bRC = TRUE;
968 fa.nSelStart = nSelStart; 945 fa.nSelStart = nSelStart;
969 fa.nSelEnd = nSelEnd; 946 fa.nSelEnd = nSelEnd;
970 947
971 pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa); 948 pFormFiller->GetActionData(pData->pPageView, CPDF_AAction::KeyStroke, fa);
972 pFormFiller->SaveState(pData->pPageView); 949 pFormFiller->SaveState(pData->pPageView);
973 950
951 CPDFSDK_Annot::ObservedPtr pObserved(pData->pWidget);
974 if (pData->pWidget->OnAAction(CPDF_AAction::KeyStroke, fa, 952 if (pData->pWidget->OnAAction(CPDF_AAction::KeyStroke, fa,
975 pData->pPageView)) { 953 pData->pPageView)) {
976 if (!IsValidAnnot(pData->pPageView, pData->pWidget)) { 954 if (!pObserved || !IsValidAnnot(pData->pPageView, pData->pWidget)) {
977 bExit = TRUE; 955 bExit = TRUE;
978 m_bNotifying = FALSE; 956 m_bNotifying = FALSE;
979 return; 957 return;
980 } 958 }
981 959
982 if (nAge != pData->pWidget->GetAppearanceAge()) { 960 if (nAge != pData->pWidget->GetAppearanceAge()) {
983 CPWL_Wnd* pWnd = pFormFiller->ResetPDFWindow( 961 CPWL_Wnd* pWnd = pFormFiller->ResetPDFWindow(
984 pData->pPageView, nValueAge == pData->pWidget->GetValueAge()); 962 pData->pPageView, nValueAge == pData->pWidget->GetValueAge());
985 pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); 963 pData = (CFFL_PrivateData*)pWnd->GetAttachedData();
986 bExit = TRUE; 964 bExit = TRUE;
(...skipping 17 matching lines...) Expand all
1004 bExit = TRUE; 982 bExit = TRUE;
1005 m_bNotifying = FALSE; 983 m_bNotifying = FALSE;
1006 return; 984 return;
1007 } 985 }
1008 } 986 }
1009 987
1010 m_bNotifying = FALSE; 988 m_bNotifying = FALSE;
1011 } 989 }
1012 } 990 }
1013 } 991 }
OLDNEW
« no previous file with comments | « fpdfsdk/formfiller/cffl_interactiveformfiller.h ('k') | fpdfsdk/formfiller/cffl_radiobutton.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698