diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
commit | 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch) | |
tree | 988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/WebCore/rendering/RenderTextFragment.cpp | |
parent | dd91e772430dc294e3bf478c119ef8d43c0a3358 (diff) | |
download | qtwebkit-2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47.tar.gz |
Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286)
Diffstat (limited to 'Source/WebCore/rendering/RenderTextFragment.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderTextFragment.cpp | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/Source/WebCore/rendering/RenderTextFragment.cpp b/Source/WebCore/rendering/RenderTextFragment.cpp index 1f267cde4..9f497d344 100644 --- a/Source/WebCore/rendering/RenderTextFragment.cpp +++ b/Source/WebCore/rendering/RenderTextFragment.cpp @@ -33,7 +33,6 @@ RenderTextFragment::RenderTextFragment(Node* node, StringImpl* str, int startOff , m_start(startOffset) , m_end(length) , m_firstLetter(0) - , m_allowFragmentReset(true) { } @@ -43,7 +42,6 @@ RenderTextFragment::RenderTextFragment(Node* node, StringImpl* str) , m_end(str ? str->length() : 0) , m_contentString(str) , m_firstLetter(0) - , m_allowFragmentReset(true) { } @@ -62,9 +60,7 @@ PassRefPtr<StringImpl> RenderTextFragment::originalText() const void RenderTextFragment::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) { - m_allowFragmentReset = false; RenderText::styleDidChange(diff, oldStyle); - m_allowFragmentReset = true; if (RenderBlock* block = blockForAccompanyingFirstLetter()) { block->style()->removeCachedPseudoStyle(FIRST_LETTER); @@ -79,25 +75,30 @@ void RenderTextFragment::willBeDestroyed() RenderText::willBeDestroyed(); } -void RenderTextFragment::setTextInternal(PassRefPtr<StringImpl> text) +void RenderTextFragment::setText(PassRefPtr<StringImpl> text, bool force) { - RenderText::setTextInternal(text); - - if (m_allowFragmentReset) { - m_start = 0; - m_end = textLength(); - if (m_firstLetter) { - ASSERT(!m_contentString); - m_firstLetter->destroy(); - m_firstLetter = 0; - if (Node* t = node()) { - ASSERT(!t->renderer()); - t->setRenderer(this); - } + RenderText::setText(text, force); + + m_start = 0; + m_end = textLength(); + if (m_firstLetter) { + ASSERT(!m_contentString); + m_firstLetter->destroy(); + m_firstLetter = 0; + if (Node* t = node()) { + ASSERT(!t->renderer()); + t->setRenderer(this); } } } +void RenderTextFragment::transformText() +{ + // Don't reset first-letter here because we are only transforming the truncated fragment. + if (RefPtr<StringImpl> textToTransform = originalText()) + RenderText::setText(textToTransform.release(), true); +} + UChar RenderTextFragment::previousCharacter() const { if (start()) { |