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()) |
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 bool newIsStackingContext = !hasAutoZIndex(); |
| 927 if (!newIsStackingContext && (isDocumentElement |
| 928 || isInTopLayer |
| 929 || styleType() == PseudoIdBackdrop |
| 930 || hasOpacity() |
| 931 || hasTransformRelatedProperty() |
| 932 || hasMask() |
| 933 || clipPath() |
| 934 || boxReflect() |
| 935 || hasFilterInducingProperty() |
| 936 || hasBlendMode() |
| 937 || hasIsolation() |
| 938 || hasViewportConstrainedPosition() |
| 939 || hasPropertyThatCreatesStackingContext(willChangeProperties()) |
| 940 || containsPaint())) { |
| 941 newIsStackingContext = true; |
| 942 } |
| 943 SET_VAR(rareNonInheritedData, m_isStackingContext, newIsStackingContext); |
| 944 } |
| 945 |
896 void ComputedStyle::addCallbackSelector(const String& selector) | 946 void ComputedStyle::addCallbackSelector(const String& selector) |
897 { | 947 { |
898 if (!rareNonInheritedData->m_callbackSelectors.contains(selector)) | 948 if (!rareNonInheritedData->m_callbackSelectors.contains(selector)) |
899 rareNonInheritedData.access()->m_callbackSelectors.append(selector); | 949 rareNonInheritedData.access()->m_callbackSelectors.append(selector); |
900 } | 950 } |
901 | 951 |
902 void ComputedStyle::setContent(ContentData* contentData) | 952 void ComputedStyle::setContent(ContentData* contentData) |
903 { | 953 { |
904 SET_VAR(rareNonInheritedData, m_content, contentData); | 954 SET_VAR(rareNonInheritedData, m_content, contentData); |
905 } | 955 } |
(...skipping 967 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1873 if (value < 0) | 1923 if (value < 0) |
1874 fvalue -= 0.5f; | 1924 fvalue -= 0.5f; |
1875 else | 1925 else |
1876 fvalue += 0.5f; | 1926 fvalue += 0.5f; |
1877 } | 1927 } |
1878 | 1928 |
1879 return roundForImpreciseConversion<int>(fvalue / zoomFactor); | 1929 return roundForImpreciseConversion<int>(fvalue / zoomFactor); |
1880 } | 1930 } |
1881 | 1931 |
1882 } // namespace blink | 1932 } // namespace blink |
OLD | NEW |