diff options
author | dan sinclair <dsinclair@chromium.org> | 2018-04-16 17:07:27 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-04-16 17:07:27 +0000 |
commit | b7475313178d2f8db39e4179a202e8c920651ede (patch) | |
tree | f1bd44cee8a61af2c269aaeb4022a8eb0749c03a | |
parent | 19ae9bf554fc1c01e352a846646c8005a4fe6b2b (diff) | |
download | pdfium-b7475313178d2f8db39e4179a202e8c920651ede.tar.xz |
Remove CPWL_Edit rich text support
This CL removes the code which attempts to provide rich text support for
CPWL_Edit. The code, as written, doesn't actually work well.
If you have tags under the <p> tag we will just lose the content (so
<p><b>foo</b></p> would end up being a blank string).
Multiple <p> tags get concatenated together with a \n, but we
subsequently lose the \n later when we store the content into the
VariableText object (so <p>foo</p><p>bar</p> becomes foobar instead
of foo\nbar).
We never read the "RV" field from the dictionary. The RV field is what
actually stores the rich text value. So, we never set a rich text
value into the text edit.
Change-Id: Idc1d65e1b5d75380dd28c45bcbf9137a2a4cea9a
Reviewed-on: https://pdfium-review.googlesource.com/30690
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
-rw-r--r-- | core/fpdfdoc/cpdf_formfield.cpp | 5 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_formfield.h | 1 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_edit.cpp | 40 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_edit_impl.cpp | 10 |
4 files changed, 6 insertions, 50 deletions
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp index 540e1c9ae0..ae10b9e39d 100644 --- a/core/fpdfdoc/cpdf_formfield.cpp +++ b/core/fpdfdoc/cpdf_formfield.cpp @@ -289,11 +289,6 @@ ByteString CPDF_FormField::GetDefaultStyle() const { return pObj ? pObj->GetString() : ""; } -WideString CPDF_FormField::GetRichTextString() const { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict.Get(), "RV"); - return pObj ? pObj->GetUnicodeText() : L""; -} - WideString CPDF_FormField::GetValue(bool bDefault) const { if (GetType() == CheckBox || GetType() == RadioButton) return GetCheckValue(bDefault); diff --git a/core/fpdfdoc/cpdf_formfield.h b/core/fpdfdoc/cpdf_formfield.h index 4f25465b43..b79e430dee 100644 --- a/core/fpdfdoc/cpdf_formfield.h +++ b/core/fpdfdoc/cpdf_formfield.h @@ -129,7 +129,6 @@ class CPDF_FormField { uint32_t GetFieldFlags() const; ByteString GetDefaultStyle() const; - WideString GetRichTextString() const; WideString GetValue() const; WideString GetDefaultValue() const; diff --git a/fpdfsdk/pwl/cpwl_edit.cpp b/fpdfsdk/pwl/cpwl_edit.cpp index 6c867ca456..41f2517a0a 100644 --- a/fpdfsdk/pwl/cpwl_edit.cpp +++ b/fpdfsdk/pwl/cpwl_edit.cpp @@ -14,8 +14,6 @@ #include "core/fpdfapi/font/cpdf_font.h" #include "core/fpdfdoc/cpvt_word.h" #include "core/fxcrt/fx_safe_types.h" -#include "core/fxcrt/xml/cxml_content.h" -#include "core/fxcrt/xml/cxml_element.h" #include "core/fxge/cfx_graphstatedata.h" #include "core/fxge/cfx_pathdata.h" #include "core/fxge/cfx_renderdevice.h" @@ -40,43 +38,7 @@ ByteString CPWL_Edit::GetClassName() const { } void CPWL_Edit::SetText(const WideString& csText) { - WideString swText = csText; - if (!HasFlag(PES_RICH)) { - m_pEdit->SetText(swText); - return; - } - - ByteString sValue = ByteString::FromUnicode(swText); - std::unique_ptr<CXML_Element> pXML( - CXML_Element::Parse(sValue.c_str(), sValue.GetLength())); - if (!pXML) { - m_pEdit->SetText(swText); - return; - } - swText.clear(); - - bool bFirst = true; - size_t nCount = pXML->CountChildren(); - for (size_t i = 0; i < nCount; ++i) { - CXML_Element* pSubElement = ToElement(pXML->GetChild(i)); - if (!pSubElement || !pSubElement->GetTagName().EqualNoCase("p")) - continue; - - WideString swSection; - size_t nSubChild = pSubElement->CountChildren(); - for (size_t j = 0; j < nSubChild; ++j) { - CXML_Content* pSubContent = ToContent(pSubElement->GetChild(j)); - if (pSubContent) - swSection += pSubContent->m_Content; - } - if (bFirst) - bFirst = false; - else - swText += FWL_VKEY_Return; - swText += swSection; - } - - m_pEdit->SetText(swText); + m_pEdit->SetText(csText); } bool CPWL_Edit::RePosChildWnd() { diff --git a/fpdfsdk/pwl/cpwl_edit_impl.cpp b/fpdfsdk/pwl/cpwl_edit_impl.cpp index cb774e5ef9..6d9fd20445 100644 --- a/fpdfsdk/pwl/cpwl_edit_impl.cpp +++ b/fpdfsdk/pwl/cpwl_edit_impl.cpp @@ -1808,16 +1808,16 @@ CPVT_WordPlace CPWL_EditImpl::DoInsertText(const CPVT_WordPlace& place, for (int32_t i = 0, sz = sText.GetLength(); i < sz; i++) { uint16_t word = sText[i]; switch (word) { - case 0x0D: + case '\r': wp = m_pVT->InsertSection(wp); - if (i + 1 < sz && sText[i + 1] == 0x0A) + if (i + 1 < sz && sText[i + 1] == '\n') i++; break; - case 0x0A: + case '\n': wp = m_pVT->InsertSection(wp); break; - case 0x09: - word = 0x20; + case '\t': + word = ' '; FX_FALLTHROUGH; default: wp = |