Chromium Code Reviews| 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) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
| 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. |
| 7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 1827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1838 setStyle(style.release()); | 1838 setStyle(style.release()); |
| 1839 return; | 1839 return; |
| 1840 } | 1840 } |
| 1841 | 1841 |
| 1842 setStyle(pseudoStyle); | 1842 setStyle(pseudoStyle); |
| 1843 } | 1843 } |
| 1844 | 1844 |
| 1845 void LayoutObject::firstLineStyleDidChange(const ComputedStyle& oldStyle, const ComputedStyle& newStyle) | 1845 void LayoutObject::firstLineStyleDidChange(const ComputedStyle& oldStyle, const ComputedStyle& newStyle) |
| 1846 { | 1846 { |
| 1847 StyleDifference diff = oldStyle.visualInvalidationDiff(newStyle); | 1847 StyleDifference diff = oldStyle.visualInvalidationDiff(newStyle); |
| 1848 if (diff.hasDifference()) { | 1848 |
| 1849 // TODO(rune@opera.com): We should use the diff to determine whether a r epaint vs. layout | 1849 if (diff.needsPaintInvalidation() || diff.textDecorationOrColorChanged()) { |
| 1850 // is needed, but for now just assume a layout will be required. The dif f code | 1850 LayoutBlockFlow* block = nullptr; |
| 1851 // in LayoutObject::setStyle would need to be factored out so that it co uld be reused. | 1851 if (isLayoutBlockFlow()) { |
| 1852 setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(LayoutInvalida tionReason::StyleChange); | 1852 block = toLayoutBlockFlow(this); |
| 1853 } else { | |
| 1854 ASSERT(isLayoutInline()); | |
| 1855 if (toLayoutInline(this)->firstLineBoxIncludingCulling()->isFirstLin eStyle()) | |
| 1856 block = toLayoutBlockFlow(containingBlock()); | |
| 1857 } | |
| 1858 if (block) { | |
| 1859 block->invalidateDisplayItemClientsOfFirstLine(); | |
| 1860 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled()) | |
| 1861 block->setShouldDoFullPaintInvalidation(); | |
|
Xianzhu
2015/12/01 20:06:25
This is needed for rect-based invalidation. Curren
| |
| 1862 } | |
| 1853 } | 1863 } |
| 1864 if (diff.needsLayout()) | |
| 1865 setNeedsLayoutAndPrefWidthsRecalc(LayoutInvalidationReason::StyleChange) ; | |
| 1854 } | 1866 } |
| 1855 | 1867 |
| 1856 void LayoutObject::markContainingBlocksForOverflowRecalc() | 1868 void LayoutObject::markContainingBlocksForOverflowRecalc() |
| 1857 { | 1869 { |
| 1858 for (LayoutBlock* container = containingBlock(); container && !container->ch ildNeedsOverflowRecalcAfterStyleChange(); container = container->containingBlock ()) | 1870 for (LayoutBlock* container = containingBlock(); container && !container->ch ildNeedsOverflowRecalcAfterStyleChange(); container = container->containingBlock ()) |
| 1859 container->setChildNeedsOverflowRecalcAfterStyleChange(); | 1871 container->setChildNeedsOverflowRecalcAfterStyleChange(); |
| 1860 } | 1872 } |
| 1861 | 1873 |
| 1862 void LayoutObject::setNeedsOverflowRecalcAfterStyleChange() | 1874 void LayoutObject::setNeedsOverflowRecalcAfterStyleChange() |
| 1863 { | 1875 { |
| (...skipping 1643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3507 const blink::LayoutObject* root = object1; | 3519 const blink::LayoutObject* root = object1; |
| 3508 while (root->parent()) | 3520 while (root->parent()) |
| 3509 root = root->parent(); | 3521 root = root->parent(); |
| 3510 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); | 3522 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); |
| 3511 } else { | 3523 } else { |
| 3512 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); | 3524 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); |
| 3513 } | 3525 } |
| 3514 } | 3526 } |
| 3515 | 3527 |
| 3516 #endif | 3528 #endif |
| OLD | NEW |