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 1316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1327 if (!child->isSelfCollapsingBlock()) | 1327 if (!child->isSelfCollapsingBlock()) |
1328 return false; | 1328 return false; |
1329 } | 1329 } |
1330 return true; | 1330 return true; |
1331 } | 1331 } |
1332 return false; | 1332 return false; |
1333 } | 1333 } |
1334 | 1334 |
1335 void RenderBlock::startDelayUpdateScrollInfo() | 1335 void RenderBlock::startDelayUpdateScrollInfo() |
1336 { | 1336 { |
1337 if (gDelayUpdateScrollInfo == 0) { | 1337 if (!gDelayedUpdateScrollInfoSet) { |
1338 ASSERT(!gDelayedUpdateScrollInfoSet); | 1338 ASSERT(!gDelayUpdateScrollInfo); |
1339 gDelayedUpdateScrollInfoSet = new DelayedUpdateScrollInfoSet; | 1339 gDelayedUpdateScrollInfoSet = new DelayedUpdateScrollInfoSet; |
1340 } | 1340 } |
1341 ASSERT(gDelayedUpdateScrollInfoSet); | 1341 ASSERT(gDelayedUpdateScrollInfoSet); |
1342 ++gDelayUpdateScrollInfo; | 1342 ++gDelayUpdateScrollInfo; |
1343 } | 1343 } |
1344 | 1344 |
1345 void RenderBlock::finishDelayUpdateScrollInfo() | 1345 void RenderBlock::finishDelayUpdateScrollInfo() |
1346 { | 1346 { |
1347 --gDelayUpdateScrollInfo; | 1347 --gDelayUpdateScrollInfo; |
1348 ASSERT(gDelayUpdateScrollInfo >= 0); | 1348 ASSERT(gDelayUpdateScrollInfo >= 0); |
1349 if (gDelayUpdateScrollInfo == 0) { | 1349 if (gDelayUpdateScrollInfo == 0) { |
1350 ASSERT(gDelayedUpdateScrollInfoSet); | 1350 ASSERT(gDelayedUpdateScrollInfoSet); |
1351 | 1351 |
1352 OwnPtr<DelayedUpdateScrollInfoSet> infoSet(adoptPtr(gDelayedUpdateScroll
InfoSet)); | 1352 Vector<RenderBlock*> infoSet; |
1353 gDelayedUpdateScrollInfoSet = 0; | 1353 while (gDelayedUpdateScrollInfoSet && gDelayedUpdateScrollInfoSet->size(
)) { |
1354 | 1354 copyToVector(*gDelayedUpdateScrollInfoSet, infoSet); |
1355 for (DelayedUpdateScrollInfoSet::iterator it = infoSet->begin(); it != i
nfoSet->end(); ++it) { | 1355 for (Vector<RenderBlock*>::iterator it = infoSet.begin(); it != info
Set.end(); ++it) { |
1356 RenderBlock* block = *it; | 1356 RenderBlock* block = *it; |
1357 if (block->hasOverflowClip()) { | 1357 // |block| may have been destroyed at this point, but then it wi
ll have been removed from gDelayedUpdateScrollInfoSet. |
1358 block->layer()->updateScrollInfoAfterLayout(); | 1358 if (gDelayedUpdateScrollInfoSet && gDelayedUpdateScrollInfoSet->
contains(block)) { |
| 1359 gDelayedUpdateScrollInfoSet->remove(block); |
| 1360 if (block->hasOverflowClip()) |
| 1361 block->layer()->updateScrollInfoAfterLayout(); |
| 1362 } |
1359 } | 1363 } |
1360 } | 1364 } |
| 1365 delete gDelayedUpdateScrollInfoSet; |
| 1366 gDelayedUpdateScrollInfoSet = 0; |
| 1367 ASSERT(!gDelayUpdateScrollInfo); |
1361 } | 1368 } |
1362 } | 1369 } |
1363 | 1370 |
1364 void RenderBlock::updateScrollInfoAfterLayout() | 1371 void RenderBlock::updateScrollInfoAfterLayout() |
1365 { | 1372 { |
1366 if (hasOverflowClip()) { | 1373 if (hasOverflowClip()) { |
1367 if (style()->isFlippedBlocksWritingMode()) { | 1374 if (style()->isFlippedBlocksWritingMode()) { |
1368 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=97937 | 1375 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=97937 |
1369 // Workaround for now. We cannot delay the scroll info for overflow | 1376 // Workaround for now. We cannot delay the scroll info for overflow |
1370 // for items with opposite writing directions, as the contents needs | 1377 // for items with opposite writing directions, as the contents needs |
(...skipping 6347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7718 } | 7725 } |
7719 | 7726 |
7720 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) | 7727 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) |
7721 { | 7728 { |
7722 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
MaxY()); | 7729 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
MaxY()); |
7723 } | 7730 } |
7724 | 7731 |
7725 #endif | 7732 #endif |
7726 | 7733 |
7727 } // namespace WebCore | 7734 } // namespace WebCore |
OLD | NEW |