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

Side by Side Diff: Source/core/layout/LayoutFlowThread.cpp

Issue 1163423007: Mark column sets as invalid and kill the interval tree when column sets are removed. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698