| 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 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
| 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
| 7 * Copyright (C) 2010 Google Inc. All rights reserved. | 7 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 2727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2738 | 2738 |
| 2739 void RenderBoxModelObject::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, Tra
nsformState& transformState) const | 2739 void RenderBoxModelObject::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, Tra
nsformState& transformState) const |
| 2740 { | 2740 { |
| 2741 // We don't expect to be called during layout. | 2741 // We don't expect to be called during layout. |
| 2742 ASSERT(!view() || !view()->layoutStateEnabled()); | 2742 ASSERT(!view() || !view()->layoutStateEnabled()); |
| 2743 | 2743 |
| 2744 RenderObject* o = container(); | 2744 RenderObject* o = container(); |
| 2745 if (!o) | 2745 if (!o) |
| 2746 return; | 2746 return; |
| 2747 | 2747 |
| 2748 // The point inside a box that's inside a region has its coordinates relativ
e to the region, | 2748 if (o->isRenderFlowThread()) |
| 2749 // not the FlowThread that is its container in the RenderObject tree. | 2749 transformState.move(o->columnOffset(LayoutPoint(transformState.mappedPoi
nt()))); |
| 2750 if (o->isRenderFlowThread() && isRenderBlock()) { | |
| 2751 // FIXME: switch to Box instead of Block when we'll have range informati
on for boxes as well, not just for blocks. | |
| 2752 RenderRegion* startRegion; | |
| 2753 RenderRegion* ignoredEndRegion; | |
| 2754 toRenderFlowThread(o)->getRegionRangeForBox(toRenderBlock(this), startRe
gion, ignoredEndRegion); | |
| 2755 // If there is no region to use the FlowThread, then there's no region r
ange for the content in that FlowThread. | |
| 2756 // An API like elementFromPoint might crash without this check. | |
| 2757 if (startRegion) | |
| 2758 o = startRegion; | |
| 2759 } | |
| 2760 | 2750 |
| 2761 o->mapAbsoluteToLocalPoint(mode, transformState); | 2751 o->mapAbsoluteToLocalPoint(mode, transformState); |
| 2762 | 2752 |
| 2763 LayoutSize containerOffset = offsetFromContainer(o, LayoutPoint()); | 2753 LayoutSize containerOffset = offsetFromContainer(o, LayoutPoint()); |
| 2764 | 2754 |
| 2765 if (!style()->hasOutOfFlowPosition() && o->hasColumns()) { | 2755 if (!style()->hasOutOfFlowPosition() && o->hasColumns()) { |
| 2766 RenderBlock* block = toRenderBlock(o); | 2756 RenderBlock* block = toRenderBlock(o); |
| 2767 LayoutPoint point(roundedLayoutPoint(transformState.mappedPoint())); | 2757 LayoutPoint point(roundedLayoutPoint(transformState.mappedPoint())); |
| 2768 point -= containerOffset; | 2758 point -= containerOffset; |
| 2769 block->adjustForColumnRect(containerOffset, point); | 2759 block->adjustForColumnRect(containerOffset, point); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2846 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); | 2836 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); |
| 2847 for (RenderObject* child = startChild; child && child != endChild; ) { | 2837 for (RenderObject* child = startChild; child && child != endChild; ) { |
| 2848 // Save our next sibling as moveChildTo will clear it. | 2838 // Save our next sibling as moveChildTo will clear it. |
| 2849 RenderObject* nextSibling = child->nextSibling(); | 2839 RenderObject* nextSibling = child->nextSibling(); |
| 2850 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); | 2840 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); |
| 2851 child = nextSibling; | 2841 child = nextSibling; |
| 2852 } | 2842 } |
| 2853 } | 2843 } |
| 2854 | 2844 |
| 2855 } // namespace WebCore | 2845 } // namespace WebCore |
| OLD | NEW |