summaryrefslogtreecommitdiffstats
path: root/WebCore/editing/VisiblePosition.cpp
diff options
context:
space:
mode:
authorFeng Qian <fqian@google.com>2009-06-17 12:12:20 -0700
committerFeng Qian <fqian@google.com>2009-06-17 12:12:20 -0700
commit5f1ab04193ad0130ca8204aadaceae083aca9881 (patch)
tree5a92cd389e2cfe7fb67197ce14b38469462379f8 /WebCore/editing/VisiblePosition.cpp
parent194315e5a908cc8ed67d597010544803eef1ac59 (diff)
downloadexternal_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.zip
external_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.tar.gz
external_webkit-5f1ab04193ad0130ca8204aadaceae083aca9881.tar.bz2
Get WebKit r44544.
Diffstat (limited to 'WebCore/editing/VisiblePosition.cpp')
-rw-r--r--WebCore/editing/VisiblePosition.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/WebCore/editing/VisiblePosition.cpp b/WebCore/editing/VisiblePosition.cpp
index 27ee146..2db6d31 100644
--- a/WebCore/editing/VisiblePosition.cpp
+++ b/WebCore/editing/VisiblePosition.cpp
@@ -28,8 +28,8 @@
#include "CString.h"
#include "Document.h"
-#include "Element.h"
#include "FloatQuad.h"
+#include "HTMLElement.h"
#include "HTMLNames.h"
#include "InlineTextBox.h"
#include "Logging.h"
@@ -511,7 +511,7 @@ Position VisiblePosition::canonicalPosition(const Position& position)
return next;
}
-UChar VisiblePosition::characterAfter() const
+UChar32 VisiblePosition::characterAfter() const
{
// We canonicalize to the first of two equivalent candidates, but the second of the two candidates
// is the one that will be inside the text node containing the character after this visible position.
@@ -520,10 +520,15 @@ UChar VisiblePosition::characterAfter() const
if (!node || !node->isTextNode())
return 0;
Text* textNode = static_cast<Text*>(pos.node());
- int offset = pos.m_offset;
- if ((unsigned)offset >= textNode->length())
+ unsigned offset = pos.deprecatedEditingOffset();
+ unsigned length = textNode->length();
+ if (offset >= length)
return 0;
- return textNode->data()[offset];
+
+ UChar32 ch;
+ const UChar* characters = textNode->data().characters();
+ U16_NEXT(characters, offset, length, ch);
+ return ch;
}
IntRect VisiblePosition::localCaretRect(RenderObject*& renderer) const
@@ -576,7 +581,7 @@ void VisiblePosition::debugPosition(const char* msg) const
if (isNull())
fprintf(stderr, "Position [%s]: null\n", msg);
else
- fprintf(stderr, "Position [%s]: %s [%p] at %d\n", msg, m_deepPosition.node()->nodeName().utf8().data(), m_deepPosition.node(), m_deepPosition.m_offset);
+ fprintf(stderr, "Position [%s]: %s [%p] at %d\n", msg, m_deepPosition.node()->nodeName().utf8().data(), m_deepPosition.node(), m_deepPosition.deprecatedEditingOffset());
}
#ifndef NDEBUG
@@ -600,7 +605,7 @@ PassRefPtr<Range> makeRange(const VisiblePosition &start, const VisiblePosition
Position s = rangeCompliantEquivalent(start);
Position e = rangeCompliantEquivalent(end);
- return Range::create(s.node()->document(), s.node(), s.m_offset, e.node(), e.m_offset);
+ return Range::create(s.node()->document(), s.node(), s.deprecatedEditingOffset(), e.node(), e.deprecatedEditingOffset());
}
VisiblePosition startVisiblePosition(const Range *r, EAffinity affinity)
@@ -621,7 +626,7 @@ bool setStart(Range *r, const VisiblePosition &visiblePosition)
return false;
Position p = rangeCompliantEquivalent(visiblePosition);
int code = 0;
- r->setStart(p.node(), p.m_offset, code);
+ r->setStart(p.node(), p.deprecatedEditingOffset(), code);
return code == 0;
}
@@ -631,7 +636,7 @@ bool setEnd(Range *r, const VisiblePosition &visiblePosition)
return false;
Position p = rangeCompliantEquivalent(visiblePosition);
int code = 0;
- r->setEnd(p.node(), p.m_offset, code);
+ r->setEnd(p.node(), p.deprecatedEditingOffset(), code);
return code == 0;
}