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) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. |
6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) | 6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) |
7 * Copyright (C) 2011 Google Inc. All rights reserved. | 7 * Copyright (C) 2011 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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
68 , m_parentFlowRenderer(0) | 68 , m_parentFlowRenderer(0) |
69 { | 69 { |
70 } | 70 } |
71 | 71 |
72 NodeRenderingContext::~NodeRenderingContext() | 72 NodeRenderingContext::~NodeRenderingContext() |
73 { | 73 { |
74 } | 74 } |
75 | 75 |
76 static bool isRendererReparented(const RenderObject* renderer) | 76 static bool isRendererReparented(const RenderObject* renderer) |
77 { | 77 { |
78 if (!renderer->node()->isElementNode()) | 78 if (!renderer || !renderer->node() || !renderer->node()->isElementNode()) |
79 return false; | 79 return false; |
80 if (renderer->style() && !renderer->style()->flowThread().isEmpty()) | 80 if (renderer->style() && !renderer->style()->flowThread().isEmpty()) |
81 return true; | 81 return true; |
82 if (toElement(renderer->node())->shouldBeReparentedUnderRenderView(renderer- >style())) | 82 if (toElement(renderer->node())->shouldBeReparentedUnderRenderView(renderer- >style())) |
83 return true; | 83 return true; |
84 return false; | 84 return false; |
85 } | 85 } |
86 | 86 |
87 RenderObject* NodeRenderingContext::nextRenderer() const | 87 RenderObject* NodeRenderingContext::nextRenderer() const |
88 { | 88 { |
(...skipping 22 matching lines...) Expand all Loading... | |
111 } | 111 } |
112 | 112 |
113 if (m_parentFlowRenderer) | 113 if (m_parentFlowRenderer) |
114 return m_parentFlowRenderer->nextRendererForNode(m_node); | 114 return m_parentFlowRenderer->nextRendererForNode(m_node); |
115 | 115 |
116 // Avoid an O(N^2) problem with this function by not checking for | 116 // Avoid an O(N^2) problem with this function by not checking for |
117 // nextRenderer() when the parent element hasn't attached yet. | 117 // nextRenderer() when the parent element hasn't attached yet. |
118 if (m_renderingParent && !m_renderingParent->attached()) | 118 if (m_renderingParent && !m_renderingParent->attached()) |
119 return 0; | 119 return 0; |
120 | 120 |
121 Element* fullScreenElement = element ? element->document()->webkitCurrentFul lScreenElement() : 0; | |
121 for (Node* sibling = NodeRenderingTraversal::nextSibling(m_node); sibling; s ibling = NodeRenderingTraversal::nextSibling(sibling)) { | 122 for (Node* sibling = NodeRenderingTraversal::nextSibling(m_node); sibling; s ibling = NodeRenderingTraversal::nextSibling(sibling)) { |
122 RenderObject* renderer = sibling->renderer(); | 123 RenderObject* renderer = sibling->renderer(); |
124 if (renderer && renderer->node() == fullScreenElement) { | |
125 // If the sibling node in DOM is the fullscreened element, the | |
126 // sibling renderer should be the RenderFullScreen object it's | |
127 // wrapped in. | |
128 renderer = element->document()->fullScreenRenderer(); | |
esprehn
2013/05/14 21:32:28
This doesn't seem like the right place to fix this
falken
2013/05/15 01:46:36
Yeah I thought optimistically that fixing it in No
| |
129 } | |
123 if (renderer && !isRendererReparented(renderer)) | 130 if (renderer && !isRendererReparented(renderer)) |
124 return renderer; | 131 return renderer; |
125 } | 132 } |
126 | 133 |
127 return 0; | 134 return 0; |
128 } | 135 } |
129 | 136 |
130 RenderObject* NodeRenderingContext::previousRenderer() const | 137 RenderObject* NodeRenderingContext::previousRenderer() const |
131 { | 138 { |
132 if (RenderObject* renderer = m_node->renderer()) | 139 if (RenderObject* renderer = m_node->renderer()) |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
315 newRenderer->setFlowThreadState(parentRenderer->flowThreadState()); | 322 newRenderer->setFlowThreadState(parentRenderer->flowThreadState()); |
316 | 323 |
317 RenderObject* nextRenderer = this->nextRenderer(); | 324 RenderObject* nextRenderer = this->nextRenderer(); |
318 textNode->setRenderer(newRenderer); | 325 textNode->setRenderer(newRenderer); |
319 // Parent takes care of the animations, no need to call setAnimatableStyle. | 326 // Parent takes care of the animations, no need to call setAnimatableStyle. |
320 newRenderer->setStyle(m_style.release()); | 327 newRenderer->setStyle(m_style.release()); |
321 parentRenderer->addChild(newRenderer, nextRenderer); | 328 parentRenderer->addChild(newRenderer, nextRenderer); |
322 } | 329 } |
323 | 330 |
324 } | 331 } |
OLD | NEW |