[Qt][WK2] Add the componentComplete method to WebView
authorabecsi@webkit.org <abecsi@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 Jan 2012 19:47:53 +0000 (19:47 +0000)
committerabecsi@webkit.org <abecsi@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 Jan 2012 19:47:53 +0000 (19:47 +0000)
https://bugs.webkit.org/show_bug.cgi?id=77111

Reviewed by Kenneth Rohde Christiansen.

Move the touch/desktop initialization to componentComplete.
Also return valid default values in the viewport info functions
if the interaction engine is not yet initialized because the
viewport info component could finish initialization earlier
than the WebView, which results in QML warnings during MiniBrowser
startup.

* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewPrivate::setUseTraditionalDesktopBehaviour):
(QQuickWebView::geometryChanged):
(QQuickWebView::componentComplete):
* UIProcess/API/qt/qquickwebview_p.h:
* UIProcess/API/qt/qwebviewportinfo.cpp:
(QWebViewportInfo::currentScale):
(QWebViewportInfo::devicePixelRatio):
(QWebViewportInfo::initialScale):
(QWebViewportInfo::minimumScale):
(QWebViewportInfo::maximumScale):
(QWebViewportInfo::isScalable):
(QWebViewportInfo::layoutSize):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106022 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h
Source/WebKit2/UIProcess/API/qt/qwebviewportinfo.cpp

index 9f8a9d2..afb444a 100644 (file)
@@ -1,3 +1,31 @@
+2012-01-26  Andras Becsi  <andras.becsi@nokia.com>
+
+        [Qt][WK2] Add the componentComplete method to WebView
+        https://bugs.webkit.org/show_bug.cgi?id=77111
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Move the touch/desktop initialization to componentComplete.
+        Also return valid default values in the viewport info functions
+        if the interaction engine is not yet initialized because the
+        viewport info component could finish initialization earlier
+        than the WebView, which results in QML warnings during MiniBrowser
+        startup.
+
+        * UIProcess/API/qt/qquickwebview.cpp:
+        (QQuickWebViewPrivate::setUseTraditionalDesktopBehaviour):
+        (QQuickWebView::geometryChanged):
+        (QQuickWebView::componentComplete):
+        * UIProcess/API/qt/qquickwebview_p.h:
+        * UIProcess/API/qt/qwebviewportinfo.cpp:
+        (QWebViewportInfo::currentScale):
+        (QWebViewportInfo::devicePixelRatio):
+        (QWebViewportInfo::initialScale):
+        (QWebViewportInfo::minimumScale):
+        (QWebViewportInfo::maximumScale):
+        (QWebViewportInfo::isScalable):
+        (QWebViewportInfo::layoutSize):
+
 2012-01-26  Anders Carlsson  <andersca@apple.com>
 
         WebWheelEvent::Phase and PlatformWheelEvent::Phase declarations should match AppKit
index ea85442..618841c 100644 (file)
@@ -550,16 +550,8 @@ void QQuickWebViewPrivate::_q_onOpenPanelFinished(int result)
 
 void QQuickWebViewPrivate::setUseTraditionalDesktopBehaviour(bool enable)
 {
-    Q_Q(QQuickWebView);
-
-    // Do not guard, testing for the same value, as we call this from the constructor.
-
     webPageProxy->setUseFixedLayout(!enable);
     pageView->setUsesTraditionalDesktopBehaviour(enable);
-    if (enable)
-        initializeDesktop(q);
-    else
-        initializeTouch(q);
 }
 
 void QQuickWebViewPrivate::setViewInAttachedProperties(QObject* object)
@@ -1054,12 +1046,24 @@ void QQuickWebView::geometryChanged(const QRectF& newGeometry, const QRectF& old
 {
     Q_D(QQuickWebView);
     QQuickItem::geometryChanged(newGeometry, oldGeometry);
-    if (newGeometry.size() != oldGeometry.size()) {
-        if (d->pageView->usesTraditionalDesktopBehaviour())
-            d->updateDesktopViewportSize();
-        else
-            d->updateTouchViewportSize();
-    }
+
+    if (newGeometry.isEmpty() || newGeometry.size() == oldGeometry.size())
+        return;
+
+    if (d->pageView->usesTraditionalDesktopBehaviour())
+        d->updateDesktopViewportSize();
+    else
+        d->updateTouchViewportSize();
+}
+
+void QQuickWebView::componentComplete()
+{
+    Q_D(QQuickWebView);
+    QQuickItem::componentComplete();
+    if (d->pageView->usesTraditionalDesktopBehaviour())
+        d->initializeDesktop(this);
+    else
+        d->initializeTouch(this);
 }
 
 void QQuickWebView::keyPressEvent(QKeyEvent* event)
index 45a8df2..3c70179 100644 (file)
@@ -135,7 +135,7 @@ Q_SIGNALS:
 
 protected:
     virtual void geometryChanged(const QRectF&, const QRectF&);
-
+    virtual void componentComplete();
     virtual void keyPressEvent(QKeyEvent*);
     virtual void keyReleaseEvent(QKeyEvent*);
     virtual void inputMethodEvent(QInputMethodEvent*);
index 735196f..69b4a31 100644 (file)
@@ -44,7 +44,7 @@ QSize QWebViewportInfo::contentsSize() const
 QVariant QWebViewportInfo::currentScale() const
 {
     if (!m_webViewPrivate->interactionEngine)
-        return QVariant();
+        return QVariant(1.0);
 
     return m_webViewPrivate->interactionEngine->currentCSSScale();
 }
@@ -52,7 +52,7 @@ QVariant QWebViewportInfo::currentScale() const
 QVariant QWebViewportInfo::devicePixelRatio() const
 {
     if (!m_webViewPrivate->interactionEngine)
-        return QVariant();
+        return QVariant(1.0);
 
     return m_webViewPrivate->interactionEngine->constraints().devicePixelRatio;
 }
@@ -60,7 +60,7 @@ QVariant QWebViewportInfo::devicePixelRatio() const
 QVariant QWebViewportInfo::initialScale() const
 {
     if (!m_webViewPrivate->interactionEngine)
-        return QVariant();
+        return QVariant(1.0);
 
     return m_webViewPrivate->interactionEngine->constraints().initialScale;
 }
@@ -68,7 +68,7 @@ QVariant QWebViewportInfo::initialScale() const
 QVariant QWebViewportInfo::minimumScale() const
 {
     if (!m_webViewPrivate->interactionEngine)
-        return QVariant();
+        return QVariant(0.25);
 
     return m_webViewPrivate->interactionEngine->constraints().minimumScale;
 }
@@ -76,7 +76,7 @@ QVariant QWebViewportInfo::minimumScale() const
 QVariant QWebViewportInfo::maximumScale() const
 {
     if (!m_webViewPrivate->interactionEngine)
-        return QVariant();
+        return QVariant(1.8);
 
     return m_webViewPrivate->interactionEngine->constraints().maximumScale;
 }
@@ -84,7 +84,7 @@ QVariant QWebViewportInfo::maximumScale() const
 QVariant QWebViewportInfo::isScalable() const
 {
     if (!m_webViewPrivate->interactionEngine)
-        return QVariant();
+        return QVariant(true);
 
     return m_webViewPrivate->interactionEngine->constraints().isUserScalable;
 }
@@ -92,7 +92,7 @@ QVariant QWebViewportInfo::isScalable() const
 QVariant QWebViewportInfo::layoutSize() const
 {
     if (!m_webViewPrivate->interactionEngine)
-        return QVariant();
+        return QVariant(QSize());
 
     return m_webViewPrivate->interactionEngine->constraints().layoutSize;
 }