Chromium Code Reviews| 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; |