| 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 3311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3322 LayoutUnit logicalLeftValue = 0; | 3322 LayoutUnit logicalLeftValue = 0; |
| 3323 | 3323 |
| 3324 const LayoutUnit containerRelativeLogicalWidth = containingBlockLogicalWidth
ForPositioned(containerBlock, 0, false); | 3324 const LayoutUnit containerRelativeLogicalWidth = containingBlockLogicalWidth
ForPositioned(containerBlock, 0, false); |
| 3325 | 3325 |
| 3326 bool logicalWidthIsAuto = logicalWidth.isIntrinsicOrAuto(); | 3326 bool logicalWidthIsAuto = logicalWidth.isIntrinsicOrAuto(); |
| 3327 bool logicalLeftIsAuto = logicalLeft.isAuto(); | 3327 bool logicalLeftIsAuto = logicalLeft.isAuto(); |
| 3328 bool logicalRightIsAuto = logicalRight.isAuto(); | 3328 bool logicalRightIsAuto = logicalRight.isAuto(); |
| 3329 RenderView* renderView = view(); | 3329 RenderView* renderView = view(); |
| 3330 LayoutUnit& marginLogicalLeftValue = style()->isLeftToRightDirection() ? com
putedValues.m_margins.m_start : computedValues.m_margins.m_end; | 3330 LayoutUnit& marginLogicalLeftValue = style()->isLeftToRightDirection() ? com
putedValues.m_margins.m_start : computedValues.m_margins.m_end; |
| 3331 LayoutUnit& marginLogicalRightValue = style()->isLeftToRightDirection() ? co
mputedValues.m_margins.m_end : computedValues.m_margins.m_start; | 3331 LayoutUnit& marginLogicalRightValue = style()->isLeftToRightDirection() ? co
mputedValues.m_margins.m_end : computedValues.m_margins.m_start; |
| 3332 | |
| 3333 if (!logicalLeftIsAuto && !logicalWidthIsAuto && !logicalRightIsAuto) { | 3332 if (!logicalLeftIsAuto && !logicalWidthIsAuto && !logicalRightIsAuto) { |
| 3334 /*----------------------------------------------------------------------
-*\ | 3333 /*----------------------------------------------------------------------
-*\ |
| 3335 * If none of the three is 'auto': If both 'margin-left' and 'margin- | 3334 * If none of the three is 'auto': If both 'margin-left' and 'margin- |
| 3336 * right' are 'auto', solve the equation under the extra constraint that | 3335 * right' are 'auto', solve the equation under the extra constraint that |
| 3337 * the two margins get equal values, unless this would make them negativ
e, | 3336 * the two margins get equal values, unless this would make them negativ
e, |
| 3338 * in which case when direction of the containing block is 'ltr' ('rtl')
, | 3337 * in which case when direction of the containing block is 'ltr' ('rtl')
, |
| 3339 * set 'margin-left' ('margin-right') to zero and solve for 'margin-righ
t' | 3338 * set 'margin-left' ('margin-right') to zero and solve for 'margin-righ
t' |
| 3340 * ('margin-left'). If one of 'margin-left' or 'margin-right' is 'auto', | 3339 * ('margin-left'). If one of 'margin-left' or 'margin-right' is 'auto', |
| 3341 * solve the equation for that value. If the values are over-constrained
, | 3340 * solve the equation for that value. If the values are over-constrained
, |
| 3342 * ignore the value for 'left' (in case the 'direction' property of the | 3341 * ignore the value for 'left' (in case the 'direction' property of the |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3479 if (containerBlock->isRenderInline() && !containerBlock->style()->isLeftToRi
ghtDirection()) { | 3478 if (containerBlock->isRenderInline() && !containerBlock->style()->isLeftToRi
ghtDirection()) { |
| 3480 const RenderInline* flow = toRenderInline(containerBlock); | 3479 const RenderInline* flow = toRenderInline(containerBlock); |
| 3481 InlineFlowBox* firstLine = flow->firstLineBox(); | 3480 InlineFlowBox* firstLine = flow->firstLineBox(); |
| 3482 InlineFlowBox* lastLine = flow->lastLineBox(); | 3481 InlineFlowBox* lastLine = flow->lastLineBox(); |
| 3483 if (firstLine && lastLine && firstLine != lastLine) { | 3482 if (firstLine && lastLine && firstLine != lastLine) { |
| 3484 computedValues.m_position = logicalLeftValue + marginLogicalLeftValu
e + lastLine->borderLogicalLeft() + (lastLine->logicalLeft() - firstLine->logica
lLeft()); | 3483 computedValues.m_position = logicalLeftValue + marginLogicalLeftValu
e + lastLine->borderLogicalLeft() + (lastLine->logicalLeft() - firstLine->logica
lLeft()); |
| 3485 return; | 3484 return; |
| 3486 } | 3485 } |
| 3487 } | 3486 } |
| 3488 | 3487 |
| 3488 if (containerBlock->isBox() && toRenderBox(containerBlock)->scrollsOverflowY
() && containerBlock->style()->shouldPlaceBlockDirectionScrollbarOnLogicalLeft()
) { |
| 3489 logicalLeftValue = logicalLeftValue + toRenderBox(containerBlock)->verti
calScrollbarWidth(); |
| 3490 } |
| 3491 |
| 3489 computedValues.m_position = logicalLeftValue + marginLogicalLeftValue; | 3492 computedValues.m_position = logicalLeftValue + marginLogicalLeftValue; |
| 3490 computeLogicalLeftPositionedOffset(computedValues.m_position, this, computed
Values.m_extent, containerBlock, containerLogicalWidth); | 3493 computeLogicalLeftPositionedOffset(computedValues.m_position, this, computed
Values.m_extent, containerBlock, containerLogicalWidth); |
| 3491 } | 3494 } |
| 3492 | 3495 |
| 3493 static void computeBlockStaticDistance(Length& logicalTop, Length& logicalBottom
, const RenderBox* child, const RenderBoxModelObject* containerBlock) | 3496 static void computeBlockStaticDistance(Length& logicalTop, Length& logicalBottom
, const RenderBox* child, const RenderBoxModelObject* containerBlock) |
| 3494 { | 3497 { |
| 3495 if (!logicalTop.isAuto() || !logicalBottom.isAuto()) | 3498 if (!logicalTop.isAuto() || !logicalBottom.isAuto()) |
| 3496 return; | 3499 return; |
| 3497 | 3500 |
| 3498 // FIXME: The static distance computation has not been patched for mixed wri
ting modes. | 3501 // FIXME: The static distance computation has not been patched for mixed wri
ting modes. |
| (...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4762 return 0; | 4765 return 0; |
| 4763 | 4766 |
| 4764 if (!layoutState && !flowThreadContainingBlock()) | 4767 if (!layoutState && !flowThreadContainingBlock()) |
| 4765 return 0; | 4768 return 0; |
| 4766 | 4769 |
| 4767 RenderBlock* containerBlock = containingBlock(); | 4770 RenderBlock* containerBlock = containingBlock(); |
| 4768 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); | 4771 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); |
| 4769 } | 4772 } |
| 4770 | 4773 |
| 4771 } // namespace WebCore | 4774 } // namespace WebCore |
| OLD | NEW |