| 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, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
| 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. 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 3066 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3077 { | 3077 { |
| 3078 if (!logicalLeft.isAuto() || !logicalRight.isAuto()) | 3078 if (!logicalLeft.isAuto() || !logicalRight.isAuto()) |
| 3079 return; | 3079 return; |
| 3080 | 3080 |
| 3081 // FIXME: The static distance computation has not been patched for mixed wri
ting modes yet. | 3081 // FIXME: The static distance computation has not been patched for mixed wri
ting modes yet. |
| 3082 if (child->parent()->style()->direction() == LTR) { | 3082 if (child->parent()->style()->direction() == LTR) { |
| 3083 LayoutUnit staticPosition = child->layer()->staticInlinePosition() - con
tainerBlock->borderLogicalLeft(); | 3083 LayoutUnit staticPosition = child->layer()->staticInlinePosition() - con
tainerBlock->borderLogicalLeft(); |
| 3084 for (RenderObject* curr = child->parent(); curr && curr != containerBloc
k; curr = curr->container()) { | 3084 for (RenderObject* curr = child->parent(); curr && curr != containerBloc
k; curr = curr->container()) { |
| 3085 if (curr->isBox()) { | 3085 if (curr->isBox()) { |
| 3086 staticPosition += toRenderBox(curr)->logicalLeft(); | 3086 staticPosition += toRenderBox(curr)->logicalLeft(); |
| 3087 if (toRenderBox(curr)->isRelPositioned()) |
| 3088 staticPosition += toRenderBox(curr)->relativePositionOffset(
).width(); |
| 3087 if (region && curr->isRenderBlock()) { | 3089 if (region && curr->isRenderBlock()) { |
| 3088 const RenderBlock* cb = toRenderBlock(curr); | 3090 const RenderBlock* cb = toRenderBlock(curr); |
| 3089 region = cb->clampToStartAndEndRegions(region); | 3091 region = cb->clampToStartAndEndRegions(region); |
| 3090 RenderBoxRegionInfo* boxInfo = cb->renderBoxRegionInfo(regio
n); | 3092 RenderBoxRegionInfo* boxInfo = cb->renderBoxRegionInfo(regio
n); |
| 3091 if (boxInfo) | 3093 if (boxInfo) |
| 3092 staticPosition += boxInfo->logicalLeft(); | 3094 staticPosition += boxInfo->logicalLeft(); |
| 3093 } | 3095 } |
| 3096 } else if (curr->isInline()) { |
| 3097 if (curr->isRelPositioned()) { |
| 3098 if (!curr->style()->logicalLeft().isAuto()) |
| 3099 staticPosition += curr->style()->logicalLeft().value(); |
| 3100 else |
| 3101 staticPosition -= curr->style()->logicalRight().value(); |
| 3102 } |
| 3094 } | 3103 } |
| 3095 } | 3104 } |
| 3096 logicalLeft.setValue(Fixed, staticPosition); | 3105 logicalLeft.setValue(Fixed, staticPosition); |
| 3097 } else { | 3106 } else { |
| 3098 RenderBox* enclosingBox = child->parent()->enclosingBox(); | 3107 RenderBox* enclosingBox = child->parent()->enclosingBox(); |
| 3099 LayoutUnit staticPosition = child->layer()->staticInlinePosition() + con
tainerLogicalWidth + containerBlock->borderLogicalLeft(); | 3108 LayoutUnit staticPosition = child->layer()->staticInlinePosition() + con
tainerLogicalWidth + containerBlock->borderLogicalLeft(); |
| 3100 for (RenderObject* curr = enclosingBox; curr; curr = curr->container())
{ | 3109 for (RenderObject* curr = child->parent(); curr; curr = curr->container(
)) { |
| 3101 if (curr->isBox()) { | 3110 if (curr->isBox()) { |
| 3102 if (curr != containerBlock) | 3111 if (curr != containerBlock) { |
| 3103 staticPosition -= toRenderBox(curr)->logicalLeft(); | 3112 staticPosition -= toRenderBox(curr)->logicalLeft(); |
| 3113 if (toRenderBox(curr)->isRelPositioned()) |
| 3114 staticPosition -= toRenderBox(curr)->relativePositionOff
set().width(); |
| 3115 } |
| 3104 if (curr == enclosingBox) | 3116 if (curr == enclosingBox) |
| 3105 staticPosition -= enclosingBox->logicalWidth(); | 3117 staticPosition -= enclosingBox->logicalWidth(); |
| 3106 if (region && curr->isRenderBlock()) { | 3118 if (region && curr->isRenderBlock()) { |
| 3107 const RenderBlock* cb = toRenderBlock(curr); | 3119 const RenderBlock* cb = toRenderBlock(curr); |
| 3108 region = cb->clampToStartAndEndRegions(region); | 3120 region = cb->clampToStartAndEndRegions(region); |
| 3109 RenderBoxRegionInfo* boxInfo = cb->renderBoxRegionInfo(regio
n); | 3121 RenderBoxRegionInfo* boxInfo = cb->renderBoxRegionInfo(regio
n); |
| 3110 if (boxInfo) { | 3122 if (boxInfo) { |
| 3111 if (curr != containerBlock) | 3123 if (curr != containerBlock) |
| 3112 staticPosition -= cb->logicalWidth() - (boxInfo->log
icalLeft() + boxInfo->logicalWidth()); | 3124 staticPosition -= cb->logicalWidth() - (boxInfo->log
icalLeft() + boxInfo->logicalWidth()); |
| 3113 if (curr == enclosingBox) | 3125 if (curr == enclosingBox) |
| 3114 staticPosition += enclosingBox->logicalWidth() - box
Info->logicalWidth(); | 3126 staticPosition += enclosingBox->logicalWidth() - box
Info->logicalWidth(); |
| 3115 } | 3127 } |
| 3116 } | 3128 } |
| 3129 } else if (curr->isInline()) { |
| 3130 if (curr->isRelPositioned()) { |
| 3131 if (!curr->style()->logicalLeft().isAuto()) |
| 3132 staticPosition -= curr->style()->logicalLeft().value(); |
| 3133 else |
| 3134 staticPosition += curr->style()->logicalRight().value(); |
| 3135 } |
| 3117 } | 3136 } |
| 3118 if (curr == containerBlock) | 3137 if (curr == containerBlock) |
| 3119 break; | 3138 break; |
| 3120 } | 3139 } |
| 3121 logicalRight.setValue(Fixed, staticPosition); | 3140 logicalRight.setValue(Fixed, staticPosition); |
| 3122 } | 3141 } |
| 3123 } | 3142 } |
| 3124 | 3143 |
| 3125 void RenderBox::computePositionedLogicalWidth(LogicalExtentComputedValues& compu
tedValues, RenderRegion* region) const | 3144 void RenderBox::computePositionedLogicalWidth(LogicalExtentComputedValues& compu
tedValues, RenderRegion* region) const |
| 3126 { | 3145 { |
| (...skipping 1595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4722 return 0; | 4741 return 0; |
| 4723 | 4742 |
| 4724 if (!layoutState && !flowThreadContainingBlock()) | 4743 if (!layoutState && !flowThreadContainingBlock()) |
| 4725 return 0; | 4744 return 0; |
| 4726 | 4745 |
| 4727 RenderBlock* containerBlock = containingBlock(); | 4746 RenderBlock* containerBlock = containingBlock(); |
| 4728 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); | 4747 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); |
| 4729 } | 4748 } |
| 4730 | 4749 |
| 4731 } // namespace WebCore | 4750 } // namespace WebCore |
| OLD | NEW |