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 2381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2392 return intrinsicContentHeight; | 2392 return intrinsicContentHeight; |
2393 } | 2393 } |
2394 if (logicalHeightLength.isFillAvailable()) | 2394 if (logicalHeightLength.isFillAvailable()) |
2395 return containingBlock()->availableLogicalHeight(ExcludeMarginBorderPadd ing) - borderAndPadding; | 2395 return containingBlock()->availableLogicalHeight(ExcludeMarginBorderPadd ing) - borderAndPadding; |
2396 ASSERT_NOT_REACHED(); | 2396 ASSERT_NOT_REACHED(); |
2397 return 0; | 2397 return 0; |
2398 } | 2398 } |
2399 | 2399 |
2400 LayoutUnit LayoutBox::computeContentAndScrollbarLogicalHeightUsing(SizeType heig htType, const Length& height, LayoutUnit intrinsicContentHeight) const | 2400 LayoutUnit LayoutBox::computeContentAndScrollbarLogicalHeightUsing(SizeType heig htType, const Length& height, LayoutUnit intrinsicContentHeight) const |
2401 { | 2401 { |
2402 if (isOutOfFlowPositioned() && height.isAuto() && !style()->logicalTop().isA uto() && !style()->logicalBottom().isAuto()) { | |
2403 LogicalExtentComputedValues computedValues; | |
2404 computeLogicalHeight(logicalHeight(), 0, computedValues); | |
mstensho (USE GERRIT)
2015/10/02 09:08:50
I don't think this is the right place to do this.
cbiesinger
2015/10/02 16:40:19
Yes, this is handled in computePositionedLogicalHe
Manuel Rego
2016/04/08 07:53:14
It seems this is not needed anymore, so I'm removi
| |
2405 return computedValues.m_extent - borderAndPaddingLogicalHeight() - scrol lbarLogicalHeight(); | |
2406 } | |
2407 | |
2402 if (height.isAuto()) | 2408 if (height.isAuto()) |
2403 return heightType == MinSize ? 0 : -1; | 2409 return heightType == MinSize ? 0 : -1; |
2404 // FIXME(cbiesinger): The css-sizing spec is considering changing what min-c ontent/max-content should resolve to. | 2410 // FIXME(cbiesinger): The css-sizing spec is considering changing what min-c ontent/max-content should resolve to. |
2405 // If that happens, this code will have to change. | 2411 // If that happens, this code will have to change. |
2406 if (height.isIntrinsic()) { | 2412 if (height.isIntrinsic()) { |
2407 if (intrinsicContentHeight == -1) | 2413 if (intrinsicContentHeight == -1) |
2408 return -1; // Intrinsic height isn't available. | 2414 return -1; // Intrinsic height isn't available. |
2409 return computeIntrinsicLogicalContentHeightUsing(height, intrinsicConten tHeight, borderAndPaddingLogicalHeight()) + scrollbarLogicalHeight(); | 2415 return computeIntrinsicLogicalContentHeightUsing(height, intrinsicConten tHeight, borderAndPaddingLogicalHeight()) + scrollbarLogicalHeight(); |
2410 } | 2416 } |
2411 if (height.isFixed()) | 2417 if (height.isFixed()) |
(...skipping 1844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4256 const LayoutBox* box = &layoutBox; | 4262 const LayoutBox* box = &layoutBox; |
4257 while (!box->isLayoutView() && !box->isOutOfFlowPositioned() | 4263 while (!box->isLayoutView() && !box->isOutOfFlowPositioned() |
4258 && (box->style()->logicalWidth().isAuto() || box->isAnonymousBlock()) | 4264 && (box->style()->logicalWidth().isAuto() || box->isAnonymousBlock()) |
4259 && !box->hasOverrideContainingBlockLogicalWidth()) | 4265 && !box->hasOverrideContainingBlockLogicalWidth()) |
4260 box = box->containingBlock(); | 4266 box = box->containingBlock(); |
4261 | 4267 |
4262 if (box->style()->logicalWidth().isFixed()) | 4268 if (box->style()->logicalWidth().isFixed()) |
4263 return true; | 4269 return true; |
4264 if (box->isLayoutView()) | 4270 if (box->isLayoutView()) |
4265 return true; | 4271 return true; |
4266 // The size of the containing block of an absolutely positioned element is a lways definite with respect to that | 4272 if (box->isOutOfFlowPositioned() && box->style()->logicalWidth().isAuto() && !box->style()->logicalLeft().isAuto() && !box->style()->logicalRight().isAuto() ) |
mstensho (USE GERRIT)
2015/10/02 09:08:50
The box->style()->logicalWidth().isAuto() confuses
cbiesinger
2015/10/02 16:40:19
I too am skeptical that this is correct... do you
Manuel Rego
2016/04/08 07:53:14
Yeah, we don't need to check if width is auto too,
| |
4267 // element (http://dev.w3.org/csswg/css-sizing-3/#definite). | |
4268 if (box->isOutOfFlowPositioned()) | |
4269 return true; | 4273 return true; |
4270 if (box->hasOverrideContainingBlockLogicalWidth()) | 4274 if (box->hasOverrideContainingBlockLogicalWidth()) |
4271 return box->overrideContainingBlockContentLogicalWidth() != -1; | 4275 return box->overrideContainingBlockContentLogicalWidth() != -1; |
4272 if (box->style()->logicalWidth().hasPercent()) | 4276 if (box->style()->logicalWidth().hasPercent()) |
4273 return logicalWidthIsResolvable(*box->containingBlock()); | 4277 return logicalWidthIsResolvable(*box->containingBlock()); |
4274 | 4278 |
4275 return false; | 4279 return false; |
4276 } | 4280 } |
4277 | 4281 |
4278 bool LayoutBox::hasDefiniteLogicalWidth() const | 4282 bool LayoutBox::hasDefiniteLogicalWidth() const |
4279 { | 4283 { |
4280 return logicalWidthIsResolvable(*this); | 4284 return logicalWidthIsResolvable(*this); |
4281 } | 4285 } |
4282 | 4286 |
4283 bool LayoutBox::percentageLogicalHeightIsResolvable() const | 4287 bool LayoutBox::percentageLogicalHeightIsResolvable() const |
4284 { | 4288 { |
4285 Length fakeLength(100, Percent); | 4289 Length fakeLength(100, Percent); |
4286 return computePercentageLogicalHeight(fakeLength) != -1; | 4290 return computePercentageLogicalHeight(fakeLength) != -1; |
4287 } | 4291 } |
4288 | 4292 |
4289 bool LayoutBox::hasDefiniteLogicalHeight() const | 4293 bool LayoutBox::hasDefiniteLogicalHeight() const |
4290 { | 4294 { |
4291 const Length& logicalHeight = style()->logicalHeight(); | 4295 const Length& logicalHeight = style()->logicalHeight(); |
4292 if (logicalHeight.isIntrinsicOrAuto()) | |
4293 return false; | |
4294 if (logicalHeight.isFixed()) | 4296 if (logicalHeight.isFixed()) |
4295 return true; | 4297 return true; |
4296 // The size of the containing block of an absolutely positioned element is a lways definite with respect to that | 4298 if (isOutOfFlowPositioned() && logicalHeight.isAuto() && !style()->logicalTo p().isAuto() && !style()->logicalBottom().isAuto()) |
mstensho (USE GERRIT)
2015/10/02 09:08:50
Same question as in logicalWidthIsResolvable().
cbiesinger
2015/10/02 16:40:19
As I wrote in the other patch:
I don't believe tha
Manuel Rego
2016/04/08 07:53:14
Again I've removed here the condition to check if
| |
4297 // element (http://dev.w3.org/csswg/css-sizing-3/#definite). | |
4298 if (isOutOfFlowPositioned()) | |
4299 return true; | 4299 return true; |
4300 if (hasOverrideContainingBlockLogicalHeight()) | 4300 if (hasOverrideContainingBlockLogicalHeight()) |
4301 return overrideContainingBlockContentLogicalHeight() != -1; | 4301 return overrideContainingBlockContentLogicalHeight() != -1; |
4302 if (logicalHeight.isIntrinsicOrAuto()) | |
4303 return false; | |
4302 | 4304 |
4303 return percentageLogicalHeightIsResolvable(); | 4305 return percentageLogicalHeightIsResolvable(); |
4304 } | 4306 } |
4305 | 4307 |
4306 bool LayoutBox::hasUnsplittableScrollingOverflow() const | 4308 bool LayoutBox::hasUnsplittableScrollingOverflow() const |
4307 { | 4309 { |
4308 // We will paginate as long as we don't scroll overflow in the pagination di rection. | 4310 // We will paginate as long as we don't scroll overflow in the pagination di rection. |
4309 bool isHorizontal = isHorizontalWritingMode(); | 4311 bool isHorizontal = isHorizontalWritingMode(); |
4310 if ((isHorizontal && !scrollsOverflowY()) || (!isHorizontal && !scrollsOverf lowX())) | 4312 if ((isHorizontal && !scrollsOverflowY()) || (!isHorizontal && !scrollsOverf lowX())) |
4311 return false; | 4313 return false; |
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4754 StyleImage* borderImage = style()->borderImage().image(); | 4756 StyleImage* borderImage = style()->borderImage().image(); |
4755 return borderImage && borderImage->canRender(*this, style()->effectiveZoom() ) && borderImage->isLoaded(); | 4757 return borderImage && borderImage->canRender(*this, style()->effectiveZoom() ) && borderImage->isLoaded(); |
4756 } | 4758 } |
4757 | 4759 |
4758 ShapeOutsideInfo* LayoutBox::shapeOutsideInfo() const | 4760 ShapeOutsideInfo* LayoutBox::shapeOutsideInfo() const |
4759 { | 4761 { |
4760 return ShapeOutsideInfo::isEnabledFor(*this) ? ShapeOutsideInfo::info(*this) : nullptr; | 4762 return ShapeOutsideInfo::isEnabledFor(*this) ? ShapeOutsideInfo::info(*this) : nullptr; |
4761 } | 4763 } |
4762 | 4764 |
4763 } // namespace blink | 4765 } // namespace blink |
OLD | NEW |