diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-03-12 14:11:15 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-03-12 14:11:15 +0100 |
commit | dd91e772430dc294e3bf478c119ef8d43c0a3358 (patch) | |
tree | 6f33ce4d5872a5691e0291eb45bf6ab373a5f567 /Source/WebCore/rendering/RenderTextFragment.cpp | |
parent | ad0d549d4cc13433f77c1ac8f0ab379c83d93f28 (diff) | |
download | qtwebkit-dd91e772430dc294e3bf478c119ef8d43c0a3358.tar.gz |
Imported WebKit commit 3db4eb1820ac8fb03065d7ea73a4d9db1e8fea1a (http://svn.webkit.org/repository/webkit/trunk@110422)
This includes build fixes for the latest qtbase/qtdeclarative as well as the final QML2 API.
Diffstat (limited to 'Source/WebCore/rendering/RenderTextFragment.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderTextFragment.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Source/WebCore/rendering/RenderTextFragment.cpp b/Source/WebCore/rendering/RenderTextFragment.cpp index ff4082422..1f267cde4 100644 --- a/Source/WebCore/rendering/RenderTextFragment.cpp +++ b/Source/WebCore/rendering/RenderTextFragment.cpp @@ -33,6 +33,7 @@ RenderTextFragment::RenderTextFragment(Node* node, StringImpl* str, int startOff , m_start(startOffset) , m_end(length) , m_firstLetter(0) + , m_allowFragmentReset(true) { } @@ -42,6 +43,7 @@ RenderTextFragment::RenderTextFragment(Node* node, StringImpl* str) , m_end(str ? str->length() : 0) , m_contentString(str) , m_firstLetter(0) + , m_allowFragmentReset(true) { } @@ -60,7 +62,9 @@ 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); @@ -78,15 +82,18 @@ void RenderTextFragment::willBeDestroyed() void RenderTextFragment::setTextInternal(PassRefPtr<StringImpl> text) { RenderText::setTextInternal(text); - if (m_firstLetter) { - ASSERT(!m_contentString); - m_firstLetter->destroy(); - m_firstLetter = 0; + + if (m_allowFragmentReset) { m_start = 0; m_end = textLength(); - if (Node* t = node()) { - ASSERT(!t->renderer()); - t->setRenderer(this); + if (m_firstLetter) { + ASSERT(!m_contentString); + m_firstLetter->destroy(); + m_firstLetter = 0; + if (Node* t = node()) { + ASSERT(!t->renderer()); + t->setRenderer(this); + } } } } |