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
+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
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)
{
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)
protected:
virtual void geometryChanged(const QRectF&, const QRectF&);
-
+ virtual void componentComplete();
virtual void keyPressEvent(QKeyEvent*);
virtual void keyReleaseEvent(QKeyEvent*);
virtual void inputMethodEvent(QInputMethodEvent*);
QVariant QWebViewportInfo::currentScale() const
{
if (!m_webViewPrivate->interactionEngine)
- return QVariant();
+ return QVariant(1.0);
return m_webViewPrivate->interactionEngine->currentCSSScale();
}
QVariant QWebViewportInfo::devicePixelRatio() const
{
if (!m_webViewPrivate->interactionEngine)
- return QVariant();
+ return QVariant(1.0);
return m_webViewPrivate->interactionEngine->constraints().devicePixelRatio;
}
QVariant QWebViewportInfo::initialScale() const
{
if (!m_webViewPrivate->interactionEngine)
- return QVariant();
+ return QVariant(1.0);
return m_webViewPrivate->interactionEngine->constraints().initialScale;
}
QVariant QWebViewportInfo::minimumScale() const
{
if (!m_webViewPrivate->interactionEngine)
- return QVariant();
+ return QVariant(0.25);
return m_webViewPrivate->interactionEngine->constraints().minimumScale;
}
QVariant QWebViewportInfo::maximumScale() const
{
if (!m_webViewPrivate->interactionEngine)
- return QVariant();
+ return QVariant(1.8);
return m_webViewPrivate->interactionEngine->constraints().maximumScale;
}
QVariant QWebViewportInfo::isScalable() const
{
if (!m_webViewPrivate->interactionEngine)
- return QVariant();
+ return QVariant(true);
return m_webViewPrivate->interactionEngine->constraints().isUserScalable;
}
QVariant QWebViewportInfo::layoutSize() const
{
if (!m_webViewPrivate->interactionEngine)
- return QVariant();
+ return QVariant(QSize());
return m_webViewPrivate->interactionEngine->constraints().layoutSize;
}