Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) | 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. |
| 4 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 4 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 547 return true; | 547 return true; |
| 548 | 548 |
| 549 // If the counter directives change, trigger a relayout to re-calculate counter values and rebuild the counter node tree. | 549 // If the counter directives change, trigger a relayout to re-calculate counter values and rebuild the counter node tree. |
| 550 const CounterDirectiveMap* mapA = rareNonInheritedData->m_counterDirecti ves.get(); | 550 const CounterDirectiveMap* mapA = rareNonInheritedData->m_counterDirecti ves.get(); |
| 551 const CounterDirectiveMap* mapB = other.rareNonInheritedData->m_counterD irectives.get(); | 551 const CounterDirectiveMap* mapB = other.rareNonInheritedData->m_counterD irectives.get(); |
| 552 if (!(mapA == mapB || (mapA && mapB && *mapA == *mapB))) | 552 if (!(mapA == mapB || (mapA && mapB && *mapA == *mapB))) |
| 553 return true; | 553 return true; |
| 554 | 554 |
| 555 // We only need do layout for opacity changes if adding or losing opacit y could trigger a change | 555 // We only need do layout for opacity changes if adding or losing opacit y could trigger a change |
| 556 // in us being a stacking context. | 556 // in us being a stacking context. |
| 557 if (hasAutoZIndex() != other.hasAutoZIndex() && rareNonInheritedData->ha sOpacity() != other.rareNonInheritedData->hasOpacity()) { | 557 if (isStackingContext() != other.isStackingContext() && rareNonInherited Data->hasOpacity() != other.rareNonInheritedData->hasOpacity()) { |
| 558 // FIXME: We would like to use SimplifiedLayout here, but we can't q uite do that yet. | 558 // FIXME: We would like to use SimplifiedLayout here, but we can't q uite do that yet. |
| 559 // We need to make sure SimplifiedLayout can operate correctly on La youtInlines (we will need | 559 // We need to make sure SimplifiedLayout can operate correctly on La youtInlines (we will need |
| 560 // to add a selfNeedsSimplifiedLayout bit in order to not get confus ed and taint every line). | 560 // to add a selfNeedsSimplifiedLayout bit in order to not get confus ed and taint every line). |
| 561 // In addition we need to solve the floating object issue when layer s come and go. Right now | 561 // In addition we need to solve the floating object issue when layer s come and go. Right now |
| 562 // a full layout is necessary to keep floating object lists sane. | 562 // a full layout is necessary to keep floating object lists sane. |
| 563 return true; | 563 return true; |
| 564 } | 564 } |
| 565 } | 565 } |
| 566 | 566 |
| 567 if (rareInheritedData.get() != other.rareInheritedData.get()) { | 567 if (rareInheritedData.get() != other.rareInheritedData.get()) { |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 804 if (!dataEquivalent(thisVar, otherVar)) | 804 if (!dataEquivalent(thisVar, otherVar)) |
| 805 return true; | 805 return true; |
| 806 } | 806 } |
| 807 } | 807 } |
| 808 | 808 |
| 809 return false; | 809 return false; |
| 810 } | 810 } |
| 811 | 811 |
| 812 void ComputedStyle::updatePropertySpecificDifferences(const ComputedStyle& other , StyleDifference& diff) const | 812 void ComputedStyle::updatePropertySpecificDifferences(const ComputedStyle& other , StyleDifference& diff) const |
| 813 { | 813 { |
| 814 // StyleAdjuster has ensured that zIndex is non-auto only if it's applicable . | 814 if (m_box->zIndex() != other.m_box->zIndex() || isStackingContext() != other .isStackingContext()) |
|
rune
2016/06/10 12:25:52
This comment is still valid with the last patchset
| |
| 815 if (m_box->zIndex() != other.m_box->zIndex() || m_box->hasAutoZIndex() != ot her.m_box->hasAutoZIndex()) | |
| 816 diff.setZIndexChanged(); | 815 diff.setZIndexChanged(); |
| 817 | 816 |
| 818 if (rareNonInheritedData.get() != other.rareNonInheritedData.get()) { | 817 if (rareNonInheritedData.get() != other.rareNonInheritedData.get()) { |
| 819 if (!transformDataEquivalent(other)) | 818 if (!transformDataEquivalent(other)) |
| 820 diff.setTransformChanged(); | 819 diff.setTransformChanged(); |
| 821 | 820 |
| 822 if (rareNonInheritedData->opacity != other.rareNonInheritedData->opacity ) | 821 if (rareNonInheritedData->opacity != other.rareNonInheritedData->opacity ) |
| 823 diff.setOpacityChanged(); | 822 diff.setOpacityChanged(); |
| 824 | 823 |
| 825 if (rareNonInheritedData->m_filter != other.rareNonInheritedData->m_filt er) | 824 if (rareNonInheritedData->m_filter != other.rareNonInheritedData->m_filt er) |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 886 { | 885 { |
| 887 rareInheritedData.access()->quotes = q; | 886 rareInheritedData.access()->quotes = q; |
| 888 } | 887 } |
| 889 | 888 |
| 890 void ComputedStyle::clearCursorList() | 889 void ComputedStyle::clearCursorList() |
| 891 { | 890 { |
| 892 if (rareInheritedData->cursorData) | 891 if (rareInheritedData->cursorData) |
| 893 rareInheritedData.access()->cursorData = nullptr; | 892 rareInheritedData.access()->cursorData = nullptr; |
| 894 } | 893 } |
| 895 | 894 |
| 895 static bool hasPropertyThatCreatesStackingContext(const Vector<CSSPropertyID>& p roperties) | |
| 896 { | |
| 897 for (CSSPropertyID property : properties) { | |
| 898 switch (property) { | |
| 899 case CSSPropertyOpacity: | |
| 900 case CSSPropertyTransform: | |
| 901 case CSSPropertyAliasWebkitTransform: | |
| 902 case CSSPropertyTransformStyle: | |
| 903 case CSSPropertyAliasWebkitTransformStyle: | |
| 904 case CSSPropertyPerspective: | |
| 905 case CSSPropertyAliasWebkitPerspective: | |
| 906 case CSSPropertyWebkitMask: | |
| 907 case CSSPropertyWebkitMaskBoxImage: | |
| 908 case CSSPropertyWebkitClipPath: | |
| 909 case CSSPropertyWebkitBoxReflect: | |
| 910 case CSSPropertyWebkitFilter: | |
| 911 case CSSPropertyBackdropFilter: | |
| 912 case CSSPropertyZIndex: | |
| 913 case CSSPropertyPosition: | |
| 914 case CSSPropertyMixBlendMode: | |
| 915 case CSSPropertyIsolation: | |
| 916 return true; | |
| 917 default: | |
| 918 break; | |
| 919 } | |
| 920 } | |
| 921 return false; | |
| 922 } | |
| 923 | |
| 924 void ComputedStyle::updateIsStackingContext(bool isDocumentElement, bool isInTop Layer) | |
| 925 { | |
| 926 if (isStackingContext()) | |
| 927 return; | |
| 928 | |
| 929 if (isDocumentElement | |
| 930 || isInTopLayer | |
| 931 || styleType() == PseudoIdBackdrop | |
| 932 || hasOpacity() | |
| 933 || hasTransformRelatedProperty() | |
| 934 || hasMask() | |
| 935 || clipPath() | |
| 936 || boxReflect() | |
| 937 || hasFilterInducingProperty() | |
| 938 || hasBlendMode() | |
| 939 || hasIsolation() | |
| 940 || hasViewportConstrainedPosition() | |
| 941 || hasPropertyThatCreatesStackingContext(willChangeProperties()) | |
| 942 || containsPaint()) { | |
| 943 setIsStackingContext(true); | |
| 944 } | |
| 945 } | |
| 946 | |
| 896 void ComputedStyle::addCallbackSelector(const String& selector) | 947 void ComputedStyle::addCallbackSelector(const String& selector) |
| 897 { | 948 { |
| 898 if (!rareNonInheritedData->m_callbackSelectors.contains(selector)) | 949 if (!rareNonInheritedData->m_callbackSelectors.contains(selector)) |
| 899 rareNonInheritedData.access()->m_callbackSelectors.append(selector); | 950 rareNonInheritedData.access()->m_callbackSelectors.append(selector); |
| 900 } | 951 } |
| 901 | 952 |
| 902 void ComputedStyle::setContent(ContentData* contentData) | 953 void ComputedStyle::setContent(ContentData* contentData) |
| 903 { | 954 { |
| 904 SET_VAR(rareNonInheritedData, m_content, contentData); | 955 SET_VAR(rareNonInheritedData, m_content, contentData); |
| 905 } | 956 } |
| (...skipping 967 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1873 if (value < 0) | 1924 if (value < 0) |
| 1874 fvalue -= 0.5f; | 1925 fvalue -= 0.5f; |
| 1875 else | 1926 else |
| 1876 fvalue += 0.5f; | 1927 fvalue += 0.5f; |
| 1877 } | 1928 } |
| 1878 | 1929 |
| 1879 return roundForImpreciseConversion<int>(fvalue / zoomFactor); | 1930 return roundForImpreciseConversion<int>(fvalue / zoomFactor); |
| 1880 } | 1931 } |
| 1881 | 1932 |
| 1882 } // namespace blink | 1933 } // namespace blink |
| OLD | NEW |