| 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 1323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1334 | 1334 |
| 1335 RenderLayerModelObject* RenderObject::containerForRepaint() const | 1335 RenderLayerModelObject* RenderObject::containerForRepaint() const |
| 1336 { | 1336 { |
| 1337 RenderView* v = view(); | 1337 RenderView* v = view(); |
| 1338 if (!v) | 1338 if (!v) |
| 1339 return 0; | 1339 return 0; |
| 1340 | 1340 |
| 1341 RenderLayerModelObject* repaintContainer = 0; | 1341 RenderLayerModelObject* repaintContainer = 0; |
| 1342 | 1342 |
| 1343 if (v->usesCompositing()) { | 1343 if (v->usesCompositing()) { |
| 1344 if (RenderLayer* parentLayer = enclosingLayer()) { | 1344 // FIXME: CompositingState is not necessarily up to date for many caller
s of this function. |
| 1345 // FIXME: CompositingState is not necessarily up to date for many ca
llers of this function. | 1345 DisableCompositingQueryAsserts disabler; |
| 1346 DisableCompositingQueryAsserts disabler; | |
| 1347 | 1346 |
| 1348 RenderLayer* compLayer = parentLayer->enclosingCompositingLayerForRe
paint(); | 1347 if (RenderLayer* compositingLayer = enclosingLayer()->enclosingCompositi
ngLayerForRepaint()) |
| 1349 if (compLayer) | 1348 repaintContainer = compositingLayer->renderer(); |
| 1350 repaintContainer = compLayer->renderer(); | |
| 1351 } | |
| 1352 } | 1349 } |
| 1353 | 1350 |
| 1354 if (document().view()->hasSoftwareFilters()) { | 1351 if (document().view()->hasSoftwareFilters()) { |
| 1355 if (RenderLayer* parentLayer = enclosingLayer()) { | 1352 if (RenderLayer* enclosingFilterLayer = enclosingLayer()->enclosingFilte
rLayer()) |
| 1356 RenderLayer* enclosingFilterLayer = parentLayer->enclosingFilterLaye
r(); | 1353 return enclosingFilterLayer->renderer(); |
| 1357 if (enclosingFilterLayer) | |
| 1358 return enclosingFilterLayer->renderer(); | |
| 1359 } | |
| 1360 } | 1354 } |
| 1361 | 1355 |
| 1362 // If we have a flow thread, then we need to do individual repaints within t
he RenderRegions instead. | 1356 // If we have a flow thread, then we need to do individual repaints within t
he RenderRegions instead. |
| 1363 // Return the flow thread as a repaint container in order to create a chokep
oint that allows us to change | 1357 // Return the flow thread as a repaint container in order to create a chokep
oint that allows us to change |
| 1364 // repainting to do individual region repaints. | 1358 // repainting to do individual region repaints. |
| 1365 RenderFlowThread* parentRenderFlowThread = flowThreadContainingBlock(); | 1359 RenderFlowThread* parentRenderFlowThread = flowThreadContainingBlock(); |
| 1366 if (parentRenderFlowThread) { | 1360 if (parentRenderFlowThread) { |
| 1367 // The ancestor document will do the reparenting when the repaint propag
ates further up. | 1361 // The ancestor document will do the reparenting when the repaint propag
ates further up. |
| 1368 // We're just a seamless child document, and we don't need to do the hac
king. | 1362 // We're just a seamless child document, and we don't need to do the hac
king. |
| 1369 if (parentRenderFlowThread->document() != document()) | 1363 if (parentRenderFlowThread->document() != document()) |
| (...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1983 || m_style->zIndex() != newStyle->zIndex() | 1977 || m_style->zIndex() != newStyle->zIndex() |
| 1984 || m_style->hasAutoZIndex() != newStyle->hasAutoZIndex(); | 1978 || m_style->hasAutoZIndex() != newStyle->hasAutoZIndex(); |
| 1985 if (visibilityChanged) { | 1979 if (visibilityChanged) { |
| 1986 document().setAnnotatedRegionsDirty(true); | 1980 document().setAnnotatedRegionsDirty(true); |
| 1987 if (AXObjectCache* cache = document().existingAXObjectCache()) | 1981 if (AXObjectCache* cache = document().existingAXObjectCache()) |
| 1988 cache->childrenChanged(parent()); | 1982 cache->childrenChanged(parent()); |
| 1989 } | 1983 } |
| 1990 | 1984 |
| 1991 // Keep layer hierarchy visibility bits up to date if visibility cha
nges. | 1985 // Keep layer hierarchy visibility bits up to date if visibility cha
nges. |
| 1992 if (m_style->visibility() != newStyle->visibility()) { | 1986 if (m_style->visibility() != newStyle->visibility()) { |
| 1993 if (RenderLayer* l = enclosingLayer()) { | 1987 // We might not have an enclosing layer yet because we might not
be in the tree. |
| 1994 if (newStyle->visibility() == VISIBLE) | 1988 if (RenderLayer* layer = enclosingLayer()) { |
| 1995 l->setHasVisibleContent(); | 1989 if (newStyle->visibility() == VISIBLE) { |
| 1996 else if (l->hasVisibleContent() && (this == l->renderer() ||
l->renderer()->style()->visibility() != VISIBLE)) { | 1990 layer->setHasVisibleContent(); |
| 1997 l->dirtyVisibleContentStatus(); | 1991 } else if (layer->hasVisibleContent() && (this == layer->ren
derer() || layer->renderer()->style()->visibility() != VISIBLE)) { |
| 1992 layer->dirtyVisibleContentStatus(); |
| 1998 if (diff > StyleDifferenceRepaintLayer) | 1993 if (diff > StyleDifferenceRepaintLayer) |
| 1999 repaint(); | 1994 repaint(); |
| 2000 } | 1995 } |
| 2001 } | 1996 } |
| 2002 } | 1997 } |
| 2003 } | 1998 } |
| 2004 | 1999 |
| 2005 if (m_parent && (newStyle->outlineSize() < m_style->outlineSize() || sho
uldRepaintForStyleDifference(diff))) | 2000 if (m_parent && (newStyle->outlineSize() < m_style->outlineSize() || sho
uldRepaintForStyleDifference(diff))) |
| 2006 repaint(); | 2001 repaint(); |
| 2007 if (isFloating() && (m_style->floating() != newStyle->floating())) | 2002 if (isFloating() && (m_style->floating() != newStyle->floating())) |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2369 | 2364 |
| 2370 void RenderObject::computeLayerHitTestRects(LayerHitTestRects& layerRects) const | 2365 void RenderObject::computeLayerHitTestRects(LayerHitTestRects& layerRects) const |
| 2371 { | 2366 { |
| 2372 // Figure out what layer our container is in. Any offset (or new layer) for
this | 2367 // Figure out what layer our container is in. Any offset (or new layer) for
this |
| 2373 // renderer within it's container will be applied in addLayerHitTestRects. | 2368 // renderer within it's container will be applied in addLayerHitTestRects. |
| 2374 LayoutPoint layerOffset; | 2369 LayoutPoint layerOffset; |
| 2375 const RenderLayer* currentLayer = 0; | 2370 const RenderLayer* currentLayer = 0; |
| 2376 | 2371 |
| 2377 if (!hasLayer()) { | 2372 if (!hasLayer()) { |
| 2378 RenderObject* container = this->container(); | 2373 RenderObject* container = this->container(); |
| 2379 if (container) { | 2374 currentLayer = container->enclosingLayer(); |
| 2380 currentLayer = container->enclosingLayer(); | 2375 if (container && currentLayer->renderer() != container) { |
| 2381 if (currentLayer && currentLayer->renderer() != container) { | 2376 layerOffset.move(container->offsetFromAncestorContainer(currentLayer
->renderer())); |
| 2382 layerOffset.move(container->offsetFromAncestorContainer(currentL
ayer->renderer())); | 2377 // If the layer itself is scrolled, we have to undo the subtraction
of its scroll |
| 2383 // If the layer itself is scrolled, we have to undo the subtract
ion of its scroll | 2378 // offset since we want the offset relative to the scrolling content
, not the |
| 2384 // offset since we want the offset relative to the scrolling con
tent, not the | 2379 // element itself. |
| 2385 // element itself. | 2380 if (currentLayer->renderer()->hasOverflowClip()) |
| 2386 if (currentLayer->renderer()->hasOverflowClip()) | 2381 layerOffset.move(currentLayer->renderBox()->scrolledContentOffse
t()); |
| 2387 layerOffset.move(currentLayer->renderBox()->scrolledContentO
ffset()); | |
| 2388 } | |
| 2389 } else { | |
| 2390 currentLayer = enclosingLayer(); | |
| 2391 } | 2382 } |
| 2392 if (!currentLayer) | |
| 2393 return; | |
| 2394 } | 2383 } |
| 2395 | 2384 |
| 2396 this->addLayerHitTestRects(layerRects, currentLayer, layerOffset, LayoutRect
()); | 2385 this->addLayerHitTestRects(layerRects, currentLayer, layerOffset, LayoutRect
()); |
| 2397 } | 2386 } |
| 2398 | 2387 |
| 2399 void RenderObject::addLayerHitTestRects(LayerHitTestRects& layerRects, const Ren
derLayer* currentLayer, const LayoutPoint& layerOffset, const LayoutRect& contai
nerRect) const | 2388 void RenderObject::addLayerHitTestRects(LayerHitTestRects& layerRects, const Ren
derLayer* currentLayer, const LayoutPoint& layerOffset, const LayoutRect& contai
nerRect) const |
| 2400 { | 2389 { |
| 2401 ASSERT(currentLayer); | 2390 ASSERT(currentLayer); |
| 2402 ASSERT(currentLayer == this->enclosingLayer()); | 2391 ASSERT(currentLayer == this->enclosingLayer()); |
| 2403 | 2392 |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2636 parent()->dirtyLinesFromChangedChild(this); | 2625 parent()->dirtyLinesFromChangedChild(this); |
| 2637 } | 2626 } |
| 2638 | 2627 |
| 2639 void RenderObject::willBeRemovedFromTree() | 2628 void RenderObject::willBeRemovedFromTree() |
| 2640 { | 2629 { |
| 2641 // FIXME: We should ASSERT(isRooted()) but we have some out-of-order removal
s which would need to be fixed first. | 2630 // FIXME: We should ASSERT(isRooted()) but we have some out-of-order removal
s which would need to be fixed first. |
| 2642 | 2631 |
| 2643 // If we remove a visible child from an invisible parent, we don't know the
layer visibility any more. | 2632 // If we remove a visible child from an invisible parent, we don't know the
layer visibility any more. |
| 2644 RenderLayer* layer = 0; | 2633 RenderLayer* layer = 0; |
| 2645 if (parent()->style()->visibility() != VISIBLE && style()->visibility() == V
ISIBLE && !hasLayer()) { | 2634 if (parent()->style()->visibility() != VISIBLE && style()->visibility() == V
ISIBLE && !hasLayer()) { |
| 2646 if ((layer = parent()->enclosingLayer())) | 2635 layer = parent()->enclosingLayer(); |
| 2647 layer->dirtyVisibleContentStatus(); | 2636 layer->dirtyVisibleContentStatus(); |
| 2648 } | 2637 } |
| 2649 | 2638 |
| 2650 // Keep our layer hierarchy updated. | 2639 // Keep our layer hierarchy updated. |
| 2651 if (firstChild() || hasLayer()) { | 2640 if (firstChild() || hasLayer()) { |
| 2652 if (!layer) | 2641 if (!layer) |
| 2653 layer = parent()->enclosingLayer(); | 2642 layer = parent()->enclosingLayer(); |
| 2654 removeLayers(layer); | 2643 removeLayers(layer); |
| 2655 } | 2644 } |
| 2656 | 2645 |
| 2657 if (isOutOfFlowPositioned() && parent()->childrenInline()) | 2646 if (isOutOfFlowPositioned() && parent()->childrenInline()) |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3347 { | 3336 { |
| 3348 if (object1) { | 3337 if (object1) { |
| 3349 const WebCore::RenderObject* root = object1; | 3338 const WebCore::RenderObject* root = object1; |
| 3350 while (root->parent()) | 3339 while (root->parent()) |
| 3351 root = root->parent(); | 3340 root = root->parent(); |
| 3352 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); | 3341 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); |
| 3353 } | 3342 } |
| 3354 } | 3343 } |
| 3355 | 3344 |
| 3356 #endif | 3345 #endif |
| OLD | NEW |