diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-17 16:21:14 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-17 16:21:14 +0200 |
commit | 8995b83bcbfbb68245f779b64e5517627c6cc6ea (patch) | |
tree | 17985605dab9263cc2444bd4d45f189e142cca7c /Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp | |
parent | b9c9652036d5e9f1e29c574f40bc73a35c81ace6 (diff) | |
download | qtwebkit-8995b83bcbfbb68245f779b64e5517627c6cc6ea.tar.gz |
Imported WebKit commit cf4f8fc6f19b0629f51860cb2d4b25e139d07e00 (http://svn.webkit.org/repository/webkit/trunk@131592)
New snapshot that includes the build fixes for Mac OS X 10.6 and earlier as well
as the previously cherry-picked changes
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp index b78cae0f3..07ed832ce 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp @@ -268,6 +268,7 @@ QQuickWebViewPrivate::QQuickWebViewPrivate(QQuickWebView* viewport) , filePicker(0) , databaseQuotaDialog(0) , colorChooser(0) + , m_betweenLoadCommitAndFirstFrame(false) , m_useDefaultContentItemSize(true) , m_navigatorQtObjectEnabled(false) , m_renderToOffscreenBuffer(false) @@ -330,14 +331,6 @@ void QQuickWebViewPrivate::loadDidStop() emit q->loadingChanged(&loadRequest); } -void QQuickWebViewPrivate::onComponentComplete() -{ - Q_Q(QQuickWebView); - m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data())); - m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data())); - pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data()); -} - void QQuickWebViewPrivate::setTransparentBackground(bool enable) { webPageProxy->setDrawsTransparentBackground(enable); @@ -370,6 +363,7 @@ void QQuickWebViewPrivate::loadDidCommit() Q_Q(QQuickWebView); ASSERT(q->loading()); + m_betweenLoadCommitAndFirstFrame = true; emit q->navigationHistoryChanged(); emit q->titleChanged(); } @@ -452,10 +446,18 @@ void QQuickWebViewPrivate::setNeedsDisplay() q->page()->d->paint(&painter); return; } - q->page()->update(); } +void QQuickWebViewPrivate::didRenderFrame() +{ + Q_Q(QQuickWebView); + if (m_betweenLoadCommitAndFirstFrame) { + emit q->experimental()->loadVisuallyCommitted(); + m_betweenLoadCommitAndFirstFrame = false; + } +} + void QQuickWebViewPrivate::processDidCrash() { Q_Q(QQuickWebView); @@ -478,8 +480,6 @@ void QQuickWebViewPrivate::didRelaunchProcess() { qWarning("WARNING: The web process has been successfully restarted."); - // Reset to default so that the later update can reach the web process. - webPageProxy->setCustomDeviceScaleFactor(0); webPageProxy->drawingArea()->setSize(viewSize(), IntSize()); updateViewportSize(); @@ -820,12 +820,17 @@ void QQuickWebViewLegacyPrivate::updateViewportSize() QSizeF viewportSize = q->boundingRect().size(); if (viewportSize.isEmpty()) return; + + float devicePixelRatio = webPageProxy->deviceScaleFactor(); pageView->setContentsSize(viewportSize); + // Make sure that our scale matches the one passed to setVisibleContentsRect. + pageView->setContentsScale(devicePixelRatio); + // The fixed layout is handled by the FrameView and the drawing area doesn't behave differently // whether its fixed or not. We still need to tell the drawing area which part of it // has to be rendered on tiles, and in desktop mode it's all of it. - webPageProxy->drawingArea()->setSize(viewportSize.toSize(), IntSize()); - webPageProxy->drawingArea()->setVisibleContentsRect(FloatRect(FloatPoint(), viewportSize), 1, FloatPoint()); + webPageProxy->drawingArea()->setSize((viewportSize / devicePixelRatio).toSize(), IntSize()); + webPageProxy->drawingArea()->setVisibleContentsRect(FloatRect(FloatPoint(), FloatSize(viewportSize / devicePixelRatio)), devicePixelRatio, FloatPoint()); } qreal QQuickWebViewLegacyPrivate::zoomFactor() const @@ -853,6 +858,11 @@ void QQuickWebViewFlickablePrivate::onComponentComplete() { QQuickWebViewPrivate::onComponentComplete(); + Q_Q(QQuickWebView); + m_pageViewportControllerClient.reset(new PageViewportControllerClientQt(q, pageView.data())); + m_pageViewportController.reset(new PageViewportController(webPageProxy.get(), m_pageViewportControllerClient.data())); + pageView->eventHandler()->setViewportController(m_pageViewportControllerClient.data()); + // Trigger setting of correct visibility flags after everything was allocated and initialized. _q_onVisibleChanged(); } @@ -868,7 +878,7 @@ void QQuickWebViewFlickablePrivate::updateViewportSize() Q_Q(QQuickWebView); if (m_pageViewportController) - m_pageViewportController->didChangeViewportSize(QSizeF(q->width(), q->height())); + m_pageViewportController->didChangeViewportSize(FloatSize(q->width(), q->height())); } void QQuickWebViewFlickablePrivate::pageDidRequestScroll(const QPoint& pos) @@ -877,13 +887,6 @@ void QQuickWebViewFlickablePrivate::pageDidRequestScroll(const QPoint& pos) m_pageViewportController->pageDidRequestScroll(pos); } -void QQuickWebViewFlickablePrivate::didChangeContentsSize(const QSize& newSize) -{ - QQuickWebViewPrivate::didChangeContentsSize(newSize); - pageView->setContentsSize(newSize); // emits contentsSizeChanged() - m_pageViewportController->didChangeContentsSize(newSize); -} - void QQuickWebViewFlickablePrivate::handleMouseEvent(QMouseEvent* event) { if (!pageView->eventHandler()) @@ -1233,7 +1236,7 @@ void QQuickWebViewExperimental::setDevicePixelRatio(qreal devicePixelRatio) if (0 >= devicePixelRatio || devicePixelRatio == this->devicePixelRatio()) return; - d->webPageProxy->setCustomDeviceScaleFactor(devicePixelRatio); + d->webPageProxy->setIntrinsicDeviceScaleFactor(devicePixelRatio); emit devicePixelRatioChanged(); } |