2009-03-31 Darin Adler <darin@apple.com>
Rolled out that last change until I can investigate the regression test failures it seems
to have caused.
* dom/PositionIterator.cpp:
(WebCore::PositionIterator::decrement):
* dom/PositionIterator.h:
(WebCore::PositionIterator::PositionIterator):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@42148 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index a0feaac..1cc025e 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,5 +1,15 @@
2009-03-31 Darin Adler <darin@apple.com>
+ Rolled out that last change until I can investigate the regression test failures it seems
+ to have caused.
+
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::decrement):
+ * dom/PositionIterator.h:
+ (WebCore::PositionIterator::PositionIterator):
+
+2009-03-31 Darin Adler <darin@apple.com>
+
Reviewed by Eric Seidel.
Bug 24621: PositionIterator doesn't iterate "after last child" positions when going backwards
diff --git a/WebCore/dom/PositionIterator.cpp b/WebCore/dom/PositionIterator.cpp
index 62ce8ee..781d352 100644
--- a/WebCore/dom/PositionIterator.cpp
+++ b/WebCore/dom/PositionIterator.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -85,14 +85,13 @@
return;
}
- if (m_parent->hasChildNodes()) {
- ASSERT(!m_offset);
- m_parent = m_parent->lastChild();
- if (!m_parent->hasChildNodes())
- m_offset = lastOffsetForEditing(m_parent);
+ if (m_offset) {
+ m_offset = Position::uncheckedPreviousOffset(m_parent, m_offset);
} else {
- if (m_offset) {
- m_offset = Position::uncheckedPreviousOffset(m_parent, m_offset);
+ if (m_parent->hasChildNodes()) {
+ m_parent = m_parent->lastChild();
+ if (!m_parent->hasChildNodes())
+ m_offset = lastOffsetForEditing(m_parent);
} else {
m_child = m_parent;
m_parent = m_parent->parentNode();
diff --git a/WebCore/dom/PositionIterator.h b/WebCore/dom/PositionIterator.h
index c90c31c..98a2ccb 100644
--- a/WebCore/dom/PositionIterator.h
+++ b/WebCore/dom/PositionIterator.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -42,17 +42,18 @@
, m_offset(0)
{
}
- PositionIterator(const Position& position)
- : m_parent(position.node())
- , m_child(m_parent->childNode(position.m_offset))
- , m_offset(m_parent->hasChildNodes() ? 0 : position.m_offset)
+
+ PositionIterator(const Position& pos)
+ : m_parent(pos.node())
+ , m_child(m_parent->childNode(pos.m_offset))
+ , m_offset(m_child ? 0 : pos.m_offset)
{
}
+ operator Position() const;
void increment();
void decrement();
- operator Position() const;
Node* node() const { return m_parent; }
int offsetInLeafNode() const { return m_offset; }