| 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 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 } | 144 } |
| 145 } | 145 } |
| 146 | 146 |
| 147 LayoutBlock::~LayoutBlock() | 147 LayoutBlock::~LayoutBlock() |
| 148 { | 148 { |
| 149 removeFromGlobalMaps(); | 149 removeFromGlobalMaps(); |
| 150 } | 150 } |
| 151 | 151 |
| 152 void LayoutBlock::willBeDestroyed() | 152 void LayoutBlock::willBeDestroyed() |
| 153 { | 153 { |
| 154 // Mark as being destroyed to avoid trouble with merges in removeChild(). | 154 if (!documentBeingDestroyed() && parent()) |
| 155 m_beingDestroyed = true; | 155 parent()->dirtyLinesFromChangedChild(this); |
| 156 | |
| 157 // Make sure to destroy anonymous children first while they are still connec
ted to the rest of the tree, so that they will | |
| 158 // properly dirty line boxes that they are removed from. Effects that do :be
fore/:after only on hover could crash otherwise. | |
| 159 children()->destroyLeftoverChildren(); | |
| 160 | |
| 161 // Destroy our continuation before anything other than anonymous children. | |
| 162 // The reason we don't destroy it before anonymous children is that they may | |
| 163 // have continuations of their own that are anonymous children of our contin
uation. | |
| 164 LayoutBoxModelObject* continuation = this->continuation(); | |
| 165 if (continuation) { | |
| 166 continuation->destroy(); | |
| 167 setContinuation(nullptr); | |
| 168 } | |
| 169 | |
| 170 if (!documentBeingDestroyed()) { | |
| 171 if (firstLineBox()) { | |
| 172 // We can't wait for LayoutBox::destroy to clear the selection, | |
| 173 // because by then we will have nuked the line boxes. | |
| 174 // FIXME: The FrameSelection should be responsible for this when it | |
| 175 // is notified of DOM mutations. | |
| 176 if (isSelectionBorder()) | |
| 177 view()->clearSelection(); | |
| 178 | |
| 179 // If we are an anonymous block, then our line boxes might have chil
dren | |
| 180 // that will outlast this block. In the non-anonymous block case tho
se | |
| 181 // children will be destroyed by the time we return from this functi
on. | |
| 182 if (isAnonymousBlock()) { | |
| 183 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLi
neBox()) { | |
| 184 while (InlineBox* childBox = box->firstChild()) | |
| 185 childBox->remove(); | |
| 186 } | |
| 187 } | |
| 188 } else if (parent()) { | |
| 189 parent()->dirtyLinesFromChangedChild(this); | |
| 190 } | |
| 191 } | |
| 192 | |
| 193 m_lineBoxes.deleteLineBoxes(); | |
| 194 | 156 |
| 195 if (UNLIKELY(gDelayedUpdateScrollInfoSet != 0)) | 157 if (UNLIKELY(gDelayedUpdateScrollInfoSet != 0)) |
| 196 gDelayedUpdateScrollInfoSet->remove(this); | 158 gDelayedUpdateScrollInfoSet->remove(this); |
| 197 | 159 |
| 198 if (TextAutosizer* textAutosizer = document().textAutosizer()) | 160 if (TextAutosizer* textAutosizer = document().textAutosizer()) |
| 199 textAutosizer->destroy(this); | 161 textAutosizer->destroy(this); |
| 200 | 162 |
| 201 LayoutBox::willBeDestroyed(); | 163 LayoutBox::willBeDestroyed(); |
| 202 } | 164 } |
| 203 | 165 |
| (...skipping 1761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1965 for (TrackedLayoutBoxListHashSet::const_iterator it = positionedDescenda
ntSet->begin(); it != end; ++it) { | 1927 for (TrackedLayoutBoxListHashSet::const_iterator it = positionedDescenda
ntSet->begin(); it != end; ++it) { |
| 1966 LayoutBox* currBox = *it; | 1928 LayoutBox* currBox = *it; |
| 1967 ASSERT(!currBox->needsLayout()); | 1929 ASSERT(!currBox->needsLayout()); |
| 1968 } | 1930 } |
| 1969 } | 1931 } |
| 1970 } | 1932 } |
| 1971 | 1933 |
| 1972 #endif | 1934 #endif |
| 1973 | 1935 |
| 1974 } // namespace blink | 1936 } // namespace blink |
| OLD | NEW |