Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> | 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> |
| 3 * 1999 Lars Knoll <knoll@kde.org> | 3 * 1999 Lars Knoll <knoll@kde.org> |
| 4 * 1999 Antti Koivisto <koivisto@kde.org> | 4 * 1999 Antti Koivisto <koivisto@kde.org> |
| 5 * 2000 Dirk Mueller <mueller@kde.org> | 5 * 2000 Dirk Mueller <mueller@kde.org> |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
| 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 9 * Copyright (C) 2009 Google Inc. All rights reserved. | 9 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 10 * | 10 * |
| (...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 827 lifecycle().advanceTo(DocumentLifecycle::InPerformLayout); | 827 lifecycle().advanceTo(DocumentLifecycle::InPerformLayout); |
| 828 | 828 |
| 829 TemporaryChange<bool> changeInPerformLayout(m_inPerformLayout, true); | 829 TemporaryChange<bool> changeInPerformLayout(m_inPerformLayout, true); |
| 830 | 830 |
| 831 // performLayout is the actual guts of layout(). | 831 // performLayout is the actual guts of layout(). |
| 832 // FIXME: The 300 other lines in layout() probably belong in other helper fu nctions | 832 // FIXME: The 300 other lines in layout() probably belong in other helper fu nctions |
| 833 // so that a single human could understand what layout() is actually doing. | 833 // so that a single human could understand what layout() is actually doing. |
| 834 | 834 |
| 835 forceLayoutParentViewIfNeeded(); | 835 forceLayoutParentViewIfNeeded(); |
| 836 | 836 |
| 837 if (hasOrthogonalWritingModeRoots()) | |
| 838 layoutOrthogonalWritingModeRoots(); | |
| 839 | |
| 837 if (inSubtreeLayout) { | 840 if (inSubtreeLayout) { |
| 838 if (m_analyzer) | 841 if (m_analyzer) |
| 839 m_analyzer->increment(LayoutAnalyzer::PerformLayoutRootLayoutObjects , m_layoutSubtreeRootList.size()); | 842 m_analyzer->increment(LayoutAnalyzer::PerformLayoutRootLayoutObjects , m_layoutSubtreeRootList.size()); |
| 840 while (LayoutObject* root = m_layoutSubtreeRootList.takeDeepestRoot()) { | 843 while (LayoutObject* root = m_layoutSubtreeRootList.takeDeepestRoot()) { |
| 841 if (!root->needsLayout()) | 844 if (!root->needsLayout()) |
| 842 continue; | 845 continue; |
| 843 layoutFromRootObject(*root); | 846 layoutFromRootObject(*root); |
| 844 | 847 |
| 845 // We need to ensure that we mark up all layoutObjects up to the Lay outView | 848 // We need to ensure that we mark up all layoutObjects up to the Lay outView |
| 846 // for paint invalidation. This simplifies our code as we just alway s | 849 // for paint invalidation. This simplifies our code as we just alway s |
| (...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1689 void FrameView::clearLayoutSubtreeRoot(const LayoutObject& root) | 1692 void FrameView::clearLayoutSubtreeRoot(const LayoutObject& root) |
| 1690 { | 1693 { |
| 1691 m_layoutSubtreeRootList.removeRoot(const_cast<LayoutObject&>(root)); | 1694 m_layoutSubtreeRootList.removeRoot(const_cast<LayoutObject&>(root)); |
| 1692 } | 1695 } |
| 1693 | 1696 |
| 1694 void FrameView::clearLayoutSubtreeRootsAndMarkContainingBlocks() | 1697 void FrameView::clearLayoutSubtreeRootsAndMarkContainingBlocks() |
| 1695 { | 1698 { |
| 1696 m_layoutSubtreeRootList.clearAndMarkContainingBlocksForLayout(); | 1699 m_layoutSubtreeRootList.clearAndMarkContainingBlocksForLayout(); |
| 1697 } | 1700 } |
| 1698 | 1701 |
| 1702 void FrameView::addOrthogonalWritingModeRoot(LayoutBox& root) | |
| 1703 { | |
| 1704 m_orthogonalWritingModeRootList.addRoot(root); | |
| 1705 } | |
| 1706 | |
| 1707 void FrameView::removeOrthogonalWritingModeRoot(LayoutBox& root) | |
| 1708 { | |
| 1709 m_orthogonalWritingModeRootList.removeRoot(root); | |
| 1710 } | |
| 1711 | |
| 1712 bool FrameView::hasOrthogonalWritingModeRoots() const | |
| 1713 { | |
| 1714 return !m_orthogonalWritingModeRootList.isEmpty(); | |
| 1715 } | |
| 1716 | |
| 1717 void FrameView::layoutOrthogonalWritingModeRoots() | |
| 1718 { | |
| 1719 while (LayoutObject* root = m_orthogonalWritingModeRootList.takeDeepestRoot( )) { | |
| 1720 ASSERT(root->isBox() && toLayoutBox(*root).isOrthogonalWritingModeRoot() ); | |
| 1721 if (!root->needsLayout() | |
| 1722 || root->isOutOfFlowPositioned() | |
| 1723 || root->isColumnSpanAll() | |
| 1724 || !root->styleRef().logicalHeight().isIntrinsicOrAuto()) { | |
|
ojan
2016/01/22 02:22:35
If it's any of these last three, maybe we just sho
kojii
2016/01/22 02:33:51
Yeah, thought about it. But then we'll need to che
| |
| 1725 continue; | |
| 1726 } | |
| 1727 LayoutState layoutState(*root); | |
|
ojan
2016/01/22 02:22:35
I'm not 100% sure creating a LayoutState without d
kojii
2016/01/22 02:33:51
Yeah, wasn't sure either, but reading around and t
| |
| 1728 root->layout(); | |
| 1729 } | |
| 1730 } | |
| 1731 | |
| 1699 void FrameView::scheduleRelayout() | 1732 void FrameView::scheduleRelayout() |
| 1700 { | 1733 { |
| 1701 ASSERT(m_frame->view() == this); | 1734 ASSERT(m_frame->view() == this); |
| 1702 | 1735 |
| 1703 if (!m_layoutSchedulingEnabled) | 1736 if (!m_layoutSchedulingEnabled) |
| 1704 return; | 1737 return; |
| 1705 if (!needsLayout()) | 1738 if (!needsLayout()) |
| 1706 return; | 1739 return; |
| 1707 if (!m_frame->document()->shouldScheduleLayout()) | 1740 if (!m_frame->document()->shouldScheduleLayout()) |
| 1708 return; | 1741 return; |
| (...skipping 2299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4008 return m_hiddenForThrottling && m_crossOriginForThrottling; | 4041 return m_hiddenForThrottling && m_crossOriginForThrottling; |
| 4009 } | 4042 } |
| 4010 | 4043 |
| 4011 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const | 4044 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const |
| 4012 { | 4045 { |
| 4013 ASSERT(layoutView()); | 4046 ASSERT(layoutView()); |
| 4014 return *layoutView(); | 4047 return *layoutView(); |
| 4015 } | 4048 } |
| 4016 | 4049 |
| 4017 } // namespace blink | 4050 } // namespace blink |
| OLD | NEW |