| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 using namespace HTMLNames; | 52 using namespace HTMLNames; |
| 53 | 53 |
| 54 static Node* nextRenderedEditable(Node* node) | 54 static Node* nextRenderedEditable(Node* node) |
| 55 { | 55 { |
| 56 for (node = node->nextLeafNode(); node; node = node->nextLeafNode()) { | 56 for (node = node->nextLeafNode(); node; node = node->nextLeafNode()) { |
| 57 LayoutObject* renderer = node->renderer(); | 57 LayoutObject* renderer = node->renderer(); |
| 58 if (!renderer) | 58 if (!renderer) |
| 59 continue; | 59 continue; |
| 60 if (!node->hasEditableStyle()) | 60 if (!node->hasEditableStyle()) |
| 61 continue; | 61 continue; |
| 62 if ((renderer->isBox() && toRenderBox(renderer)->inlineBoxWrapper()) ||
(renderer->isText() && toRenderText(renderer)->firstTextBox())) | 62 if ((renderer->isBox() && toLayoutBox(renderer)->inlineBoxWrapper()) ||
(renderer->isText() && toRenderText(renderer)->firstTextBox())) |
| 63 return node; | 63 return node; |
| 64 } | 64 } |
| 65 return 0; | 65 return 0; |
| 66 } | 66 } |
| 67 | 67 |
| 68 static Node* previousRenderedEditable(Node* node) | 68 static Node* previousRenderedEditable(Node* node) |
| 69 { | 69 { |
| 70 for (node = node->previousLeafNode(); node; node = node->previousLeafNode())
{ | 70 for (node = node->previousLeafNode(); node; node = node->previousLeafNode())
{ |
| 71 LayoutObject* renderer = node->renderer(); | 71 LayoutObject* renderer = node->renderer(); |
| 72 if (!renderer) | 72 if (!renderer) |
| 73 continue; | 73 continue; |
| 74 if (!node->hasEditableStyle()) | 74 if (!node->hasEditableStyle()) |
| 75 continue; | 75 continue; |
| 76 if ((renderer->isBox() && toRenderBox(renderer)->inlineBoxWrapper()) ||
(renderer->isText() && toRenderText(renderer)->firstTextBox())) | 76 if ((renderer->isBox() && toLayoutBox(renderer)->inlineBoxWrapper()) ||
(renderer->isText() && toRenderText(renderer)->firstTextBox())) |
| 77 return node; | 77 return node; |
| 78 } | 78 } |
| 79 return 0; | 79 return 0; |
| 80 } | 80 } |
| 81 | 81 |
| 82 const TreeScope* Position::commonAncestorTreeScope(const Position& a, const Posi
tion& b) | 82 const TreeScope* Position::commonAncestorTreeScope(const Position& a, const Posi
tion& b) |
| 83 { | 83 { |
| 84 if (!a.containerNode() || !b.containerNode()) | 84 if (!a.containerNode() || !b.containerNode()) |
| 85 return nullptr; | 85 return nullptr; |
| 86 return a.containerNode()->treeScope().commonAncestorTreeScope(b.containerNod
e()->treeScope()); | 86 return a.containerNode()->treeScope().commonAncestorTreeScope(b.containerNod
e()->treeScope()); |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 // Don't include inline tables. | 497 // Don't include inline tables. |
| 498 if (isHTMLTableElement(*node)) | 498 if (isHTMLTableElement(*node)) |
| 499 return false; | 499 return false; |
| 500 | 500 |
| 501 // A Marquee elements are moving so we should assume their ends are always | 501 // A Marquee elements are moving so we should assume their ends are always |
| 502 // visibily distinct. | 502 // visibily distinct. |
| 503 if (isHTMLMarqueeElement(*node)) | 503 if (isHTMLMarqueeElement(*node)) |
| 504 return true; | 504 return true; |
| 505 | 505 |
| 506 // There is a VisiblePosition inside an empty inline-block container. | 506 // There is a VisiblePosition inside an empty inline-block container. |
| 507 return node->renderer()->isReplaced() && canHaveChildrenForEditing(node) &&
toRenderBox(node->renderer())->size().height() != 0 && !node->hasChildren(); | 507 return node->renderer()->isReplaced() && canHaveChildrenForEditing(node) &&
toLayoutBox(node->renderer())->size().height() != 0 && !node->hasChildren(); |
| 508 } | 508 } |
| 509 | 509 |
| 510 static Node* enclosingVisualBoundary(Node* node) | 510 static Node* enclosingVisualBoundary(Node* node) |
| 511 { | 511 { |
| 512 while (node && !endsOfNodeAreVisuallyDistinctPositions(node)) | 512 while (node && !endsOfNodeAreVisuallyDistinctPositions(node)) |
| 513 node = node->parentNode(); | 513 node = node->parentNode(); |
| 514 | 514 |
| 515 return node; | 515 return node; |
| 516 } | 516 } |
| 517 | 517 |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 { | 778 { |
| 779 return o->style()->isHorizontalWritingMode() ? rect.height() : rect.width(); | 779 return o->style()->isHorizontalWritingMode() ? rect.height() : rect.width(); |
| 780 } | 780 } |
| 781 | 781 |
| 782 bool Position::hasRenderedNonAnonymousDescendantsWithHeight(LayoutObject* render
er) | 782 bool Position::hasRenderedNonAnonymousDescendantsWithHeight(LayoutObject* render
er) |
| 783 { | 783 { |
| 784 LayoutObject* stop = renderer->nextInPreOrderAfterChildren(); | 784 LayoutObject* stop = renderer->nextInPreOrderAfterChildren(); |
| 785 for (LayoutObject *o = renderer->slowFirstChild(); o && o != stop; o = o->ne
xtInPreOrder()) | 785 for (LayoutObject *o = renderer->slowFirstChild(); o && o != stop; o = o->ne
xtInPreOrder()) |
| 786 if (o->nonPseudoNode()) { | 786 if (o->nonPseudoNode()) { |
| 787 if ((o->isText() && boundingBoxLogicalHeight(o, toRenderText(o)->lin
esBoundingBox())) | 787 if ((o->isText() && boundingBoxLogicalHeight(o, toRenderText(o)->lin
esBoundingBox())) |
| 788 || (o->isBox() && toRenderBox(o)->pixelSnappedLogicalHeight()) | 788 || (o->isBox() && toLayoutBox(o)->pixelSnappedLogicalHeight()) |
| 789 || (o->isRenderInline() && isEmptyInline(o) && boundingBoxLogica
lHeight(o, toRenderInline(o)->linesBoundingBox()))) | 789 || (o->isRenderInline() && isEmptyInline(o) && boundingBoxLogica
lHeight(o, toRenderInline(o)->linesBoundingBox()))) |
| 790 return true; | 790 return true; |
| 791 } | 791 } |
| 792 return false; | 792 return false; |
| 793 } | 793 } |
| 794 | 794 |
| 795 bool Position::nodeIsUserSelectNone(Node* node) | 795 bool Position::nodeIsUserSelectNone(Node* node) |
| 796 { | 796 { |
| 797 return node && node->renderer() && !node->renderer()->isSelectable(); | 797 return node && node->renderer() && !node->renderer()->isSelectable(); |
| 798 } | 798 } |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1081 if (equivalent == *this) { | 1081 if (equivalent == *this) { |
| 1082 equivalent = upstreamIgnoringEditingBoundaries(*this); | 1082 equivalent = upstreamIgnoringEditingBoundaries(*this); |
| 1083 if (equivalent == *this || downstreamIgnoringEditingBoundaries(e
quivalent) == *this) | 1083 if (equivalent == *this || downstreamIgnoringEditingBoundaries(e
quivalent) == *this) |
| 1084 return; | 1084 return; |
| 1085 } | 1085 } |
| 1086 | 1086 |
| 1087 equivalent.getInlineBoxAndOffset(UPSTREAM, primaryDirection, inlineB
ox, caretOffset); | 1087 equivalent.getInlineBoxAndOffset(UPSTREAM, primaryDirection, inlineB
ox, caretOffset); |
| 1088 return; | 1088 return; |
| 1089 } | 1089 } |
| 1090 if (renderer->isBox()) { | 1090 if (renderer->isBox()) { |
| 1091 inlineBox = toRenderBox(renderer)->inlineBoxWrapper(); | 1091 inlineBox = toLayoutBox(renderer)->inlineBoxWrapper(); |
| 1092 if (!inlineBox || (caretOffset > inlineBox->caretMinOffset() && care
tOffset < inlineBox->caretMaxOffset())) | 1092 if (!inlineBox || (caretOffset > inlineBox->caretMinOffset() && care
tOffset < inlineBox->caretMaxOffset())) |
| 1093 return; | 1093 return; |
| 1094 } | 1094 } |
| 1095 } else { | 1095 } else { |
| 1096 RenderText* textRenderer = toRenderText(renderer); | 1096 RenderText* textRenderer = toRenderText(renderer); |
| 1097 | 1097 |
| 1098 InlineTextBox* box; | 1098 InlineTextBox* box; |
| 1099 InlineTextBox* candidate = 0; | 1099 InlineTextBox* candidate = 0; |
| 1100 | 1100 |
| 1101 for (box = textRenderer->firstTextBox(); box; box = box->nextTextBox())
{ | 1101 for (box = textRenderer->firstTextBox(); box; box = box->nextTextBox())
{ |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1313 pos.showTreeForThis(); | 1313 pos.showTreeForThis(); |
| 1314 } | 1314 } |
| 1315 | 1315 |
| 1316 void showTree(const blink::Position* pos) | 1316 void showTree(const blink::Position* pos) |
| 1317 { | 1317 { |
| 1318 if (pos) | 1318 if (pos) |
| 1319 pos->showTreeForThis(); | 1319 pos->showTreeForThis(); |
| 1320 } | 1320 } |
| 1321 | 1321 |
| 1322 #endif | 1322 #endif |
| OLD | NEW |