diff options
author | John Reck <jreck@google.com> | 2010-11-04 12:00:17 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2010-11-09 11:35:04 -0800 |
commit | e14391e94c850b8bd03680c23b38978db68687a8 (patch) | |
tree | 3fed87e6620fecaf3edc7259ae58a11662bedcb2 /WebCore/rendering/RenderTextFragment.cpp | |
parent | 1bd705833a68f07850cf7e204b26f8d328d16951 (diff) | |
download | external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.zip external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.gz external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.bz2 |
Merge Webkit at r70949: Initial merge by git.
Change-Id: I77b8645c083b5d0da8dba73ed01d4014aab9848e
Diffstat (limited to 'WebCore/rendering/RenderTextFragment.cpp')
-rw-r--r-- | WebCore/rendering/RenderTextFragment.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/WebCore/rendering/RenderTextFragment.cpp b/WebCore/rendering/RenderTextFragment.cpp index 705c095..ec62d85 100644 --- a/WebCore/rendering/RenderTextFragment.cpp +++ b/WebCore/rendering/RenderTextFragment.cpp @@ -23,6 +23,7 @@ #include "config.h" #include "RenderTextFragment.h" +#include "RenderBlock.h" #include "Text.h" namespace WebCore { @@ -57,6 +58,16 @@ PassRefPtr<StringImpl> RenderTextFragment::originalText() const return result->substring(start(), end()); } +void RenderTextFragment::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) +{ + RenderText::styleDidChange(diff, oldStyle); + + if (RenderBlock* block = blockForAccompanyingFirstLetter()) { + block->style()->removeCachedPseudoStyle(FIRST_LETTER); + block->updateFirstLetter(); + } +} + void RenderTextFragment::destroy() { if (m_firstLetter) @@ -92,4 +103,15 @@ UChar RenderTextFragment::previousCharacter() const return RenderText::previousCharacter(); } +RenderBlock* RenderTextFragment::blockForAccompanyingFirstLetter() const +{ + if (!m_firstLetter) + return 0; + for (RenderObject* block = m_firstLetter->parent(); block; block = block->parent()) { + if (block->style()->hasPseudoStyle(FIRST_LETTER) && block->canHaveChildren() && block->isRenderBlock()) + return toRenderBlock(block); + } + return 0; +} + } // namespace WebCore |