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 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 if ((o->isText() && boundingBoxLogicalHeight(o, toLayoutText(o)->lin
esBoundingBox())) | 542 if ((o->isText() && boundingBoxLogicalHeight(o, toLayoutText(o)->lin
esBoundingBox())) |
543 || (o->isBox() && toLayoutBox(o)->pixelSnappedLogicalHeight()) | 543 || (o->isBox() && toLayoutBox(o)->pixelSnappedLogicalHeight()) |
544 || (o->isLayoutInline() && isEmptyInline(LineLayoutItem(o)) && b
oundingBoxLogicalHeight(o, toLayoutInline(o)->linesBoundingBox()))) | 544 || (o->isLayoutInline() && isEmptyInline(LineLayoutItem(o)) && b
oundingBoxLogicalHeight(o, toLayoutInline(o)->linesBoundingBox()))) |
545 return true; | 545 return true; |
546 } | 546 } |
547 } | 547 } |
548 return false; | 548 return false; |
549 } | 549 } |
550 | 550 |
551 template <typename Strategy> | 551 template <typename Strategy> |
552 Node* PositionAlgorithm<Strategy>::rootUserSelectAllForNode(Node* node) | |
553 { | |
554 if (!node || !nodeIsUserSelectAll(node)) | |
555 return 0; | |
556 Node* parent = Strategy::parent(*node); | |
557 if (!parent) | |
558 return node; | |
559 | |
560 Node* candidateRoot = node; | |
561 while (parent) { | |
562 if (!parent->layoutObject()) { | |
563 parent = Strategy::parent(*parent); | |
564 continue; | |
565 } | |
566 if (!nodeIsUserSelectAll(parent)) | |
567 break; | |
568 candidateRoot = parent; | |
569 parent = Strategy::parent(*candidateRoot); | |
570 } | |
571 return candidateRoot; | |
572 } | |
573 | |
574 template <typename Strategy> | |
575 bool PositionAlgorithm<Strategy>::isCandidate() const | 552 bool PositionAlgorithm<Strategy>::isCandidate() const |
576 { | 553 { |
577 if (isNull()) | 554 if (isNull()) |
578 return false; | 555 return false; |
579 | 556 |
580 LayoutObject* layoutObject = anchorNode()->layoutObject(); | 557 LayoutObject* layoutObject = anchorNode()->layoutObject(); |
581 if (!layoutObject) | 558 if (!layoutObject) |
582 return false; | 559 return false; |
583 | 560 |
584 if (layoutObject->style()->visibility() != VISIBLE) | 561 if (layoutObject->style()->visibility() != VISIBLE) |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1069 | 1046 |
1070 void showTree(const blink::Position* pos) | 1047 void showTree(const blink::Position* pos) |
1071 { | 1048 { |
1072 if (pos) | 1049 if (pos) |
1073 pos->showTreeForThis(); | 1050 pos->showTreeForThis(); |
1074 else | 1051 else |
1075 fprintf(stderr, "Cannot showTree for (nil)\n"); | 1052 fprintf(stderr, "Cannot showTree for (nil)\n"); |
1076 } | 1053 } |
1077 | 1054 |
1078 #endif | 1055 #endif |
OLD | NEW |