OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights |
3 * reserved. | 3 * reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 2548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2559 LayoutRect localSelectionRectOfPositionTemplate( | 2559 LayoutRect localSelectionRectOfPositionTemplate( |
2560 const PositionWithAffinityTemplate<Strategy>& position, | 2560 const PositionWithAffinityTemplate<Strategy>& position, |
2561 LayoutObject*& layoutObject) { | 2561 LayoutObject*& layoutObject) { |
2562 LayoutRect rect = localCaretRectOfPositionTemplate(position, layoutObject); | 2562 LayoutRect rect = localCaretRectOfPositionTemplate(position, layoutObject); |
2563 | 2563 |
2564 if (rect.isEmpty()) | 2564 if (rect.isEmpty()) |
2565 return rect; | 2565 return rect; |
2566 | 2566 |
2567 InlineBoxPosition boxPosition = | 2567 InlineBoxPosition boxPosition = |
2568 computeInlineBoxPosition(position.position(), position.affinity()); | 2568 computeInlineBoxPosition(position.position(), position.affinity()); |
2569 // |boxPosition.inlineBox| can be null. See http://crbug.com/680428. | |
2570 if (!boxPosition.inlineBox) | |
2571 return LayoutRect(); | |
2569 | 2572 |
2570 InlineTextBox* box = toInlineTextBox(boxPosition.inlineBox); | 2573 InlineTextBox* box = toInlineTextBox(boxPosition.inlineBox); |
2571 if (layoutObject->style()->isHorizontalWritingMode()) { | 2574 if (layoutObject->style()->isHorizontalWritingMode()) { |
2572 rect.setY(box->root().selectionTop()); | 2575 rect.setY(box->root().selectionTop()); |
2573 rect.setHeight(box->root().selectionHeight()); | 2576 rect.setHeight(box->root().selectionHeight()); |
2574 return rect; | 2577 return rect; |
2575 } | 2578 } |
2576 | 2579 |
2577 rect.setX(box->root().selectionTop()); | 2580 rect.setX(box->root().selectionTop()); |
2578 rect.setWidth(box->root().selectionHeight()); | 2581 rect.setWidth(box->root().selectionHeight()); |
(...skipping 12 matching lines...) Expand all Loading... | |
2591 layoutObject); | 2594 layoutObject); |
2592 } | 2595 } |
2593 | 2596 |
2594 LayoutRect localCaretRectOfPosition( | 2597 LayoutRect localCaretRectOfPosition( |
2595 const PositionInFlatTreeWithAffinity& position, | 2598 const PositionInFlatTreeWithAffinity& position, |
2596 LayoutObject*& layoutObject) { | 2599 LayoutObject*& layoutObject) { |
2597 return localCaretRectOfPositionTemplate<EditingInFlatTreeStrategy>( | 2600 return localCaretRectOfPositionTemplate<EditingInFlatTreeStrategy>( |
2598 position, layoutObject); | 2601 position, layoutObject); |
2599 } | 2602 } |
2600 | 2603 |
2604 LayoutRect localSelectionRectOfPosition( | |
yosin_UTC9
2017/01/18 05:37:50
This function doesn't relate to change of this pat
joone
2017/01/18 07:52:17
This function should have been added to the previo
| |
2605 const PositionInFlatTreeWithAffinity& position, | |
2606 LayoutObject*& layoutObject) { | |
2607 return localSelectionRectOfPositionTemplate<EditingInFlatTreeStrategy>( | |
2608 position, layoutObject); | |
2609 } | |
2610 | |
2601 static LayoutUnit boundingBoxLogicalHeight(LayoutObject* o, | 2611 static LayoutUnit boundingBoxLogicalHeight(LayoutObject* o, |
2602 const LayoutRect& rect) { | 2612 const LayoutRect& rect) { |
2603 return o->style()->isHorizontalWritingMode() ? rect.height() : rect.width(); | 2613 return o->style()->isHorizontalWritingMode() ? rect.height() : rect.width(); |
2604 } | 2614 } |
2605 | 2615 |
2606 bool hasRenderedNonAnonymousDescendantsWithHeight(LayoutObject* layoutObject) { | 2616 bool hasRenderedNonAnonymousDescendantsWithHeight(LayoutObject* layoutObject) { |
2607 LayoutObject* stop = layoutObject->nextInPreOrderAfterChildren(); | 2617 LayoutObject* stop = layoutObject->nextInPreOrderAfterChildren(); |
2608 for (LayoutObject* o = layoutObject->slowFirstChild(); o && o != stop; | 2618 for (LayoutObject* o = layoutObject->slowFirstChild(); o && o != stop; |
2609 o = o->nextInPreOrder()) { | 2619 o = o->nextInPreOrder()) { |
2610 if (o->nonPseudoNode()) { | 2620 if (o->nonPseudoNode()) { |
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3281 IntRect absoluteSelectionBoundsOf(const VisiblePosition& visiblePosition) { | 3291 IntRect absoluteSelectionBoundsOf(const VisiblePosition& visiblePosition) { |
3282 return absoluteSelectionBoundsOfAlgorithm<EditingStrategy>(visiblePosition); | 3292 return absoluteSelectionBoundsOfAlgorithm<EditingStrategy>(visiblePosition); |
3283 } | 3293 } |
3284 | 3294 |
3285 IntRect absoluteCaretBoundsOf( | 3295 IntRect absoluteCaretBoundsOf( |
3286 const VisiblePositionInFlatTree& visiblePosition) { | 3296 const VisiblePositionInFlatTree& visiblePosition) { |
3287 return absoluteCaretBoundsOfAlgorithm<EditingInFlatTreeStrategy>( | 3297 return absoluteCaretBoundsOfAlgorithm<EditingInFlatTreeStrategy>( |
3288 visiblePosition); | 3298 visiblePosition); |
3289 } | 3299 } |
3290 | 3300 |
3301 IntRect absoluteSelectionBoundsOf( | |
yosin_UTC9
2017/01/18 05:37:50
This function doesn't relate to change of this pat
joone
2017/01/18 07:52:17
Ditto.
| |
3302 const VisiblePositionInFlatTree& visiblePosition) { | |
3303 return absoluteSelectionBoundsOfAlgorithm<EditingInFlatTreeStrategy>( | |
3304 visiblePosition); | |
3305 } | |
3306 | |
3291 template <typename Strategy> | 3307 template <typename Strategy> |
3292 static VisiblePositionTemplate<Strategy> skipToEndOfEditingBoundary( | 3308 static VisiblePositionTemplate<Strategy> skipToEndOfEditingBoundary( |
3293 const VisiblePositionTemplate<Strategy>& pos, | 3309 const VisiblePositionTemplate<Strategy>& pos, |
3294 const PositionTemplate<Strategy>& anchor) { | 3310 const PositionTemplate<Strategy>& anchor) { |
3295 DCHECK(pos.isValid()) << pos; | 3311 DCHECK(pos.isValid()) << pos; |
3296 if (pos.isNull()) | 3312 if (pos.isNull()) |
3297 return pos; | 3313 return pos; |
3298 | 3314 |
3299 ContainerNode* highestRoot = highestEditableRoot(anchor); | 3315 ContainerNode* highestRoot = highestEditableRoot(anchor); |
3300 ContainerNode* highestRootOfPos = highestEditableRoot(pos.deepEquivalent()); | 3316 ContainerNode* highestRootOfPos = highestEditableRoot(pos.deepEquivalent()); |
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3902 | 3918 |
3903 VisiblePositionInFlatTree previousPositionOf( | 3919 VisiblePositionInFlatTree previousPositionOf( |
3904 const VisiblePositionInFlatTree& visiblePosition, | 3920 const VisiblePositionInFlatTree& visiblePosition, |
3905 EditingBoundaryCrossingRule rule) { | 3921 EditingBoundaryCrossingRule rule) { |
3906 DCHECK(visiblePosition.isValid()) << visiblePosition; | 3922 DCHECK(visiblePosition.isValid()) << visiblePosition; |
3907 return previousPositionOfAlgorithm<EditingInFlatTreeStrategy>( | 3923 return previousPositionOfAlgorithm<EditingInFlatTreeStrategy>( |
3908 visiblePosition.deepEquivalent(), rule); | 3924 visiblePosition.deepEquivalent(), rule); |
3909 } | 3925 } |
3910 | 3926 |
3911 } // namespace blink | 3927 } // namespace blink |
OLD | NEW |