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

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

Issue 2786463004: Paint backgrounds of a table section/row in one display item (Closed)
Patch Set: - Created 3 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. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc.
7 * All rights reserved. 7 * All rights reserved.
8 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 8 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 4892 matching lines...) Expand 10 before | Expand all | Expand 10 after
4903 top = std::max(top, -rect.y() + outlineOutset); 4903 top = std::max(top, -rect.y() + outlineOutset);
4904 right = std::max(right, rect.maxX() - size().width() + outlineOutset); 4904 right = std::max(right, rect.maxX() - size().width() + outlineOutset);
4905 bottom = std::max(bottom, rect.maxY() - size().height() + outlineOutset); 4905 bottom = std::max(bottom, rect.maxY() - size().height() + outlineOutset);
4906 left = std::max(left, -rect.x() + outlineOutset); 4906 left = std::max(left, -rect.x() + outlineOutset);
4907 } 4907 }
4908 4908
4909 return LayoutRectOutsets(top, right, bottom, left); 4909 return LayoutRectOutsets(top, right, bottom, left);
4910 } 4910 }
4911 4911
4912 DISABLE_CFI_PERF 4912 DISABLE_CFI_PERF
4913 void LayoutBox::addOverflowFromChild(LayoutBox* child, 4913 void LayoutBox::addOverflowFromChild(const LayoutBox& child,
4914 const LayoutSize& delta) { 4914 const LayoutSize& delta) {
4915 // Never allow flow threads to propagate overflow up to a parent. 4915 // Never allow flow threads to propagate overflow up to a parent.
4916 if (child->isLayoutFlowThread()) 4916 if (child.isLayoutFlowThread())
4917 return; 4917 return;
4918 4918
4919 // Only propagate layout overflow from the child if the child isn't clipping 4919 // Only propagate layout overflow from the child if the child isn't clipping
4920 // its overflow. If it is, then its overflow is internal to it, and we don't 4920 // its overflow. If it is, then its overflow is internal to it, and we don't
4921 // care about it. layoutOverflowRectForPropagation takes care of this and just 4921 // care about it. layoutOverflowRectForPropagation takes care of this and just
4922 // propagates the border box rect instead. 4922 // propagates the border box rect instead.
4923 LayoutRect childLayoutOverflowRect = 4923 LayoutRect childLayoutOverflowRect =
4924 child->layoutOverflowRectForPropagation(styleRef()); 4924 child.layoutOverflowRectForPropagation(styleRef());
4925 childLayoutOverflowRect.move(delta); 4925 childLayoutOverflowRect.move(delta);
4926 addLayoutOverflow(childLayoutOverflowRect); 4926 addLayoutOverflow(childLayoutOverflowRect);
4927 4927
4928 // Add in visual overflow from the child. Even if the child clips its 4928 // Add in visual overflow from the child. Even if the child clips its
4929 // overflow, it may still have visual overflow of its own set from box shadows 4929 // overflow, it may still have visual overflow of its own set from box shadows
4930 // or reflections. It is unnecessary to propagate this overflow if we are 4930 // or reflections. It is unnecessary to propagate this overflow if we are
4931 // clipping our own overflow. 4931 // clipping our own overflow.
4932 if (child->hasSelfPaintingLayer()) 4932 if (child.hasSelfPaintingLayer())
4933 return; 4933 return;
4934 LayoutRect childVisualOverflowRect = 4934 LayoutRect childVisualOverflowRect =
4935 child->visualOverflowRectForPropagation(styleRef()); 4935 child.visualOverflowRectForPropagation(styleRef());
4936 childVisualOverflowRect.move(delta); 4936 childVisualOverflowRect.move(delta);
4937 addContentsVisualOverflow(childVisualOverflowRect); 4937 addContentsVisualOverflow(childVisualOverflowRect);
4938 } 4938 }
4939 4939
4940 bool LayoutBox::hasTopOverflow() const { 4940 bool LayoutBox::hasTopOverflow() const {
4941 return !style()->isLeftToRightDirection() && !isHorizontalWritingMode(); 4941 return !style()->isLeftToRightDirection() && !isHorizontalWritingMode();
4942 } 4942 }
4943 4943
4944 bool LayoutBox::hasLeftOverflow() const { 4944 bool LayoutBox::hasLeftOverflow() const {
4945 return !style()->isLeftToRightDirection() && isHorizontalWritingMode(); 4945 return !style()->isLeftToRightDirection() && isHorizontalWritingMode();
(...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after
5753 5753
5754 void LayoutBox::MutableForPainting:: 5754 void LayoutBox::MutableForPainting::
5755 savePreviousContentBoxSizeAndLayoutOverflowRect() { 5755 savePreviousContentBoxSizeAndLayoutOverflowRect() {
5756 auto& rareData = layoutBox().ensureRareData(); 5756 auto& rareData = layoutBox().ensureRareData();
5757 rareData.m_hasPreviousContentBoxSizeAndLayoutOverflowRect = true; 5757 rareData.m_hasPreviousContentBoxSizeAndLayoutOverflowRect = true;
5758 rareData.m_previousContentBoxSize = layoutBox().contentBoxRect().size(); 5758 rareData.m_previousContentBoxSize = layoutBox().contentBoxRect().size();
5759 rareData.m_previousLayoutOverflowRect = layoutBox().layoutOverflowRect(); 5759 rareData.m_previousLayoutOverflowRect = layoutBox().layoutOverflowRect();
5760 } 5760 }
5761 5761
5762 } // namespace blink 5762 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBox.h ('k') | third_party/WebKit/Source/core/layout/LayoutTable.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698