OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above | 8 * 1. Redistributions of source code must retain the above |
9 * copyright notice, this list of conditions and the following | 9 * copyright notice, this list of conditions and the following |
10 * disclaimer. | 10 * disclaimer. |
(...skipping 30 matching lines...) Expand all Loading... |
41 , m_columnSetsInvalidated(false) | 41 , m_columnSetsInvalidated(false) |
42 , m_columnSetsHaveUniformLogicalHeight(true) | 42 , m_columnSetsHaveUniformLogicalHeight(true) |
43 , m_pageLogicalSizeChanged(false) | 43 , m_pageLogicalSizeChanged(false) |
44 { | 44 { |
45 } | 45 } |
46 | 46 |
47 void LayoutFlowThread::removeColumnSetFromThread(LayoutMultiColumnSet* columnSet
) | 47 void LayoutFlowThread::removeColumnSetFromThread(LayoutMultiColumnSet* columnSet
) |
48 { | 48 { |
49 ASSERT(columnSet); | 49 ASSERT(columnSet); |
50 m_multiColumnSetList.remove(columnSet); | 50 m_multiColumnSetList.remove(columnSet); |
| 51 invalidateColumnSets(); |
| 52 // Clear the interval tree right away, instead of leaving it around with dea
d objects. Not that |
| 53 // anyone _should_ try to access the interval tree when the column sets are
marked as invalid, |
| 54 // but this is actually possible if other parts of the engine has bugs that
cause us to not lay |
| 55 // out everything that was marked for layout, so that LayoutObject::assertLa
idOut() (and a LOT |
| 56 // of other assertions) fails. |
| 57 m_multiColumnSetIntervalTree.clear(); |
51 } | 58 } |
52 | 59 |
53 void LayoutFlowThread::invalidateColumnSets() | 60 void LayoutFlowThread::invalidateColumnSets() |
54 { | 61 { |
55 if (m_columnSetsInvalidated) { | 62 if (m_columnSetsInvalidated) { |
56 ASSERT(selfNeedsLayout()); | 63 ASSERT(selfNeedsLayout()); |
57 return; | 64 return; |
58 } | 65 } |
59 | 66 |
60 setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReason::ColumnsChan
ged); | 67 setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReason::ColumnsChan
ged); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 | 202 |
196 void LayoutFlowThread::MultiColumnSetSearchAdapter::collectIfNeeded(const MultiC
olumnSetInterval& interval) | 203 void LayoutFlowThread::MultiColumnSetSearchAdapter::collectIfNeeded(const MultiC
olumnSetInterval& interval) |
197 { | 204 { |
198 if (m_result) | 205 if (m_result) |
199 return; | 206 return; |
200 if (interval.low() <= m_offset && interval.high() > m_offset) | 207 if (interval.low() <= m_offset && interval.high() > m_offset) |
201 m_result = interval.data(); | 208 m_result = interval.data(); |
202 } | 209 } |
203 | 210 |
204 } // namespace blink | 211 } // namespace blink |
OLD | NEW |