| 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 "../../include/fpdfdoc/fpdf_doc.h" | 7 #include "../../include/fpdfdoc/fpdf_doc.h" |
| 8 #include "../../include/fxcrt/fx_xml.h" | 8 #include "../../include/fxcrt/fx_xml.h" |
| 9 CFX_WideString GetFullName(CPDF_Dictionary* pFieldDict); | 9 CFX_WideString GetFullName(CPDF_Dictionary* pFieldDict); |
| 10 void InitInterFormDict(CPDF_Dictionary*& pFormDict, CPDF_Docu
ment* pDocument); | 10 void InitInterFormDict(CPDF_Dictionary*& pFormDict, CPDF_Docu
ment* pDocument); |
| (...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 if (pAnnotList == NULL) { | 896 if (pAnnotList == NULL) { |
| 897 return NULL; | 897 return NULL; |
| 898 } | 898 } |
| 899 for (FX_DWORD i = pAnnotList->GetCount(); i > 0; i --) { | 899 for (FX_DWORD i = pAnnotList->GetCount(); i > 0; i --) { |
| 900 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i - 1); | 900 CPDF_Dictionary* pAnnot = pAnnotList->GetDict(i - 1); |
| 901 if (pAnnot == NULL) { | 901 if (pAnnot == NULL) { |
| 902 continue; | 902 continue; |
| 903 } | 903 } |
| 904 CPDF_FormControl* pControl; | 904 CPDF_FormControl* pControl; |
| 905 if (!m_ControlMap.Lookup(pAnnot, (FX_LPVOID&)pControl)) { | 905 if (!m_ControlMap.Lookup(pAnnot, (FX_LPVOID&)pControl)) { |
| 906 // If there is a link that overlaps the widget, return NULL. |
| 907 if (pAnnot->GetString("Subtype") == "Link") { |
| 908 CPDF_Link link(pAnnot); |
| 909 CPDF_Rect link_rect = link.GetRect(); |
| 910 if (link_rect.Contains(pdf_x, pdf_y)) { |
| 911 return NULL; |
| 912 } |
| 913 } |
| 906 continue; | 914 continue; |
| 907 } | 915 } |
| 908 CFX_FloatRect rect = pControl->GetRect(); | 916 CFX_FloatRect rect = pControl->GetRect(); |
| 909 if (rect.Contains(pdf_x, pdf_y)) { | 917 if (rect.Contains(pdf_x, pdf_y)) { |
| 910 return pControl; | 918 return pControl; |
| 911 } | 919 } |
| 912 } | 920 } |
| 913 return NULL; | 921 return NULL; |
| 914 } | 922 } |
| 915 CPDF_FormControl* CPDF_InterForm::GetControlByDict(CPDF_Dictionary* pWidgetDict)
const | 923 CPDF_FormControl* CPDF_InterForm::GetControlByDict(CPDF_Dictionary* pWidgetDict)
const |
| (...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1655 continue; | 1663 continue; |
| 1656 } | 1664 } |
| 1657 CPDF_FormControl* pControl = NULL; | 1665 CPDF_FormControl* pControl = NULL; |
| 1658 if (m_ControlMap.Lookup(pAnnotDict, (void*&)pControl)) { | 1666 if (m_ControlMap.Lookup(pAnnotDict, (void*&)pControl)) { |
| 1659 return iNewPage; | 1667 return iNewPage; |
| 1660 } | 1668 } |
| 1661 } | 1669 } |
| 1662 } while (TRUE); | 1670 } while (TRUE); |
| 1663 return -1; | 1671 return -1; |
| 1664 } | 1672 } |
| OLD | NEW |