Index: Source/core/rendering/RenderInline.cpp |
diff --git a/Source/core/rendering/RenderInline.cpp b/Source/core/rendering/RenderInline.cpp |
index 7ddd169949a5ba323cef880bddd90e4aa98af48c..280a5a89f94ad814b2969eb38bd2fffb49cd4184 100644 |
--- a/Source/core/rendering/RenderInline.cpp |
+++ b/Source/core/rendering/RenderInline.cpp |
@@ -32,6 +32,7 @@ |
#include "core/rendering/LayoutRectRecorder.h" |
#include "core/rendering/RenderBlock.h" |
#include "core/rendering/RenderFlowThread.h" |
+#include "core/rendering/RenderFullScreen.h" |
#include "core/rendering/RenderGeometryMap.h" |
#include "core/rendering/RenderLayer.h" |
#include "core/rendering/RenderTheme.h" |
@@ -344,6 +345,17 @@ |
// Create a clone of this inline. |
RenderInline* cloneInline = clone(); |
cloneInline->setContinuation(oldCont); |
+ |
+ // If we're splitting the inline containing the fullscreened element, |
+ // |beforeChild| may be the renderer for the fullscreened element. However, |
+ // that renderer is wrapped in a RenderFullScreen, so |this| is not its |
+ // parent. Since the splitting logic expects |this| to be the parent, set |
+ // |beforeChild| to be the RenderFullScreen. |
+ if (FullscreenElementStack* fullscreen = FullscreenElementStack::fromIfExists(&document())) { |
+ const Element* fullScreenElement = fullscreen->webkitCurrentFullScreenElement(); |
+ if (fullScreenElement && beforeChild && beforeChild->node() == fullScreenElement) |
+ beforeChild = fullscreen->fullScreenRenderer(); |
+ } |
// Now take all of the children from beforeChild to the end and remove |
// them from |this| and place them in the clone. |