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 1260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1271 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe
cts(const LayoutRect& oldRect, const LayoutPoint& oldLocation, const LayoutRect&
newRect, const LayoutPoint& newLocation) | 1271 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe
cts(const LayoutRect& oldRect, const LayoutPoint& oldLocation, const LayoutRect&
newRect, const LayoutPoint& newLocation) |
1272 { | 1272 { |
1273 RefPtr<TracedValue> value = TracedValue::create(); | 1273 RefPtr<TracedValue> value = TracedValue::create(); |
1274 addJsonObjectForRect(value.get(), "oldRect", oldRect); | 1274 addJsonObjectForRect(value.get(), "oldRect", oldRect); |
1275 addJsonObjectForPoint(value.get(), "oldLocation", oldLocation); | 1275 addJsonObjectForPoint(value.get(), "oldLocation", oldLocation); |
1276 addJsonObjectForRect(value.get(), "newRect", newRect); | 1276 addJsonObjectForRect(value.get(), "newRect", newRect); |
1277 addJsonObjectForPoint(value.get(), "newLocation", newLocation); | 1277 addJsonObjectForPoint(value.get(), "newLocation", newLocation); |
1278 return value; | 1278 return value; |
1279 } | 1279 } |
1280 | 1280 |
| 1281 void RenderObject::invalidateSelectionIfNeeded(const RenderLayerModelObject& pai
ntInvalidationContainer) |
| 1282 { |
| 1283 if (!shouldInvalidateSelection()) |
| 1284 return; |
| 1285 |
| 1286 LayoutRect selection = selectionRectForPaintInvalidation(&paintInvalidationC
ontainer); |
| 1287 // FIXME: groupedMapping() leaks the squashing abstraction. See RenderBlockS
electionInfo for more details. |
| 1288 if (paintInvalidationContainer.layer()->groupedMapping()) |
| 1289 RenderLayer::mapRectToPaintBackingCoordinates(&paintInvalidationContaine
r, selection); |
| 1290 invalidatePaintUsingContainer(&paintInvalidationContainer, selection, Invali
dationSelection); |
| 1291 } |
| 1292 |
1281 InvalidationReason RenderObject::invalidatePaintIfNeeded(const PaintInvalidation
State& paintInvalidationState, const RenderLayerModelObject& paintInvalidationCo
ntainer) | 1293 InvalidationReason RenderObject::invalidatePaintIfNeeded(const PaintInvalidation
State& paintInvalidationState, const RenderLayerModelObject& paintInvalidationCo
ntainer) |
1282 { | 1294 { |
1283 RenderView* v = view(); | 1295 RenderView* v = view(); |
1284 if (v->document().printing()) | 1296 if (v->document().printing()) |
1285 return InvalidationNone; // Don't invalidate paints if we're printing. | 1297 return InvalidationNone; // Don't invalidate paints if we're printing. |
1286 | 1298 |
1287 const LayoutRect oldBounds = previousPaintInvalidationRect(); | 1299 const LayoutRect oldBounds = previousPaintInvalidationRect(); |
1288 const LayoutPoint oldLocation = previousPositionFromPaintInvalidationBacking
(); | 1300 const LayoutPoint oldLocation = previousPositionFromPaintInvalidationBacking
(); |
1289 const LayoutRect newBounds = boundsRectForPaintInvalidation(&paintInvalidati
onContainer, &paintInvalidationState); | 1301 const LayoutRect newBounds = boundsRectForPaintInvalidation(&paintInvalidati
onContainer, &paintInvalidationState); |
1290 const LayoutPoint newLocation = RenderLayer::positionFromPaintInvalidationBa
cking(this, &paintInvalidationContainer, &paintInvalidationState); | 1302 const LayoutPoint newLocation = RenderLayer::positionFromPaintInvalidationBa
cking(this, &paintInvalidationContainer, &paintInvalidationState); |
1291 setPreviousPaintInvalidationRect(newBounds); | 1303 setPreviousPaintInvalidationRect(newBounds); |
1292 setPreviousPositionFromPaintInvalidationBacking(newLocation); | 1304 setPreviousPositionFromPaintInvalidationBacking(newLocation); |
1293 | 1305 |
1294 // If we are set to do a full paint invalidation that means the RenderView w
ill issue | 1306 // If we are set to do a full paint invalidation that means the RenderView w
ill issue |
1295 // paint invalidations. We can then skip issuing of paint invalidations for
the child | 1307 // paint invalidations. We can then skip issuing of paint invalidations for
the child |
1296 // renderers as they'll be covered by the RenderView. | 1308 // renderers as they'll be covered by the RenderView. |
1297 if (view()->doingFullPaintInvalidation()) | 1309 if (view()->doingFullPaintInvalidation()) |
1298 return InvalidationNone; | 1310 return InvalidationNone; |
1299 | 1311 |
1300 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), "RenderObject:
:invalidatePaintIfNeeded()", | 1312 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), "RenderObject:
:invalidatePaintIfNeeded()", |
1301 "object", this->debugName().ascii(), | 1313 "object", this->debugName().ascii(), |
1302 "info", jsonObjectForOldAndNewRects(oldBounds, oldLocation, newBounds, n
ewLocation)); | 1314 "info", jsonObjectForOldAndNewRects(oldBounds, oldLocation, newBounds, n
ewLocation)); |
1303 | 1315 |
1304 InvalidationReason invalidationReason = getPaintInvalidationReason(paintInva
lidationContainer, oldBounds, oldLocation, newBounds, newLocation); | 1316 InvalidationReason invalidationReason = getPaintInvalidationReason(paintInva
lidationContainer, oldBounds, oldLocation, newBounds, newLocation); |
1305 | 1317 |
| 1318 invalidateSelectionIfNeeded(paintInvalidationContainer); |
| 1319 |
1306 if (invalidationReason == InvalidationNone) | 1320 if (invalidationReason == InvalidationNone) |
1307 return invalidationReason; | 1321 return invalidationReason; |
1308 | 1322 |
1309 if (invalidationReason == InvalidationIncremental) { | 1323 if (invalidationReason == InvalidationIncremental) { |
1310 incrementallyInvalidatePaint(paintInvalidationContainer, oldBounds, newB
ounds, newLocation); | 1324 incrementallyInvalidatePaint(paintInvalidationContainer, oldBounds, newB
ounds, newLocation); |
1311 return invalidationReason; | 1325 return invalidationReason; |
1312 } | 1326 } |
1313 | 1327 |
1314 fullyInvalidatePaint(paintInvalidationContainer, invalidationReason, oldBoun
ds, newBounds); | 1328 fullyInvalidatePaint(paintInvalidationContainer, invalidationReason, oldBoun
ds, newBounds); |
1315 return invalidationReason; | 1329 return invalidationReason; |
(...skipping 1790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3106 // paintInvalidationStateIsDirty should be kept in sync with the | 3120 // paintInvalidationStateIsDirty should be kept in sync with the |
3107 // booleans that are cleared below. | 3121 // booleans that are cleared below. |
3108 ASSERT(paintInvalidationState.forceCheckForPaintInvalidation() || paintInval
idationStateIsDirty()); | 3122 ASSERT(paintInvalidationState.forceCheckForPaintInvalidation() || paintInval
idationStateIsDirty()); |
3109 setShouldDoFullPaintInvalidation(false); | 3123 setShouldDoFullPaintInvalidation(false); |
3110 setShouldDoFullPaintInvalidationIfSelfPaintingLayer(false); | 3124 setShouldDoFullPaintInvalidationIfSelfPaintingLayer(false); |
3111 setOnlyNeededPositionedMovementLayout(false); | 3125 setOnlyNeededPositionedMovementLayout(false); |
3112 setNeededLayoutBecauseOfChildren(false); | 3126 setNeededLayoutBecauseOfChildren(false); |
3113 setShouldInvalidateOverflowForPaint(false); | 3127 setShouldInvalidateOverflowForPaint(false); |
3114 setLayoutDidGetCalled(false); | 3128 setLayoutDidGetCalled(false); |
3115 setMayNeedPaintInvalidation(false); | 3129 setMayNeedPaintInvalidation(false); |
| 3130 clearShouldInvalidateSelection(); |
3116 } | 3131 } |
3117 | 3132 |
3118 bool RenderObject::isAllowedToModifyRenderTreeStructure(Document& document) | 3133 bool RenderObject::isAllowedToModifyRenderTreeStructure(Document& document) |
3119 { | 3134 { |
3120 return DeprecatedDisableModifyRenderTreeStructureAsserts::canModifyRenderTre
eStateInAnyState() | 3135 return DeprecatedDisableModifyRenderTreeStructureAsserts::canModifyRenderTre
eStateInAnyState() |
3121 || document.lifecycle().stateAllowsRenderTreeMutations(); | 3136 || document.lifecycle().stateAllowsRenderTreeMutations(); |
3122 } | 3137 } |
3123 | 3138 |
3124 DeprecatedDisableModifyRenderTreeStructureAsserts::DeprecatedDisableModifyRender
TreeStructureAsserts() | 3139 DeprecatedDisableModifyRenderTreeStructureAsserts::DeprecatedDisableModifyRender
TreeStructureAsserts() |
3125 : m_disabler(gModifyRenderTreeStructureAnyState, true) | 3140 : m_disabler(gModifyRenderTreeStructureAnyState, true) |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3173 { | 3188 { |
3174 if (object1) { | 3189 if (object1) { |
3175 const blink::RenderObject* root = object1; | 3190 const blink::RenderObject* root = object1; |
3176 while (root->parent()) | 3191 while (root->parent()) |
3177 root = root->parent(); | 3192 root = root->parent(); |
3178 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); | 3193 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); |
3179 } | 3194 } |
3180 } | 3195 } |
3181 | 3196 |
3182 #endif | 3197 #endif |
OLD | NEW |