OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 3328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3339 } | 3339 } |
3340 | 3340 |
3341 LayoutUnit LayoutBlockFlow::logicalRightFloatOffsetForLine(LayoutUnit logicalTop
, LayoutUnit fixedOffset, LayoutUnit logicalHeight) const | 3341 LayoutUnit LayoutBlockFlow::logicalRightFloatOffsetForLine(LayoutUnit logicalTop
, LayoutUnit fixedOffset, LayoutUnit logicalHeight) const |
3342 { | 3342 { |
3343 if (m_floatingObjects && m_floatingObjects->hasRightObjects()) | 3343 if (m_floatingObjects && m_floatingObjects->hasRightObjects()) |
3344 return m_floatingObjects->logicalRightOffset(fixedOffset, logicalTop, lo
gicalHeight); | 3344 return m_floatingObjects->logicalRightOffset(fixedOffset, logicalTop, lo
gicalHeight); |
3345 | 3345 |
3346 return fixedOffset; | 3346 return fixedOffset; |
3347 } | 3347 } |
3348 | 3348 |
3349 void LayoutBlockFlow::setAncestorShouldPaintFloatingObject(const LayoutBox& floa
tBox, bool shouldPaint) | 3349 void LayoutBlockFlow::setAncestorShouldPaintFloatingObject(const LayoutBox& floa
tBox) |
3350 { | 3350 { |
3351 ASSERT(floatBox.isFloating()); | 3351 ASSERT(floatBox.isFloating()); |
3352 ASSERT(!floatBox.hasSelfPaintingLayer()); | 3352 bool floatBoxIsSelfPaintingLayer = floatBox.hasLayer() && floatBox.layer()->
isSelfPaintingLayer(); |
3353 for (LayoutObject* ancestor = floatBox.parent(); ancestor && ancestor->isLay
outBlockFlow(); ancestor = ancestor->parent()) { | 3353 for (LayoutObject* ancestor = floatBox.parent(); ancestor && ancestor->isLay
outBlockFlow(); ancestor = ancestor->parent()) { |
3354 LayoutBlockFlow* ancestorBlock = toLayoutBlockFlow(ancestor); | 3354 LayoutBlockFlow* ancestorBlock = toLayoutBlockFlow(ancestor); |
3355 FloatingObjects* ancestorFloatingObjects = ancestorBlock->m_floatingObje
cts.get(); | 3355 FloatingObjects* ancestorFloatingObjects = ancestorBlock->m_floatingObje
cts.get(); |
3356 if (!ancestorFloatingObjects) | 3356 if (!ancestorFloatingObjects) |
3357 break; | 3357 break; |
3358 FloatingObjectSet::iterator it = ancestorFloatingObjects->mutableSet().f
ind<FloatingObjectHashTranslator>(const_cast<LayoutBox*>(&floatBox)); | 3358 FloatingObjectSet::iterator it = ancestorFloatingObjects->mutableSet().f
ind<FloatingObjectHashTranslator>(const_cast<LayoutBox*>(&floatBox)); |
3359 if (it == ancestorFloatingObjects->mutableSet().end()) | 3359 if (it == ancestorFloatingObjects->mutableSet().end()) |
3360 break; | 3360 break; |
3361 | 3361 |
3362 FloatingObject& floatingObject = **it; | 3362 FloatingObject& floatingObject = **it; |
3363 if (shouldPaint) { | 3363 if (!floatBoxIsSelfPaintingLayer) { |
3364 ASSERT(!floatingObject.shouldPaint()); | |
3365 // This repeats the logic in addOverhangingFloats() about shouldPain
t flag: | 3364 // This repeats the logic in addOverhangingFloats() about shouldPain
t flag: |
3366 // - The nearest enclosing block in which the float doesn't overhang
paints the float; | 3365 // - The nearest enclosing block in which the float doesn't overhang
paints the float; |
3367 // - Or even if the float overhangs, if the ancestor block has self-
painting layer, it | 3366 // - Or even if the float overhangs, if the ancestor block has self-
painting layer, it |
3368 // paints the float. | 3367 // paints the float. |
3369 if (ancestorBlock->hasSelfPaintingLayer() || !ancestorBlock->isOverh
angingFloat(floatingObject)) { | 3368 if (ancestorBlock->hasSelfPaintingLayer() || !ancestorBlock->isOverh
angingFloat(floatingObject)) { |
3370 floatingObject.setShouldPaint(true); | 3369 floatingObject.setShouldPaint(true); |
3371 return; | 3370 return; |
3372 } | 3371 } |
3373 } else if (floatingObject.shouldPaint()) { | 3372 } else if (floatingObject.shouldPaint()) { |
3374 floatingObject.setShouldPaint(false); | 3373 floatingObject.setShouldPaint(false); |
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3776 if (!rect.isEmpty()) | 3775 if (!rect.isEmpty()) |
3777 rects.append(rect); | 3776 rects.append(rect); |
3778 } | 3777 } |
3779 } | 3778 } |
3780 | 3779 |
3781 if (inlineElementContinuation) | 3780 if (inlineElementContinuation) |
3782 inlineElementContinuation->addOutlineRects(rects, additionalOffset + (in
lineElementContinuation->containingBlock()->location() - location()), includeBlo
ckOverflows); | 3781 inlineElementContinuation->addOutlineRects(rects, additionalOffset + (in
lineElementContinuation->containingBlock()->location() - location()), includeBlo
ckOverflows); |
3783 } | 3782 } |
3784 | 3783 |
3785 } // namespace blink | 3784 } // namespace blink |
OLD | NEW |