| 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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 return snapSizeToPixel(offsetWidth(), x() + clientLeft()); | 346 return snapSizeToPixel(offsetWidth(), x() + clientLeft()); |
| 347 } | 347 } |
| 348 | 348 |
| 349 int RenderBox::pixelSnappedOffsetHeight() const | 349 int RenderBox::pixelSnappedOffsetHeight() const |
| 350 { | 350 { |
| 351 return snapSizeToPixel(offsetHeight(), y() + clientTop()); | 351 return snapSizeToPixel(offsetHeight(), y() + clientTop()); |
| 352 } | 352 } |
| 353 | 353 |
| 354 bool RenderBox::canDetermineWidthWithoutLayout() const | 354 bool RenderBox::canDetermineWidthWithoutLayout() const |
| 355 { | 355 { |
| 356 // FIXME: This optimization is incorrect as written. | 356 // FIXME: Remove function and callers. |
| 357 // We need to be able to opt-in to this behavior only when | |
| 358 // it's guarentted correct. | |
| 359 // Until then disabling this optimization to be safe. | |
| 360 return false; | 357 return false; |
| 361 | |
| 362 // FIXME: There are likely many subclasses of RenderBlockFlow which | |
| 363 // cannot determine their layout just from style! | |
| 364 // Perhaps we should create a "PlainRenderBlockFlow" | |
| 365 // and move this optimization there? | |
| 366 if (!isRenderBlockFlow() | |
| 367 // Flexbox items can be expanded beyond their width. | |
| 368 || isFlexItemIncludingDeprecated() | |
| 369 // Table Layout controls cell size and can expand beyond width. | |
| 370 || isTableCell()) | |
| 371 return false; | |
| 372 | |
| 373 RenderStyle* style = this->style(); | |
| 374 return style->width().isFixed() | |
| 375 && style->minWidth().isFixed() | |
| 376 && (style->maxWidth().isUndefined() || style->maxWidth().isFixed()) | |
| 377 && style->paddingLeft().isFixed() | |
| 378 && style->paddingRight().isFixed() | |
| 379 && style->boxSizing() == CONTENT_BOX; | |
| 380 } | 358 } |
| 381 | 359 |
| 382 LayoutUnit RenderBox::fixedOffsetWidth() const | 360 LayoutUnit RenderBox::fixedOffsetWidth() const |
| 383 { | 361 { |
| 384 ASSERT(canDetermineWidthWithoutLayout()); | 362 ASSERT(canDetermineWidthWithoutLayout()); |
| 385 | 363 |
| 386 RenderStyle* style = this->style(); | 364 RenderStyle* style = this->style(); |
| 387 | 365 |
| 388 LayoutUnit width = std::max(LayoutUnit(style->minWidth().value()), LayoutUni
t(style->width().value())); | 366 LayoutUnit width = std::max(LayoutUnit(style->minWidth().value()), LayoutUni
t(style->width().value())); |
| 389 if (style->maxWidth().isFixed()) | 367 if (style->maxWidth().isFixed()) |
| (...skipping 4315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4705 return 0; | 4683 return 0; |
| 4706 | 4684 |
| 4707 if (!layoutState && !flowThreadContainingBlock()) | 4685 if (!layoutState && !flowThreadContainingBlock()) |
| 4708 return 0; | 4686 return 0; |
| 4709 | 4687 |
| 4710 RenderBlock* containerBlock = containingBlock(); | 4688 RenderBlock* containerBlock = containingBlock(); |
| 4711 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); | 4689 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); |
| 4712 } | 4690 } |
| 4713 | 4691 |
| 4714 } // namespace WebCore | 4692 } // namespace WebCore |
| OLD | NEW |