Chromium Code Reviews| Index: Source/core/rendering/RenderTextFragment.cpp |
| diff --git a/Source/core/rendering/RenderTextFragment.cpp b/Source/core/rendering/RenderTextFragment.cpp |
| index d36e9c7f42b2c3b88fbd1f6a058e886254c16af8..a2910fae685d9f942a11d458fef70d977d5e8fbd 100644 |
| --- a/Source/core/rendering/RenderTextFragment.cpp |
| +++ b/Source/core/rendering/RenderTextFragment.cpp |
| @@ -24,6 +24,8 @@ |
| #include "core/rendering/RenderTextFragment.h" |
| #include "core/dom/Text.h" |
| +#include "core/editing/VisiblePosition.h" |
| +#include "core/rendering/HitTestResult.h" |
| #include "core/rendering/RenderBlock.h" |
| namespace WebCore { |
| @@ -49,6 +51,22 @@ RenderTextFragment::~RenderTextFragment() |
| { |
| } |
| +static RenderText* findRenderText(RenderObject* renderer) |
| +{ |
| + if (renderer->isText()) |
| + return toRenderText(renderer); |
| + for (RenderObject* current = renderer->firstChild(); current; current = current->nextSibling()) { |
| + if (RenderText* found = findRenderText(current)) |
|
tkent
2013/08/02 03:25:48
Using RenderObject::nextInPreOrder is preferable t
yosin_UTC9
2013/08/02 05:01:55
Done.
|
| + return found; |
| + } |
| + return 0; |
| +} |
| + |
| +RenderText* RenderTextFragment::firstRenderTextInFirstLetter() const |
| +{ |
| + return m_firstLetter ? findRenderText(m_firstLetter) : 0; |
| +} |
| + |
| PassRefPtr<StringImpl> RenderTextFragment::originalText() const |
| { |
| Node* e = node(); |
| @@ -122,4 +140,20 @@ RenderBlock* RenderTextFragment::blockForAccompanyingFirstLetter() const |
| return 0; |
| } |
| +void RenderTextFragment::updateHitTestResult(HitTestResult& result, const LayoutPoint& point) |
| +{ |
| + if (result.innerNode()) |
| + return; |
| + |
| + RenderObject::updateHitTestResult(result, point); |
| + if (m_firstLetter || !node()) |
| + return; |
| + RenderObject* nodeRenderer = node()->renderer(); |
| + if (!nodeRenderer || !nodeRenderer->isText() || !toRenderText(nodeRenderer)->isTextFragment()) |
| + return; |
| + |
| + if (isDescendantOf(toRenderTextFragment(nodeRenderer)->m_firstLetter)) |
| + result.setIsFirstLetter(true); |
| +} |
| + |
| } // namespace WebCore |