Changeset 157517 in webkit
- Timestamp:
- Oct 16, 2013, 7:33:31 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
-
ChangeLog (modified) (1 diff)
-
dom/Position.cpp (modified) (3 diffs)
-
dom/Position.h (modified) (1 diff)
-
rendering/RenderText.cpp (modified) (1 diff)
-
rendering/RenderText.h (modified) (1 diff)
-
rendering/RenderTextLineBoxes.cpp (modified) (1 diff)
-
rendering/RenderTextLineBoxes.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r157515 r157517 1 2013-10-16 Antti Koivisto <antti@apple.com> 2 3 Move code for finding rendered character offset to RenderTextLineBoxes 4 https://bugs.webkit.org/show_bug.cgi?id=122892 5 6 Reviewed by Andreas Kling. 7 8 * rendering/RenderText.cpp: 9 (WebCore::RenderText::countRenderedCharacterOffsets): 10 (WebCore::RenderText::containsRenderedCharacterOffset): 11 12 Renamed for consistency. 13 14 * rendering/RenderTextLineBoxes.cpp: 15 (WebCore::RenderTextLineBoxes::countCharacterOffsets): 16 17 This used to be Position::renderedPosition. 18 1 19 2013-10-16 Andreas Kling <akling@apple.com> 2 20 -
trunk/Source/WebCore/dom/Position.cpp
r157514 r157517 480 480 } 481 481 482 int Position::renderedOffset() const483 {484 if (!deprecatedNode()->isTextNode())485 return m_offset;486 487 if (!deprecatedNode()->renderer())488 return m_offset;489 490 int result = 0;491 RenderText* textRenderer = toText(deprecatedNode())->renderer();492 for (InlineTextBox *box = textRenderer->firstTextBox(); box; box = box->nextTextBox()) {493 int start = box->start();494 int end = box->start() + box->len();495 if (m_offset < start)496 return result;497 if (m_offset <= end) {498 result += m_offset - start;499 return result;500 }501 result += box->len();502 }503 return result;504 }505 506 482 // return first preceding DOM position rendered at a different location, or "this" 507 483 Position Position::previousCharacterPosition(EAffinity affinity) const … … 976 952 return false; 977 953 978 return renderer->contains CharacterOffset(m_offset);954 return renderer->containsRenderedCharacterOffset(m_offset); 979 955 } 980 956 … … 1029 1005 return false; 1030 1006 1031 int thisRenderedOffset = rendere dOffset();1032 int posRenderedOffset = pos .renderedOffset();1007 int thisRenderedOffset = renderer->isText() ? toRenderText(renderer)->countRenderedCharacterOffsetsUntil(m_offset) : m_offset; 1008 int posRenderedOffset = posRenderer->isText() ? toRenderText(posRenderer)->countRenderedCharacterOffsetsUntil(pos.m_offset) : pos.m_offset; 1033 1009 1034 1010 if (renderer == posRenderer && thisRenderedOffset == posRenderedOffset) -
trunk/Source/WebCore/dom/Position.h
r157514 r157517 208 208 private: 209 209 int offsetForPositionAfterAnchor() const; 210 211 int renderedOffset() const;212 213 210 214 211 Position previousCharacterPosition(EAffinity) const; -
trunk/Source/WebCore/rendering/RenderText.cpp
r157514 r157517 1152 1152 } 1153 1153 1154 bool RenderText::containsCharacterOffset(unsigned offset) const 1154 unsigned RenderText::countRenderedCharacterOffsetsUntil(unsigned offset) const 1155 { 1156 return m_lineBoxes.countCharacterOffsetsUntil(offset); 1157 } 1158 1159 bool RenderText::containsRenderedCharacterOffset(unsigned offset) const 1155 1160 { 1156 1161 return m_lineBoxes.containsOffset(*this, offset, RenderTextLineBoxes::CharacterOffset); -
trunk/Source/WebCore/rendering/RenderText.h
r157514 r157517 121 121 virtual int caretMinOffset() const OVERRIDE; 122 122 virtual int caretMaxOffset() const OVERRIDE; 123 bool containsCharacterOffset(unsigned) const; 123 unsigned countRenderedCharacterOffsetsUntil(unsigned) const; 124 bool containsRenderedCharacterOffset(unsigned) const; 124 125 bool containsCaretOffset(unsigned) const; 125 126 bool hasRenderedText() const; -
trunk/Source/WebCore/rendering/RenderTextLineBoxes.cpp
r157514 r157517 244 244 } 245 245 246 unsigned RenderTextLineBoxes::countCharacterOffsetsUntil(unsigned offset) const 247 { 248 unsigned result = 0; 249 for (auto box = m_first; box; box = box->nextTextBox()) { 250 if (offset < box->start()) 251 return result; 252 if (offset <= box->start() + box->len()) { 253 result += offset - box->start(); 254 return result; 255 } 256 result += box->len(); 257 } 258 return result; 259 } 260 246 261 enum ShouldAffinityBeDownstream { AlwaysDownstream, AlwaysUpstream, UpstreamIfPositionIsNotAtStart }; 247 262 -
trunk/Source/WebCore/rendering/RenderTextLineBoxes.h
r157514 r157517 63 63 enum OffsetType { CaretOffset, CharacterOffset }; 64 64 bool containsOffset(const RenderText&, unsigned, OffsetType) const; 65 unsigned countCharacterOffsetsUntil(unsigned) const; 65 66 66 67 VisiblePosition positionForPoint(const RenderText&, const LayoutPoint&) const;
Note:
See TracChangeset
for help on using the changeset viewer.