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

Side by Side Diff: fpdfsdk/javascript/Document.cpp

Issue 2312023004: Do not re-create the page view when accessing from Document::removeField. (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/javascript/Document.h" 7 #include "fpdfsdk/javascript/Document.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) { 456 if (CPDFDoc_Environment* pEnv = m_pDocument->GetEnv()) {
457 pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage, 457 pEnv->JS_docprint(bUI, nStart, nEnd, bSilent, bShrinkToFit, bPrintAsImage,
458 bReverse, bAnnotations); 458 bReverse, bAnnotations);
459 return TRUE; 459 return TRUE;
460 } 460 }
461 return FALSE; 461 return FALSE;
462 } 462 }
463 463
464 // removes the specified field from the document. 464 // removes the specified field from the document.
465 // comment: 465 // comment:
466 // note: if the filed name is not retional, adobe is dumb for it. 466 // note: if the filed name is not rational, adobe is dumb for it.
467 467
468 FX_BOOL Document::removeField(IJS_Context* cc, 468 FX_BOOL Document::removeField(IJS_Context* cc,
469 const std::vector<CJS_Value>& params, 469 const std::vector<CJS_Value>& params,
470 CJS_Value& vRet, 470 CJS_Value& vRet,
471 CFX_WideString& sError) { 471 CFX_WideString& sError) {
472 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || 472 if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
473 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) 473 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM)))
474 return FALSE; 474 return FALSE;
475 475
476 CJS_Context* pContext = static_cast<CJS_Context*>(cc); 476 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
(...skipping 16 matching lines...) Expand all
493 CFX_FloatRect rcAnnot = pWidget->GetRect(); 493 CFX_FloatRect rcAnnot = pWidget->GetRect();
494 --rcAnnot.left; 494 --rcAnnot.left;
495 --rcAnnot.bottom; 495 --rcAnnot.bottom;
496 ++rcAnnot.right; 496 ++rcAnnot.right;
497 ++rcAnnot.top; 497 ++rcAnnot.top;
498 498
499 std::vector<CFX_FloatRect> aRefresh(1, rcAnnot); 499 std::vector<CFX_FloatRect> aRefresh(1, rcAnnot);
500 UnderlyingPageType* pPage = pWidget->GetUnderlyingPage(); 500 UnderlyingPageType* pPage = pWidget->GetUnderlyingPage();
501 ASSERT(pPage); 501 ASSERT(pPage);
502 502
503 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage, true); 503 // If there is currently no pageview associated with the page being used
504 pPageView->DeleteAnnot(pWidget); 504 // do not create one. We maybe in the process of tearing down the document
Lei Zhang 2016/09/06 20:45:45 s/maybe/may be/
dsinclair 2016/09/06 20:47:44 Done.
505 pPageView->UpdateRects(aRefresh); 505 // and creating a new pageview at this point will cause bad things.
506 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage, false);
507 if (pPageView) {
508 pPageView->DeleteAnnot(pWidget);
509 pPageView->UpdateRects(aRefresh);
510 }
506 } 511 }
507 m_pDocument->SetChangeMark(); 512 m_pDocument->SetChangeMark();
508 513
509 return TRUE; 514 return TRUE;
510 } 515 }
511 516
512 // reset filed values within a document. 517 // reset filed values within a document.
513 // comment: 518 // comment:
514 // note: if the fields names r not rational, aodbe is dumb for it. 519 // note: if the fields names r not rational, aodbe is dumb for it.
515 520
(...skipping 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1649 } 1654 }
1650 } 1655 }
1651 1656
1652 for (const auto& pData : DelayDataForFieldAndControlIndex) 1657 for (const auto& pData : DelayDataForFieldAndControlIndex)
1653 Field::DoDelay(m_pDocument, pData.get()); 1658 Field::DoDelay(m_pDocument, pData.get());
1654 } 1659 }
1655 1660
1656 CJS_Document* Document::GetCJSDoc() const { 1661 CJS_Document* Document::GetCJSDoc() const {
1657 return static_cast<CJS_Document*>(m_pJSObject); 1662 return static_cast<CJS_Document*>(m_pJSObject);
1658 } 1663 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698