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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. 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 16 matching lines...) Expand all Loading... |
27 #include "core/rendering/RenderBox.h" | 27 #include "core/rendering/RenderBox.h" |
28 | 28 |
29 #include <math.h> | 29 #include <math.h> |
30 #include <algorithm> | 30 #include <algorithm> |
31 #include "HTMLNames.h" | 31 #include "HTMLNames.h" |
32 #include "core/dom/Document.h" | 32 #include "core/dom/Document.h" |
33 #include "core/dom/WebCoreMemoryInstrumentation.h" | 33 #include "core/dom/WebCoreMemoryInstrumentation.h" |
34 #include "core/editing/htmlediting.h" | 34 #include "core/editing/htmlediting.h" |
35 #include "core/html/HTMLElement.h" | 35 #include "core/html/HTMLElement.h" |
36 #include "core/html/HTMLFrameOwnerElement.h" | 36 #include "core/html/HTMLFrameOwnerElement.h" |
| 37 #include "core/html/HTMLHtmlElement.h" |
37 #include "core/page/Frame.h" | 38 #include "core/page/Frame.h" |
38 #include "core/page/FrameView.h" | 39 #include "core/page/FrameView.h" |
39 #include "core/page/Page.h" | 40 #include "core/page/Page.h" |
40 #include "core/platform/graphics/FloatQuad.h" | 41 #include "core/platform/graphics/FloatQuad.h" |
41 #include "core/platform/graphics/GraphicsContextStateSaver.h" | 42 #include "core/platform/graphics/GraphicsContextStateSaver.h" |
42 #include "core/platform/graphics/transforms/TransformState.h" | 43 #include "core/platform/graphics/transforms/TransformState.h" |
43 #include "core/rendering/HitTestResult.h" | 44 #include "core/rendering/HitTestResult.h" |
44 #include "core/rendering/PaintInfo.h" | 45 #include "core/rendering/PaintInfo.h" |
45 #include "core/rendering/RenderBoxRegionInfo.h" | 46 #include "core/rendering/RenderBoxRegionInfo.h" |
46 #include "core/rendering/RenderFlexibleBox.h" | 47 #include "core/rendering/RenderFlexibleBox.h" |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 | 204 |
204 void RenderBox::styleWillChange(StyleDifference diff, const RenderStyle* newStyl
e) | 205 void RenderBox::styleWillChange(StyleDifference diff, const RenderStyle* newStyl
e) |
205 { | 206 { |
206 s_hadOverflowClip = hasOverflowClip(); | 207 s_hadOverflowClip = hasOverflowClip(); |
207 | 208 |
208 RenderStyle* oldStyle = style(); | 209 RenderStyle* oldStyle = style(); |
209 if (oldStyle) { | 210 if (oldStyle) { |
210 // The background of the root element or the body element could propagat
e up to | 211 // The background of the root element or the body element could propagat
e up to |
211 // the canvas. Just dirty the entire canvas when our style changes subs
tantially. | 212 // the canvas. Just dirty the entire canvas when our style changes subs
tantially. |
212 if (diff >= StyleDifferenceRepaint && node() && | 213 if (diff >= StyleDifferenceRepaint && node() && |
213 (node()->hasTagName(htmlTag) || node()->hasTagName(bodyTag))) { | 214 (isHTMLHtmlElement(node()) || node()->hasTagName(bodyTag))) { |
214 view()->repaint(); | 215 view()->repaint(); |
215 | 216 |
216 if (oldStyle->hasEntirelyFixedBackground() != newStyle->hasEntirelyF
ixedBackground()) | 217 if (oldStyle->hasEntirelyFixedBackground() != newStyle->hasEntirelyF
ixedBackground()) |
217 view()->compositor()->rootFixedBackgroundsChanged(); | 218 view()->compositor()->rootFixedBackgroundsChanged(); |
218 } | 219 } |
219 | 220 |
220 // When a layout hint happens and an object's position style changes, we
have to do a layout | 221 // When a layout hint happens and an object's position style changes, we
have to do a layout |
221 // to dirty the render tree using the old position value now. | 222 // to dirty the render tree using the old position value now. |
222 if (diff == StyleDifferenceLayout && parent() && oldStyle->position() !=
newStyle->position()) { | 223 if (diff == StyleDifferenceLayout && parent() && oldStyle->position() !=
newStyle->position()) { |
223 markContainingBlocksForLayout(); | 224 markContainingBlocksForLayout(); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 setFloating(!isOutOfFlowPositioned() && styleToUse->isFloating()); | 342 setFloating(!isOutOfFlowPositioned() && styleToUse->isFloating()); |
342 | 343 |
343 // We also handle <body> and <html>, whose overflow applies to the viewport. | 344 // We also handle <body> and <html>, whose overflow applies to the viewport. |
344 if (styleToUse->overflowX() != OVISIBLE && !isRootObject && isRenderBlock())
{ | 345 if (styleToUse->overflowX() != OVISIBLE && !isRootObject && isRenderBlock())
{ |
345 bool boxHasOverflowClip = true; | 346 bool boxHasOverflowClip = true; |
346 if (isBody()) { | 347 if (isBody()) { |
347 // Overflow on the body can propagate to the viewport under the foll
owing conditions. | 348 // Overflow on the body can propagate to the viewport under the foll
owing conditions. |
348 // (1) The root element is <html>. | 349 // (1) The root element is <html>. |
349 // (2) We are the primary <body> (can be checked by looking at docum
ent.body). | 350 // (2) We are the primary <body> (can be checked by looking at docum
ent.body). |
350 // (3) The root element has visible overflow. | 351 // (3) The root element has visible overflow. |
351 if (document()->documentElement()->hasTagName(htmlTag) && | 352 if (isHTMLHtmlElement(document()->documentElement()) |
352 document()->body() == node() && | 353 && document()->body() == node() |
353 document()->documentElement()->renderer()->style()->overflowX()
== OVISIBLE) | 354 && document()->documentElement()->renderer()->style()->overflowX
() == OVISIBLE) |
354 boxHasOverflowClip = false; | 355 boxHasOverflowClip = false; |
355 } | 356 } |
356 | 357 |
357 // Check for overflow clip. | 358 // Check for overflow clip. |
358 // It's sufficient to just check one direction, since it's illegal to ha
ve visible on only one overflow value. | 359 // It's sufficient to just check one direction, since it's illegal to ha
ve visible on only one overflow value. |
359 if (boxHasOverflowClip) { | 360 if (boxHasOverflowClip) { |
360 if (!s_hadOverflowClip) | 361 if (!s_hadOverflowClip) |
361 // Erase the overflow | 362 // Erase the overflow |
362 repaint(); | 363 repaint(); |
363 setHasOverflowClip(); | 364 setHasOverflowClip(); |
364 } | 365 } |
365 } | 366 } |
366 | 367 |
(...skipping 4279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4646 | 4647 |
4647 void RenderBox::reportStaticMembersMemoryUsage(MemoryInstrumentation* memoryInst
rumentation) | 4648 void RenderBox::reportStaticMembersMemoryUsage(MemoryInstrumentation* memoryInst
rumentation) |
4648 { | 4649 { |
4649 memoryInstrumentation->addRootObject(gOverrideHeightMap, WebCoreMemoryTypes:
:RenderingStructures); | 4650 memoryInstrumentation->addRootObject(gOverrideHeightMap, WebCoreMemoryTypes:
:RenderingStructures); |
4650 memoryInstrumentation->addRootObject(gOverrideWidthMap, WebCoreMemoryTypes::
RenderingStructures); | 4651 memoryInstrumentation->addRootObject(gOverrideWidthMap, WebCoreMemoryTypes::
RenderingStructures); |
4651 memoryInstrumentation->addRootObject(gOverrideContainingBlockLogicalHeightMa
p, WebCoreMemoryTypes::RenderingStructures); | 4652 memoryInstrumentation->addRootObject(gOverrideContainingBlockLogicalHeightMa
p, WebCoreMemoryTypes::RenderingStructures); |
4652 memoryInstrumentation->addRootObject(gOverrideContainingBlockLogicalWidthMap
, WebCoreMemoryTypes::RenderingStructures); | 4653 memoryInstrumentation->addRootObject(gOverrideContainingBlockLogicalWidthMap
, WebCoreMemoryTypes::RenderingStructures); |
4653 } | 4654 } |
4654 | 4655 |
4655 } // namespace WebCore | 4656 } // namespace WebCore |
OLD | NEW |