| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights
reserved. | 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights
reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 783 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 }; | 794 }; |
| 795 | 795 |
| 796 } // unnamed namespace | 796 } // unnamed namespace |
| 797 | 797 |
| 798 bool LayoutInline::hitTestCulledInline(HitTestResult& result, const HitTestLocat
ion& locationInContainer, const LayoutPoint& accumulatedOffset) | 798 bool LayoutInline::hitTestCulledInline(HitTestResult& result, const HitTestLocat
ion& locationInContainer, const LayoutPoint& accumulatedOffset) |
| 799 { | 799 { |
| 800 ASSERT(!alwaysCreateLineBoxes()); | 800 ASSERT(!alwaysCreateLineBoxes()); |
| 801 if (!visibleToHitTestRequest(result.hitTestRequest())) | 801 if (!visibleToHitTestRequest(result.hitTestRequest())) |
| 802 return false; | 802 return false; |
| 803 | 803 |
| 804 HitTestLocation tmpLocation(locationInContainer, -toLayoutSize(accumulatedOf
fset)); | 804 HitTestLocation adjustedLocation(locationInContainer, -toLayoutSize(accumula
tedOffset)); |
| 805 | 805 |
| 806 Region regionResult; | 806 Region regionResult; |
| 807 HitTestCulledInlinesGeneratorContext context(regionResult, tmpLocation); | 807 HitTestCulledInlinesGeneratorContext context(regionResult, adjustedLocation)
; |
| 808 generateCulledLineBoxRects(context, this); | 808 generateCulledLineBoxRects(context, this); |
| 809 | 809 |
| 810 if (context.intersected()) { | 810 if (context.intersected()) { |
| 811 updateHitTestResult(result, tmpLocation.point()); | 811 updateHitTestResult(result, adjustedLocation.point()); |
| 812 // We can not use addNodeToListBasedTestResult to determine if we fully
enclose the hit-test area | 812 if (result.addNodeToListBasedTestResult(node(), adjustedLocation, region
Result) == StopHitTesting) |
| 813 // because it can only handle rectangular targets. | 813 return true; |
| 814 result.addNodeToListBasedTestResult(node(), locationInContainer); | |
| 815 // We check if using list-based hit-test to continue hit testing. | |
| 816 if (!result.hitTestRequest().penetratingList()) | |
| 817 return regionResult.contains(tmpLocation.boundingBox()); | |
| 818 } | 814 } |
| 819 return false; | 815 return false; |
| 820 } | 816 } |
| 821 | 817 |
| 822 PositionWithAffinity LayoutInline::positionForPoint(const LayoutPoint& point) | 818 PositionWithAffinity LayoutInline::positionForPoint(const LayoutPoint& point) |
| 823 { | 819 { |
| 824 // FIXME: Does not deal with relative positioned inlines (should it?) | 820 // FIXME: Does not deal with relative positioned inlines (should it?) |
| 825 LayoutBlock* cb = containingBlock(); | 821 LayoutBlock* cb = containingBlock(); |
| 826 if (firstLineBoxIncludingCulling()) { | 822 if (firstLineBoxIncludingCulling()) { |
| 827 // This inline actually has a line box. We must have clicked in the bor
der/padding of one of these boxes. We | 823 // This inline actually has a line box. We must have clicked in the bor
der/padding of one of these boxes. We |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1433 | 1429 |
| 1434 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain
tInvalidationContainer, PaintInvalidationReason invalidationReason) const | 1430 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain
tInvalidationContainer, PaintInvalidationReason invalidationReason) const |
| 1435 { | 1431 { |
| 1436 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine
r, invalidationReason); | 1432 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine
r, invalidationReason); |
| 1437 | 1433 |
| 1438 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) | 1434 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) |
| 1439 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box, in
validationReason); | 1435 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box, in
validationReason); |
| 1440 } | 1436 } |
| 1441 | 1437 |
| 1442 } // namespace blink | 1438 } // namespace blink |
| OLD | NEW |