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) 2007 David Smith (catfish.man@gmail.com) | 4 * (C) 2007 David Smith (catfish.man@gmail.com) |
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 1773 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1784 return; | 1784 return; |
1785 | 1785 |
1786 if (hasColumns()) | 1786 if (hasColumns()) |
1787 view()->layoutState()->clearPaginationInformation(); // Positioned objec
ts are not part of the column flow, so they don't paginate with the columns. | 1787 view()->layoutState()->clearPaginationInformation(); // Positioned objec
ts are not part of the column flow, so they don't paginate with the columns. |
1788 | 1788 |
1789 RenderBox* r; | 1789 RenderBox* r; |
1790 TrackedRendererListHashSet::iterator end = positionedDescendants->end(); | 1790 TrackedRendererListHashSet::iterator end = positionedDescendants->end(); |
1791 for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(
); it != end; ++it) { | 1791 for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(
); it != end; ++it) { |
1792 r = *it; | 1792 r = *it; |
1793 | 1793 |
| 1794 LayoutRectRecorder recorder(*r); |
| 1795 |
1794 SubtreeLayoutScope layoutScope(r); | 1796 SubtreeLayoutScope layoutScope(r); |
1795 // A fixed position element with an absolute positioned ancestor has no
way of knowing if the latter has changed position. So | 1797 // A fixed position element with an absolute positioned ancestor has no
way of knowing if the latter has changed position. So |
1796 // if this is a fixed position element, mark it for layout if it has an
abspos ancestor and needs to move with that ancestor, i.e. | 1798 // if this is a fixed position element, mark it for layout if it has an
abspos ancestor and needs to move with that ancestor, i.e. |
1797 // it has static position. | 1799 // it has static position. |
1798 markFixedPositionObjectForLayoutIfNeeded(r, layoutScope); | 1800 markFixedPositionObjectForLayoutIfNeeded(r, layoutScope); |
1799 if (fixedPositionObjectsOnly) { | 1801 if (fixedPositionObjectsOnly) { |
1800 r->layoutIfNeeded(); | 1802 r->layoutIfNeeded(); |
1801 continue; | 1803 continue; |
1802 } | 1804 } |
1803 | 1805 |
(...skipping 21 matching lines...) Expand all Loading... |
1825 LayoutUnit oldLogicalTop = 0; | 1827 LayoutUnit oldLogicalTop = 0; |
1826 bool needsBlockDirectionLocationSetBeforeLayout = r->needsLayout() && vi
ew()->layoutState()->needsBlockDirectionLocationSetBeforeLayout(); | 1828 bool needsBlockDirectionLocationSetBeforeLayout = r->needsLayout() && vi
ew()->layoutState()->needsBlockDirectionLocationSetBeforeLayout(); |
1827 if (needsBlockDirectionLocationSetBeforeLayout) { | 1829 if (needsBlockDirectionLocationSetBeforeLayout) { |
1828 if (isHorizontalWritingMode() == r->isHorizontalWritingMode()) | 1830 if (isHorizontalWritingMode() == r->isHorizontalWritingMode()) |
1829 r->updateLogicalHeight(); | 1831 r->updateLogicalHeight(); |
1830 else | 1832 else |
1831 r->updateLogicalWidth(); | 1833 r->updateLogicalWidth(); |
1832 oldLogicalTop = logicalTopForChild(r); | 1834 oldLogicalTop = logicalTopForChild(r); |
1833 } | 1835 } |
1834 | 1836 |
1835 r->layoutIfNeeded(); | 1837 if (r->needsLayout()) |
| 1838 r->layout(); |
| 1839 else |
| 1840 r->setShouldDoFullRepaintAfterLayout(true); |
1836 | 1841 |
1837 // Lay out again if our estimate was wrong. | 1842 // Lay out again if our estimate was wrong. |
1838 if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(r)
!= oldLogicalTop) | 1843 if (needsBlockDirectionLocationSetBeforeLayout && logicalTopForChild(r)
!= oldLogicalTop) |
1839 r->forceChildLayout(); | 1844 r->forceChildLayout(); |
1840 } | 1845 } |
1841 | 1846 |
1842 if (hasColumns()) | 1847 if (hasColumns()) |
1843 view()->layoutState()->m_columnInfo = columnInfo(); // FIXME: Kind of gr
oss. We just put this back into the layout state so that pop() will work. | 1848 view()->layoutState()->m_columnInfo = columnInfo(); // FIXME: Kind of gr
oss. We just put this back into the layout state so that pop() will work. |
1844 } | 1849 } |
1845 | 1850 |
(...skipping 3640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5486 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const | 5491 void RenderBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m
arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Render
Object* obj) const |
5487 { | 5492 { |
5488 showRenderObject(); | 5493 showRenderObject(); |
5489 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) | 5494 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot
Box()) |
5490 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); | 5495 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa
bel2, obj, 1); |
5491 } | 5496 } |
5492 | 5497 |
5493 #endif | 5498 #endif |
5494 | 5499 |
5495 } // namespace WebCore | 5500 } // namespace WebCore |
OLD | NEW |