diff options
Diffstat (limited to 'Source/WebCore/rendering/RenderMedia.cpp')
| -rw-r--r-- | Source/WebCore/rendering/RenderMedia.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Source/WebCore/rendering/RenderMedia.cpp b/Source/WebCore/rendering/RenderMedia.cpp index 385fb5068..ae488569c 100644 --- a/Source/WebCore/rendering/RenderMedia.cpp +++ b/Source/WebCore/rendering/RenderMedia.cpp @@ -29,7 +29,9 @@ #include "RenderMedia.h" #include "HTMLMediaElement.h" +#include "RenderFlowThread.h" #include "RenderView.h" +#include <wtf/StackStats.h> namespace WebCore { @@ -52,7 +54,7 @@ RenderMedia::~RenderMedia() HTMLMediaElement* RenderMedia::mediaElement() const { - return static_cast<HTMLMediaElement*>(node()); + return toHTMLMediaElement(node()); } void RenderMedia::layout() @@ -66,8 +68,17 @@ void RenderMedia::layout() if (!controlsRenderer) return; + bool controlsNeedLayout = controlsRenderer->needsLayout(); + // If the region chain has changed we also need to relayout the controls to update the region box info. + // FIXME: We can do better once we compute region box info for RenderReplaced, not only for RenderBlock. + const RenderFlowThread* flowThread = flowThreadContainingBlock(); + if (flowThread && !controlsNeedLayout) { + if (flowThread->pageLogicalSizeChanged()) + controlsNeedLayout = true; + } + LayoutSize newSize = contentBoxRect().size(); - if (newSize == oldSize && !controlsRenderer->needsLayout()) + if (newSize == oldSize && !controlsNeedLayout) return; // When calling layout() on a child node, a parent must either push a LayoutStateMaintainter, or |
