diff options
| author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-08-12 09:27:39 +0200 | 
|---|---|---|
| committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-08-12 09:27:39 +0200 | 
| commit | 3749d61e1f7a59f5ec5067e560af1eb610c82015 (patch) | |
| tree | 73dc228333948738bbe02976cacca8cd382bc978 /Source/WebCore/rendering/RenderFullScreen.cpp | |
| parent | b32b4dcd9a51ab8de6afc53d9e17f8707e1f7a5e (diff) | |
| download | qtwebkit-3749d61e1f7a59f5ec5067e560af1eb610c82015.tar.gz | |
Imported WebKit commit a77350243e054f3460d1137301d8b3faee3d2052 (http://svn.webkit.org/repository/webkit/trunk@125365)
New snapshot with build fixes for latest API changes in Qt and all WK1 Win MSVC fixes upstream
Diffstat (limited to 'Source/WebCore/rendering/RenderFullScreen.cpp')
| -rw-r--r-- | Source/WebCore/rendering/RenderFullScreen.cpp | 19 | 
1 files changed, 18 insertions, 1 deletions
diff --git a/Source/WebCore/rendering/RenderFullScreen.cpp b/Source/WebCore/rendering/RenderFullScreen.cpp index e0507388d..2f1c311b1 100644 --- a/Source/WebCore/rendering/RenderFullScreen.cpp +++ b/Source/WebCore/rendering/RenderFullScreen.cpp @@ -105,15 +105,32 @@ static PassRefPtr<RenderStyle> createFullScreenStyle()      return fullscreenStyle.release();  } -RenderObject* RenderFullScreen::wrapRenderer(RenderObject* object, Document* document) +RenderObject* RenderFullScreen::wrapRenderer(RenderObject* object, RenderObject* parent, Document* document)  {      RenderFullScreen* fullscreenRenderer = new (document->renderArena()) RenderFullScreen(document);      fullscreenRenderer->setStyle(createFullScreenStyle()); +    if (parent && !parent->isChildAllowed(fullscreenRenderer, fullscreenRenderer->style())) { +        fullscreenRenderer->destroy(); +        return 0; +    }      if (object) { +        // |object->parent()| can be null if the object is not yet attached +        // to |parent|.          if (RenderObject* parent = object->parent()) { +            RenderBlock* containingBlock = object->containingBlock(); +            ASSERT(containingBlock); +            // Since we are moving the |object| to a new parent |fullscreenRenderer|, +            // the line box tree underneath our |containingBlock| is not longer valid. +            containingBlock->deleteLineBoxTree(); +              parent->addChild(fullscreenRenderer, object);              object->remove(); +             +            // Always just do a full layout to ensure that line boxes get deleted properly. +            // Because objects moved from |parent| to |fullscreenRenderer|, we want to +            // make new line boxes instead of leaving the old ones around.              parent->setNeedsLayoutAndPrefWidthsRecalc(); +            containingBlock->setNeedsLayoutAndPrefWidthsRecalc();          }          fullscreenRenderer->addChild(object);          fullscreenRenderer->setNeedsLayoutAndPrefWidthsRecalc();  | 
