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 |