OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | 3 * (C) 2000 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) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r
ights reserved. |
7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 // Actually do the paint invalidate of rect r for this object which has been
computed in the coordinate space | 856 // Actually do the paint invalidate of rect r for this object which has been
computed in the coordinate space |
857 // of the GraphicsLayer backing of |paintInvalidationContainer|. Note that t
his coordinaten space is not the same | 857 // of the GraphicsLayer backing of |paintInvalidationContainer|. Note that t
his coordinaten space is not the same |
858 // as the local coordinate space of |paintInvalidationContainer| in the pres
ence of layer squashing. | 858 // as the local coordinate space of |paintInvalidationContainer| in the pres
ence of layer squashing. |
859 // If |paintInvalidationContainer| is 0, invalidate paints via the view. | 859 // If |paintInvalidationContainer| is 0, invalidate paints via the view. |
860 // FIXME: |paintInvalidationContainer| should never be 0. See crbug.com/3636
99. | 860 // FIXME: |paintInvalidationContainer| should never be 0. See crbug.com/3636
99. |
861 void invalidatePaintUsingContainer(const RenderLayerModelObject* paintInvali
dationContainer, const LayoutRect&, InvalidationReason) const; | 861 void invalidatePaintUsingContainer(const RenderLayerModelObject* paintInvali
dationContainer, const LayoutRect&, InvalidationReason) const; |
862 | 862 |
863 // Invalidate the paint of a specific subrectangle within a given object. Th
e rect |r| is in the object's coordinate space. | 863 // Invalidate the paint of a specific subrectangle within a given object. Th
e rect |r| is in the object's coordinate space. |
864 void invalidatePaintRectangle(const LayoutRect&) const; | 864 void invalidatePaintRectangle(const LayoutRect&) const; |
865 | 865 |
| 866 void invalidateSelectionIfNeeded(const RenderLayerModelObject&); |
| 867 |
866 // Walk the tree after layout issuing paint invalidations for renderers that
have changed or moved, updating bounds that have changed, and clearing paint in
validation state. | 868 // Walk the tree after layout issuing paint invalidations for renderers that
have changed or moved, updating bounds that have changed, and clearing paint in
validation state. |
867 virtual void invalidateTreeIfNeeded(const PaintInvalidationState&); | 869 virtual void invalidateTreeIfNeeded(const PaintInvalidationState&); |
868 | 870 |
869 virtual void invalidatePaintForOverflow(); | 871 virtual void invalidatePaintForOverflow(); |
870 void invalidatePaintForOverflowIfNeeded(); | 872 void invalidatePaintForOverflowIfNeeded(); |
871 | 873 |
872 void invalidatePaintIncludingNonCompositingDescendants(); | 874 void invalidatePaintIncludingNonCompositingDescendants(); |
873 | 875 |
874 bool checkForPaintInvalidation() const; | 876 bool checkForPaintInvalidation() const; |
875 | 877 |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1048 bool mayNeedPaintInvalidation() const { return m_bitfields.mayNeedPaintInval
idation(); } | 1050 bool mayNeedPaintInvalidation() const { return m_bitfields.mayNeedPaintInval
idation(); } |
1049 void setMayNeedPaintInvalidation(bool b) | 1051 void setMayNeedPaintInvalidation(bool b) |
1050 { | 1052 { |
1051 m_bitfields.setMayNeedPaintInvalidation(b); | 1053 m_bitfields.setMayNeedPaintInvalidation(b); |
1052 | 1054 |
1053 // Make sure our parent is marked as needing invalidation. | 1055 // Make sure our parent is marked as needing invalidation. |
1054 if (b) | 1056 if (b) |
1055 markContainingBlockChainForPaintInvalidation(); | 1057 markContainingBlockChainForPaintInvalidation(); |
1056 } | 1058 } |
1057 | 1059 |
| 1060 bool shouldInvalidateSelection() const { return m_bitfields.shouldInvalidate
Selection(); } |
| 1061 void setShouldInvalidateSelection() |
| 1062 { |
| 1063 if (!canUpdateSelectionOnRootLineBoxes()) |
| 1064 return; |
| 1065 |
| 1066 m_bitfields.setShouldInvalidateSelection(true); |
| 1067 markContainingBlockChainForPaintInvalidation(); |
| 1068 } |
| 1069 void clearShouldInvalidateSelection() { m_bitfields.setShouldInvalidateSelec
tion(false); } |
| 1070 |
1058 bool neededLayoutBecauseOfChildren() const { return m_bitfields.neededLayout
BecauseOfChildren(); } | 1071 bool neededLayoutBecauseOfChildren() const { return m_bitfields.neededLayout
BecauseOfChildren(); } |
1059 void setNeededLayoutBecauseOfChildren(bool b) { m_bitfields.setNeededLayoutB
ecauseOfChildren(b); } | 1072 void setNeededLayoutBecauseOfChildren(bool b) { m_bitfields.setNeededLayoutB
ecauseOfChildren(b); } |
1060 | 1073 |
1061 bool shouldCheckForPaintInvalidation(const PaintInvalidationState& paintInva
lidationState) | 1074 bool shouldCheckForPaintInvalidation(const PaintInvalidationState& paintInva
lidationState) const |
1062 { | 1075 { |
1063 return paintInvalidationState.forceCheckForPaintInvalidation() || should
CheckForPaintInvalidationRegardlessOfPaintInvalidationState(); | 1076 return paintInvalidationState.forceCheckForPaintInvalidation() || should
CheckForPaintInvalidationRegardlessOfPaintInvalidationState(); |
1064 } | 1077 } |
1065 | 1078 |
1066 bool shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState() | 1079 bool shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState() con
st |
1067 { | 1080 { |
1068 return layoutDidGetCalled() || mayNeedPaintInvalidation() || shouldDoFul
lPaintInvalidation() || shouldDoFullPaintInvalidationIfSelfPaintingLayer(); | 1081 return layoutDidGetCalled() || mayNeedPaintInvalidation() || shouldDoFul
lPaintInvalidation() || shouldDoFullPaintInvalidationIfSelfPaintingLayer() || sh
ouldInvalidateSelection(); |
1069 } | 1082 } |
1070 | 1083 |
1071 bool supportsPaintInvalidationStateCachedOffsets() const { return !hasColumn
s() && !hasTransform() && !hasReflection() && !style()->isFlippedBlocksWritingMo
de(); } | 1084 bool supportsPaintInvalidationStateCachedOffsets() const { return !hasColumn
s() && !hasTransform() && !hasReflection() && !style()->isFlippedBlocksWritingMo
de(); } |
1072 | 1085 |
1073 void setNeedsOverflowRecalcAfterStyleChange(); | 1086 void setNeedsOverflowRecalcAfterStyleChange(); |
1074 void markContainingBlocksForOverflowRecalc(); | 1087 void markContainingBlocksForOverflowRecalc(); |
1075 | 1088 |
1076 virtual LayoutRect viewRect() const; | 1089 virtual LayoutRect viewRect() const; |
1077 | 1090 |
1078 protected: | 1091 protected: |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1117 | 1130 |
1118 virtual InvalidationReason getPaintInvalidationReason(const RenderLayerModel
Object& paintInvalidationContainer, | 1131 virtual InvalidationReason getPaintInvalidationReason(const RenderLayerModel
Object& paintInvalidationContainer, |
1119 const LayoutRect& oldPaintInvalidationRect, const LayoutPoint& oldPositi
onFromPaintInvalidationBacking, | 1132 const LayoutRect& oldPaintInvalidationRect, const LayoutPoint& oldPositi
onFromPaintInvalidationBacking, |
1120 const LayoutRect& newPaintInvalidationRect, const LayoutPoint& newPositi
onFromPaintInvalidationBacking); | 1133 const LayoutRect& newPaintInvalidationRect, const LayoutPoint& newPositi
onFromPaintInvalidationBacking); |
1121 virtual void incrementallyInvalidatePaint(const RenderLayerModelObject& pain
tInvalidationContainer, const LayoutRect& oldBounds, const LayoutRect& newBounds
, const LayoutPoint& positionFromPaintInvalidationBacking); | 1134 virtual void incrementallyInvalidatePaint(const RenderLayerModelObject& pain
tInvalidationContainer, const LayoutRect& oldBounds, const LayoutRect& newBounds
, const LayoutPoint& positionFromPaintInvalidationBacking); |
1122 void fullyInvalidatePaint(const RenderLayerModelObject& paintInvalidationCon
tainer, InvalidationReason, const LayoutRect& oldBounds, const LayoutRect& newBo
unds); | 1135 void fullyInvalidatePaint(const RenderLayerModelObject& paintInvalidationCon
tainer, InvalidationReason, const LayoutRect& oldBounds, const LayoutRect& newBo
unds); |
1123 | 1136 |
1124 #if ENABLE(ASSERT) | 1137 #if ENABLE(ASSERT) |
1125 virtual bool paintInvalidationStateIsDirty() const | 1138 virtual bool paintInvalidationStateIsDirty() const |
1126 { | 1139 { |
1127 return layoutDidGetCalled() || shouldDoFullPaintInvalidation() || should
DoFullPaintInvalidationIfSelfPaintingLayer() | 1140 return onlyNeededPositionedMovementLayout() || neededLayoutBecauseOfChil
dren() || shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState(); |
1128 || onlyNeededPositionedMovementLayout() || neededLayoutBecauseOfChil
dren() || mayNeedPaintInvalidation(); | |
1129 } | 1141 } |
1130 #endif | 1142 #endif |
1131 | 1143 |
1132 void invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState&); | 1144 void invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState&); |
1133 virtual InvalidationReason invalidatePaintIfNeeded(const PaintInvalidationSt
ate&, const RenderLayerModelObject& paintInvalidationContainer); | 1145 virtual InvalidationReason invalidatePaintIfNeeded(const PaintInvalidationSt
ate&, const RenderLayerModelObject& paintInvalidationContainer); |
1134 | 1146 |
1135 private: | 1147 private: |
1136 void invalidatePaintIncludingNonCompositingDescendantsInternal(const RenderL
ayerModelObject* repaintContainer); | 1148 void invalidatePaintIncludingNonCompositingDescendantsInternal(const RenderL
ayerModelObject* repaintContainer); |
1137 | 1149 |
1138 const RenderLayerModelObject* enclosingCompositedContainer() const; | 1150 const RenderLayerModelObject* enclosingCompositedContainer() const; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1195 }; | 1207 }; |
1196 | 1208 |
1197 public: | 1209 public: |
1198 RenderObjectBitfields(Node* node) | 1210 RenderObjectBitfields(Node* node) |
1199 : m_selfNeedsLayout(false) | 1211 : m_selfNeedsLayout(false) |
1200 , m_shouldInvalidateOverflowForPaint(false) | 1212 , m_shouldInvalidateOverflowForPaint(false) |
1201 , m_shouldDoFullPaintInvalidationIfSelfPaintingLayer(false) | 1213 , m_shouldDoFullPaintInvalidationIfSelfPaintingLayer(false) |
1202 // FIXME: We should remove mayNeedPaintInvalidation once we are able
to | 1214 // FIXME: We should remove mayNeedPaintInvalidation once we are able
to |
1203 // use the other layout flags to detect the same cases. crbug.com/37
0118 | 1215 // use the other layout flags to detect the same cases. crbug.com/37
0118 |
1204 , m_mayNeedPaintInvalidation(false) | 1216 , m_mayNeedPaintInvalidation(false) |
| 1217 , m_shouldInvalidateSelection(false) |
1205 , m_onlyNeededPositionedMovementLayout(false) | 1218 , m_onlyNeededPositionedMovementLayout(false) |
1206 , m_neededLayoutBecauseOfChildren(false) | 1219 , m_neededLayoutBecauseOfChildren(false) |
1207 , m_needsPositionedMovementLayout(false) | 1220 , m_needsPositionedMovementLayout(false) |
1208 , m_normalChildNeedsLayout(false) | 1221 , m_normalChildNeedsLayout(false) |
1209 , m_posChildNeedsLayout(false) | 1222 , m_posChildNeedsLayout(false) |
1210 , m_needsSimplifiedNormalFlowLayout(false) | 1223 , m_needsSimplifiedNormalFlowLayout(false) |
1211 , m_preferredLogicalWidthsDirty(false) | 1224 , m_preferredLogicalWidthsDirty(false) |
1212 , m_floating(false) | 1225 , m_floating(false) |
1213 , m_selfNeedsOverflowRecalcAfterStyleChange(false) | 1226 , m_selfNeedsOverflowRecalcAfterStyleChange(false) |
1214 , m_childNeedsOverflowRecalcAfterStyleChange(false) | 1227 , m_childNeedsOverflowRecalcAfterStyleChange(false) |
(...skipping 17 matching lines...) Expand all Loading... |
1232 , m_hasColumns(false) | 1245 , m_hasColumns(false) |
1233 , m_alwaysCreateLineBoxesForRenderInline(false) | 1246 , m_alwaysCreateLineBoxesForRenderInline(false) |
1234 , m_positionedState(IsStaticallyPositioned) | 1247 , m_positionedState(IsStaticallyPositioned) |
1235 , m_selectionState(SelectionNone) | 1248 , m_selectionState(SelectionNone) |
1236 , m_flowThreadState(NotInsideFlowThread) | 1249 , m_flowThreadState(NotInsideFlowThread) |
1237 , m_boxDecorationBackgroundState(NoBoxDecorationBackground) | 1250 , m_boxDecorationBackgroundState(NoBoxDecorationBackground) |
1238 , m_fullPaintInvalidationReason(InvalidationNone) | 1251 , m_fullPaintInvalidationReason(InvalidationNone) |
1239 { | 1252 { |
1240 } | 1253 } |
1241 | 1254 |
1242 // 32 bits have been used in the first word, and 14 in the second. | 1255 // 32 bits have been used in the first word, and 15 in the second. |
1243 ADD_BOOLEAN_BITFIELD(selfNeedsLayout, SelfNeedsLayout); | 1256 ADD_BOOLEAN_BITFIELD(selfNeedsLayout, SelfNeedsLayout); |
1244 ADD_BOOLEAN_BITFIELD(shouldInvalidateOverflowForPaint, ShouldInvalidateO
verflowForPaint); | 1257 ADD_BOOLEAN_BITFIELD(shouldInvalidateOverflowForPaint, ShouldInvalidateO
verflowForPaint); |
1245 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidationIfSelfPaintingLayer, S
houldDoFullPaintInvalidationIfSelfPaintingLayer); | 1258 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidationIfSelfPaintingLayer, S
houldDoFullPaintInvalidationIfSelfPaintingLayer); |
1246 ADD_BOOLEAN_BITFIELD(mayNeedPaintInvalidation, MayNeedPaintInvalidation)
; | 1259 ADD_BOOLEAN_BITFIELD(mayNeedPaintInvalidation, MayNeedPaintInvalidation)
; |
| 1260 ADD_BOOLEAN_BITFIELD(shouldInvalidateSelection, ShouldInvalidateSelectio
n); |
1247 ADD_BOOLEAN_BITFIELD(onlyNeededPositionedMovementLayout, OnlyNeededPosit
ionedMovementLayout); | 1261 ADD_BOOLEAN_BITFIELD(onlyNeededPositionedMovementLayout, OnlyNeededPosit
ionedMovementLayout); |
1248 ADD_BOOLEAN_BITFIELD(neededLayoutBecauseOfChildren, NeededLayoutBecauseO
fChildren); | 1262 ADD_BOOLEAN_BITFIELD(neededLayoutBecauseOfChildren, NeededLayoutBecauseO
fChildren); |
1249 ADD_BOOLEAN_BITFIELD(needsPositionedMovementLayout, NeedsPositionedMovem
entLayout); | 1263 ADD_BOOLEAN_BITFIELD(needsPositionedMovementLayout, NeedsPositionedMovem
entLayout); |
1250 ADD_BOOLEAN_BITFIELD(normalChildNeedsLayout, NormalChildNeedsLayout); | 1264 ADD_BOOLEAN_BITFIELD(normalChildNeedsLayout, NormalChildNeedsLayout); |
1251 ADD_BOOLEAN_BITFIELD(posChildNeedsLayout, PosChildNeedsLayout); | 1265 ADD_BOOLEAN_BITFIELD(posChildNeedsLayout, PosChildNeedsLayout); |
1252 ADD_BOOLEAN_BITFIELD(needsSimplifiedNormalFlowLayout, NeedsSimplifiedNor
malFlowLayout); | 1266 ADD_BOOLEAN_BITFIELD(needsSimplifiedNormalFlowLayout, NeedsSimplifiedNor
malFlowLayout); |
1253 ADD_BOOLEAN_BITFIELD(preferredLogicalWidthsDirty, PreferredLogicalWidths
Dirty); | 1267 ADD_BOOLEAN_BITFIELD(preferredLogicalWidthsDirty, PreferredLogicalWidths
Dirty); |
1254 ADD_BOOLEAN_BITFIELD(floating, Floating); | 1268 ADD_BOOLEAN_BITFIELD(floating, Floating); |
1255 ADD_BOOLEAN_BITFIELD(selfNeedsOverflowRecalcAfterStyleChange, SelfNeedsO
verflowRecalcAfterStyleChange); | 1269 ADD_BOOLEAN_BITFIELD(selfNeedsOverflowRecalcAfterStyleChange, SelfNeedsO
verflowRecalcAfterStyleChange); |
1256 ADD_BOOLEAN_BITFIELD(childNeedsOverflowRecalcAfterStyleChange, ChildNeed
sOverflowRecalcAfterStyleChange); | 1270 ADD_BOOLEAN_BITFIELD(childNeedsOverflowRecalcAfterStyleChange, ChildNeed
sOverflowRecalcAfterStyleChange); |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1557 void showTree(const blink::RenderObject*); | 1571 void showTree(const blink::RenderObject*); |
1558 void showLineTree(const blink::RenderObject*); | 1572 void showLineTree(const blink::RenderObject*); |
1559 void showRenderTree(const blink::RenderObject* object1); | 1573 void showRenderTree(const blink::RenderObject* object1); |
1560 // We don't make object2 an optional parameter so that showRenderTree | 1574 // We don't make object2 an optional parameter so that showRenderTree |
1561 // can be called from gdb easily. | 1575 // can be called from gdb easily. |
1562 void showRenderTree(const blink::RenderObject* object1, const blink::RenderObjec
t* object2); | 1576 void showRenderTree(const blink::RenderObject* object1, const blink::RenderObjec
t* object2); |
1563 | 1577 |
1564 #endif | 1578 #endif |
1565 | 1579 |
1566 #endif // RenderObject_h | 1580 #endif // RenderObject_h |
OLD | NEW |