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

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

Issue 1846753004: Fix wrong box-shadow visual overflow with flipped blocks writing mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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) 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 3999 matching lines...) Expand 10 before | Expand all | Expand 10 after
4010 } 4010 }
4011 4011
4012 if (style()->hasBorderImageOutsets()) { 4012 if (style()->hasBorderImageOutsets()) {
4013 LayoutRectOutsets borderOutsets = style()->borderImageOutsets(); 4013 LayoutRectOutsets borderOutsets = style()->borderImageOutsets();
4014 top = std::max(top, borderOutsets.top()); 4014 top = std::max(top, borderOutsets.top());
4015 right = std::max(right, borderOutsets.right()); 4015 right = std::max(right, borderOutsets.right());
4016 bottom = std::max(bottom, borderOutsets.bottom()); 4016 bottom = std::max(bottom, borderOutsets.bottom());
4017 left = std::max(left, borderOutsets.left()); 4017 left = std::max(left, borderOutsets.left());
4018 } 4018 }
4019 4019
4020 // Box-shadow and border-image-outsets are in physical direction. Flip into block direction.
4021 if (UNLIKELY(hasFlippedBlocksWritingMode())) {
4022 if (isHorizontalWritingMode())
4023 std::swap(top, bottom);
4024 else
4025 std::swap(left, right);
4026 }
4027
4020 if (style()->hasOutline()) { 4028 if (style()->hasOutline()) {
4021 Vector<LayoutRect> outlineRects; 4029 Vector<LayoutRect> outlineRects;
4022 // The result rects are in coordinates of this object's border box. 4030 // The result rects are in coordinates of this object's border box.
4023 addOutlineRects(outlineRects, LayoutPoint(), outlineRectsShouldIncludeBl ockVisualOverflow()); 4031 addOutlineRects(outlineRects, LayoutPoint(), outlineRectsShouldIncludeBl ockVisualOverflow());
4024 LayoutRect rect = unionRectEvenIfEmpty(outlineRects); 4032 LayoutRect rect = unionRectEvenIfEmpty(outlineRects);
4025 int outlineOutset = style()->outlineOutsetExtent(); 4033 int outlineOutset = style()->outlineOutsetExtent();
4026 top = std::max(top, -rect.y() + outlineOutset); 4034 top = std::max(top, -rect.y() + outlineOutset);
4027 right = std::max(right, rect.maxX() - size().width() + outlineOutset); 4035 right = std::max(right, rect.maxX() - size().width() + outlineOutset);
4028 bottom = std::max(bottom, rect.maxY() - size().height() + outlineOutset) ; 4036 bottom = std::max(bottom, rect.maxY() - size().height() + outlineOutset) ;
4029 left = std::max(left, -rect.x() + outlineOutset); 4037 left = std::max(left, -rect.x() + outlineOutset);
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
4703 4711
4704 void LayoutBox::clearPercentHeightDescendants() 4712 void LayoutBox::clearPercentHeightDescendants()
4705 { 4713 {
4706 for (LayoutObject* curr = slowFirstChild(); curr; curr = curr->nextInPreOrde r(this)) { 4714 for (LayoutObject* curr = slowFirstChild(); curr; curr = curr->nextInPreOrde r(this)) {
4707 if (curr->isBox()) 4715 if (curr->isBox())
4708 toLayoutBox(curr)->removeFromPercentHeightContainer(); 4716 toLayoutBox(curr)->removeFromPercentHeightContainer();
4709 } 4717 }
4710 } 4718 }
4711 4719
4712 } // namespace blink 4720 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698