diff options
author | Ben Murdoch <benm@google.com> | 2010-08-13 05:20:16 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-08-13 05:20:16 -0700 |
commit | f4958a7d95cd5fbc1c74905e229b02c95cd5ee78 (patch) | |
tree | 14a0f1b07a19948c2ed93d0d8547caa7fe10aa0e /WebCore/editing/TextIterator.h | |
parent | d074a7997da8ce379434eb6e208b97cde8a0841c (diff) | |
parent | f964bc1fd59a545a80a0cc2529ad8830be514871 (diff) | |
download | external_webkit-f4958a7d95cd5fbc1c74905e229b02c95cd5ee78.zip external_webkit-f4958a7d95cd5fbc1c74905e229b02c95cd5ee78.tar.gz external_webkit-f4958a7d95cd5fbc1c74905e229b02c95cd5ee78.tar.bz2 |
Merge changes I60a96064,I6929172f,Idefd9bec,I8cf448f2,I8791737a,I992c56b0,Ibb4b089d,I779a8ec0,Ife412e30,I2da1ae98,Ibcf41849
* changes:
Merge WebKit at r65072 : Update WebKit revision number.
Merge WebKit at r65072 : Update test_expectations.
Merge WebKit at r65072 : Complete cherry-pick of WebKit change 43848 to add EmptyDeviceMotionClient
Merge WebKit at r65072 : Implement DeviceMotionClientAndroid
Merge WebKit at r65072: JSC build fix in InspectorController.h
Merge WebKit at r65072: Fix V8 code generator.
Merge WebKit at r65072 : Build fix for JSC, update ambiguous usage of JSLock.
Merge WebKit at r65072: String class has moved to the WTF namespace.
Merge Webkit at r65072 : Fix conflicts.
Merge Webkit at r65072 : Fix Makefiles.
Merge WebKit at r65072 : Initial merge by git.
Diffstat (limited to 'WebCore/editing/TextIterator.h')
-rw-r--r-- | WebCore/editing/TextIterator.h | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/WebCore/editing/TextIterator.h b/WebCore/editing/TextIterator.h index ba381b9..805e060 100644 --- a/WebCore/editing/TextIterator.h +++ b/WebCore/editing/TextIterator.h @@ -32,6 +32,9 @@ namespace WebCore { +class RenderText; +class RenderTextFragment; + // FIXME: Can't really answer this question correctly without knowing the white-space mode. // FIXME: Move this somewhere else in the editing directory. It doesn't belong here. inline bool isCollapsibleWhitespace(UChar c) @@ -73,6 +76,7 @@ enum TextIteratorBehavior { TextIteratorEmitsCharactersBetweenAllVisiblePositions = 1 << 0, TextIteratorEntersTextControls = 1 << 1, TextIteratorEmitsTextsWithoutTranscoding = 1 << 2, + TextIteratorEndsAtEditingBoundary = 1 << 3 }; class TextIterator { @@ -102,7 +106,10 @@ private: bool handleReplacedElement(); bool handleNonTextNode(); void handleTextBox(); + void handleTextNodeFirstLetter(RenderTextFragment*); + bool hasVisibleTextNode(RenderText*); void emitCharacter(UChar, Node* textNode, Node* offsetBaseNode, int textStartOffset, int textEndOffset); + void emitText(Node* textNode, RenderObject* renderObject, int textStartOffset, int textEndOffset); void emitText(Node* textNode, int textStartOffset, int textEndOffset); // Current position, not necessarily of the text being returned, but position @@ -134,6 +141,11 @@ private: // are false and 0, we go back to normal iterating. bool m_needsAnotherNewline; InlineTextBox* m_textBox; + // Used when iteration over :first-letter text to save pointer to + // remaining text box. + InlineTextBox* m_remainingTextBox; + // Used to point to RenderText object for :first-letter. + RenderText *m_firstLetterText; // Used to do the whitespace collapsing logic. Node* m_lastTextNode; @@ -159,6 +171,8 @@ private: // Used when we want texts for copying, pasting, and transposing. bool m_emitsTextWithoutTranscoding; + // Used when deciding text fragment created by :first-letter should be looked into. + bool m_handledFirstLetter; }; // Iterates through the DOM range, returning all the text, and 0-length boundaries @@ -167,7 +181,7 @@ private: class SimplifiedBackwardsTextIterator { public: SimplifiedBackwardsTextIterator(); - explicit SimplifiedBackwardsTextIterator(const Range*); + explicit SimplifiedBackwardsTextIterator(const Range*, TextIteratorBehavior = TextIteratorDefaultBehavior); bool atEnd() const { return !m_positionNode; } void advance(); @@ -183,7 +197,11 @@ private: bool handleReplacedElement(); bool handleNonTextNode(); void emitCharacter(UChar, Node*, int startOffset, int endOffset); - + bool crossesEditingBoundary(Node*) const; + bool setCurrentNode(Node*); + void clearCurrentNode(); + + TextIteratorBehavior m_behavior; // Current position, not necessarily of the text being returned, but position // as we walk through the DOM tree. Node* m_node; @@ -247,7 +265,7 @@ private: class BackwardsCharacterIterator { public: BackwardsCharacterIterator(); - explicit BackwardsCharacterIterator(const Range*); + explicit BackwardsCharacterIterator(const Range*, TextIteratorBehavior = TextIteratorDefaultBehavior); void advance(int); @@ -256,6 +274,7 @@ public: PassRefPtr<Range> range() const; private: + TextIteratorBehavior m_behavior; int m_offset; int m_runOffset; bool m_atBreak; |