Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutObject.cpp

Issue 2643703002: Percent-width blocks cannot form a re-layout boundary. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc.
7 * All rights reserved. 7 * All rights reserved.
8 * Copyright (C) 2009 Google Inc. All rights reserved. 8 * Copyright (C) 2009 Google Inc. All rights reserved.
9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. 9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved.
10 * (http://www.torchmobile.com/) 10 * (http://www.torchmobile.com/)
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 // LayoutInline can't be relayout roots since LayoutBlockFlow is responsible 709 // LayoutInline can't be relayout roots since LayoutBlockFlow is responsible
710 // for layouting them. 710 // for layouting them.
711 if (object->isLayoutInline()) 711 if (object->isLayoutInline())
712 return false; 712 return false;
713 713
714 // Table parts can't be relayout roots since the table is responsible for 714 // Table parts can't be relayout roots since the table is responsible for
715 // layouting all the parts. 715 // layouting all the parts.
716 if (object->isTablePart()) 716 if (object->isTablePart())
717 return false; 717 return false;
718 718
719 if (object->style()->containsLayout() && object->style()->containsSize()) 719 const ComputedStyle* style = object->style();
720 if (style->containsLayout() && style->containsSize())
720 return true; 721 return true;
721 722
722 if (!object->hasOverflowClip()) 723 if (!object->hasOverflowClip())
723 return false; 724 return false;
724 725
725 if (object->style()->width().isIntrinsicOrAuto() || 726 // If either dimension is percent-based, intrinsic, or anything but fixed,
726 object->style()->height().isIntrinsicOrAuto() || 727 // this object cannot form a re-layout boundary. A non-fixed computed logical
727 object->style()->height().isPercentOrCalc()) 728 // height will allow the object to grow and shrink based on the content
729 // inside. The same goes for for logical width, if this objects is inside a
730 // shrink-to-fit container, for instance.
731 if (!style->width().isFixed() || !style->height().isFixed())
728 return false; 732 return false;
729 733
730 // Scrollbar parts can be removed during layout. Avoid the complexity of 734 // Scrollbar parts can be removed during layout. Avoid the complexity of
731 // having to deal with that. 735 // having to deal with that.
732 if (object->isLayoutScrollbarPart()) 736 if (object->isLayoutScrollbarPart())
733 return false; 737 return false;
734 738
735 // In general we can't relayout a flex item independently of its container; 739 // In general we can't relayout a flex item independently of its container;
736 // not only is the result incorrect due to the override size that's set, it 740 // not only is the result incorrect due to the override size that's set, it
737 // also messes with the cached main size on the flexbox. 741 // also messes with the cached main size on the flexbox.
(...skipping 2770 matching lines...) Expand 10 before | Expand all | Expand 10 after
3508 const blink::LayoutObject* root = object1; 3512 const blink::LayoutObject* root = object1;
3509 while (root->parent()) 3513 while (root->parent())
3510 root = root->parent(); 3514 root = root->parent();
3511 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); 3515 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0);
3512 } else { 3516 } else {
3513 WTFLogAlways("%s", "Cannot showLayoutTree. Root is (nil)"); 3517 WTFLogAlways("%s", "Cannot showLayoutTree. Root is (nil)");
3514 } 3518 }
3515 } 3519 }
3516 3520
3517 #endif 3521 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/css-intrinsic-dimensions/resize-inside-percent-width-overflow-hidden.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698