Index: Source/core/editing/htmlediting.cpp |
diff --git a/Source/core/editing/htmlediting.cpp b/Source/core/editing/htmlediting.cpp |
index 69a59f3064ddfba20a4b7531e0de1a07c4889e9d..80b36f7907437d16ed7d4670f9045e16c9320942 100644 |
--- a/Source/core/editing/htmlediting.cpp |
+++ b/Source/core/editing/htmlediting.cpp |
@@ -66,7 +66,18 @@ using namespace HTMLNames; |
// purposes of editing. |
bool isAtomicNode(const Node *node) |
{ |
- return node && (!node->hasChildNodes() || editingIgnoresContent(node)); |
+ if (!node) |
+ return false; |
+ if (!node->hasChildNodes() || editingIgnoresContent(node)) |
+ return true; |
+ RenderObject* renderer = node->renderer(); |
+ if (!renderer) |
+ return false; |
+ // For compatibility with IE, we allow to move caret into table cell event |
+ // if TABLE and TR are uneditable. |
+ if (renderer->isTable() || renderer->isTableRow()) |
ojan
2013/05/27 06:51:54
I don't think this bit is right. Even if we were t
yosin_UTC9
2013/05/27 09:10:13
I don't think there are web contents depend on thi
|
+ return false; |
+ return renderer->style()->userModify() == READ_ONLY && lowestEditableAncestor(node); |
} |
// Compare two positions, taking into account the possibility that one or both |
@@ -128,7 +139,7 @@ Node* highestEditableRoot(const Position& position, EditableType editableType) |
return highestRoot; |
} |
-Node* lowestEditableAncestor(Node* node) |
+Node* lowestEditableAncestor(const Node* node) |
{ |
if (!node) |
return 0; |