Index: Source/core/editing/htmlediting.cpp |
diff --git a/Source/core/editing/htmlediting.cpp b/Source/core/editing/htmlediting.cpp |
index 69a59f3064ddfba20a4b7531e0de1a07c4889e9d..940b7f5f18f4d25297b6fb24f1c6e98482b51026 100644 |
--- a/Source/core/editing/htmlediting.cpp |
+++ b/Source/core/editing/htmlediting.cpp |
@@ -66,7 +66,16 @@ 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; |
+ if (renderer->isTable() || renderer->isTableRow()) |
leviw_travelin_and_unemployed
2013/05/22 21:02:47
I'd add a comment describing why we handle tables
yosin_UTC9
2013/05/27 05:01:46
Done.
|
+ return false; |
+ return renderer->style()->userModify() == READ_ONLY && lowestEditableAncestor(node); |
} |
// Compare two positions, taking into account the possibility that one or both |
@@ -128,7 +137,7 @@ Node* highestEditableRoot(const Position& position, EditableType editableType) |
return highestRoot; |
} |
-Node* lowestEditableAncestor(Node* node) |
+Node* lowestEditableAncestor(const Node* node) |
{ |
if (!node) |
return 0; |