summaryrefslogtreecommitdiffstats
path: root/WebCore/rendering/RenderTextFragment.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2010-11-04 12:00:17 -0700
committerJohn Reck <jreck@google.com>2010-11-09 11:35:04 -0800
commite14391e94c850b8bd03680c23b38978db68687a8 (patch)
tree3fed87e6620fecaf3edc7259ae58a11662bedcb2 /WebCore/rendering/RenderTextFragment.cpp
parent1bd705833a68f07850cf7e204b26f8d328d16951 (diff)
downloadexternal_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.cpp22
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