diff options
author | Arvid Nilsson <anilsson@blackberry.com> | 2013-11-28 15:29:40 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-12-04 14:23:33 +0100 |
commit | 5d66b66df1bc205a9ce3d25cfaaa84c961fa7a29 (patch) | |
tree | b99b54d09ba93dbe66a65313c50ac6d831e5a8d0 /src/webengine/api/qquickwebengineview_p_p.h | |
parent | 5d92938e5bb830b8ca5a711fd4c1999dd09fd0e3 (diff) |
Quick: Add experimental.viewport.devicePixelRatio
This specifies a devicePixelRatio to be used by web content instead of
the QScreen::devicePixelRatio(). This is necessary on non-iOS mobile
devices to remain compatible with the mobile web which assumes
devicePixelRatio is computed as the ratio of actual dpi to 160 dpi.
Non-iOS mobile platforms may use different criteria to determine the
QScreen::devicePixelRatio(), depending on the history of the platform,
or simply leave it at 1.0.
For QNX, this setting gets a reasonable default value so developers
don't have to regularly use this experimental API.
These changes were inspired by the Android Chromium port which uses a
GetDpiScale() to accomplish the same in
content/browser/android/content_view_core_impl.cc.
Change-Id: I1bc8878a47dabcdb6986c4fe5c8c4ac230ae2514
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'src/webengine/api/qquickwebengineview_p_p.h')
-rw-r--r-- | src/webengine/api/qquickwebengineview_p_p.h | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index e7c87ce1d..b356b8881 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -45,7 +45,7 @@ #include "qquickwebengineview_p.h" #include "web_contents_adapter_client.h" -#include <QSharedData> +#include <QScopedPointer> #include <QtQuick/private/qquickitem_p.h> class WebContentsAdapter; @@ -53,9 +53,29 @@ class WebContentsAdapter; QT_BEGIN_NAMESPACE class QQuickWebEngineView; +class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewport : public QObject { + Q_OBJECT + Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio WRITE setDevicePixelRatio NOTIFY devicePixelRatioChanged) +public: + QQuickWebEngineViewport(QQuickWebEngineViewPrivate *viewPrivate); + + qreal devicePixelRatio() const; + void setDevicePixelRatio(qreal); + +Q_SIGNALS: + void devicePixelRatioChanged(); + +private: + QQuickWebEngineViewPrivate *d_ptr; + + Q_DECLARE_PRIVATE(QQuickWebEngineView) +}; + class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewExperimental : public QObject { Q_OBJECT + Q_PROPERTY(QQuickWebEngineViewport *viewport READ viewport) public: + QQuickWebEngineViewport *viewport() const; private: QQuickWebEngineViewExperimental(QQuickWebEngineViewPrivate* viewPrivate); @@ -73,6 +93,7 @@ public: QQuickWebEngineViewPrivate(); QQuickWebEngineViewExperimental *experimental() const; + QQuickWebEngineViewport *viewport() const; virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQtDelegateClient *client, RenderingMode) Q_DECL_OVERRIDE; virtual void titleChanged(const QString&) Q_DECL_OVERRIDE; @@ -81,6 +102,7 @@ public: virtual void loadingStateChanged() Q_DECL_OVERRIDE; virtual void loadProgressChanged(int progress) Q_DECL_OVERRIDE; virtual QRectF viewportRect() const Q_DECL_OVERRIDE; + virtual qreal dpiScale() const Q_DECL_OVERRIDE; virtual void loadFinished(bool success) Q_DECL_OVERRIDE; virtual void focusContainer() Q_DECL_OVERRIDE; virtual void adoptNewWindow(WebContentsAdapter *newWebContents, WindowOpenDisposition disposition, const QRect &) Q_DECL_OVERRIDE; @@ -88,15 +110,23 @@ public: virtual bool contextMenuRequested(const WebEngineContextMenuData &) Q_DECL_OVERRIDE { return false;} virtual bool javascriptDialog(JavascriptDialogType type, const QString &message, const QString &defaultValue = QString(), QString *result = 0) Q_DECL_OVERRIDE { return false; } + void setDevicePixelRatio(qreal); + QExplicitlySharedDataPointer<WebContentsAdapter> adapter; - QQuickWebEngineViewExperimental *e; + QScopedPointer<QQuickWebEngineViewExperimental> e; + QScopedPointer<QQuickWebEngineViewport> v; QUrl icon; int loadProgress; bool inspectable; + qreal devicePixelRatio; + +private: + qreal m_dpiScale; }; QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickWebEngineViewExperimental) +QML_DECLARE_TYPE(QQuickWebEngineViewport) #endif // QQUICKWEBENGINEVIEW_P_P_H |