diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-08-09 18:27:15 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-12 12:09:29 +0200 |
commit | 4fdbee3bc4526d4a43b798a095e5168633eb99f5 (patch) | |
tree | 11c27e2cba9e383a150838a29c3873a1ed484042 /lib/quick | |
parent | 2ee75c4411394981f5bbf50c0edffe42b6343c90 (diff) |
Delay the RWHVDelegate parenting until it's been attached to its RWHV.
This avoids the RWHV being accessed before being attached to
the delegate when attaching the later to the view's layout.
Change-Id: I5fffef60fdd7203cfb4ced807b5475aac676ea09
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'lib/quick')
-rw-r--r-- | lib/quick/qquickwebcontentsview.cpp | 5 | ||||
-rw-r--r-- | lib/quick/qquickwebcontentsview_p_p.h | 1 | ||||
-rw-r--r-- | lib/quick/render_widget_host_view_qt_delegate_quick.cpp | 8 | ||||
-rw-r--r-- | lib/quick/render_widget_host_view_qt_delegate_quick.h | 3 |
4 files changed, 12 insertions, 5 deletions
diff --git a/lib/quick/qquickwebcontentsview.cpp b/lib/quick/qquickwebcontentsview.cpp index 18bccd107..48ba0fb60 100644 --- a/lib/quick/qquickwebcontentsview.cpp +++ b/lib/quick/qquickwebcontentsview.cpp @@ -55,10 +55,7 @@ QQuickWebContentsViewPrivate::QQuickWebContentsViewPrivate() RenderWidgetHostViewQtDelegate *QQuickWebContentsViewPrivate::CreateRenderWidgetHostViewQtDelegate() { - Q_Q(QQuickWebContentsView); - // Parent the RWHVQtDelegate directly, this might have to be changed to handle popups and fullscreen. - RenderWidgetHostViewQtDelegateQuick *viewDelegate = new RenderWidgetHostViewQtDelegateQuick(q); - return viewDelegate; + return new RenderWidgetHostViewQtDelegateQuick; } void QQuickWebContentsViewPrivate::titleChanged(const QString &title) diff --git a/lib/quick/qquickwebcontentsview_p_p.h b/lib/quick/qquickwebcontentsview_p_p.h index faf9d1ccf..51f805881 100644 --- a/lib/quick/qquickwebcontentsview_p_p.h +++ b/lib/quick/qquickwebcontentsview_p_p.h @@ -66,6 +66,7 @@ public: virtual void focusContainer() Q_DECL_OVERRIDE; QScopedPointer<WebContentsAdapter> adapter; + friend class RenderWidgetHostViewQtDelegateQuick; }; #endif // QQUICKWEBCONTENTSVIEW_P_P_H diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp index 451d92044..5610beabb 100644 --- a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp +++ b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp @@ -41,6 +41,8 @@ #include "render_widget_host_view_qt_delegate_quick.h" +#include "qquickwebcontentsview_p.h" +#include "qquickwebcontentsview_p_p.h" #include <QQuickWindow> #include <QWindow> @@ -51,6 +53,12 @@ RenderWidgetHostViewQtDelegateQuick::RenderWidgetHostViewQtDelegateQuick(QQuickI setAcceptHoverEvents(true); } +void RenderWidgetHostViewQtDelegateQuick::initAsChild(WebContentsAdapterClient* container) +{ + QQuickWebContentsViewPrivate *viewPrivate = static_cast<QQuickWebContentsViewPrivate *>(container); + setParentItem(viewPrivate->q_func()); +} + QRectF RenderWidgetHostViewQtDelegateQuick::screenRect() const { QPointF pos = mapToScene(QPointF(0,0)); diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.h b/lib/quick/render_widget_host_view_qt_delegate_quick.h index 1bf8aa8da..b08ec3051 100644 --- a/lib/quick/render_widget_host_view_qt_delegate_quick.h +++ b/lib/quick/render_widget_host_view_qt_delegate_quick.h @@ -67,8 +67,9 @@ class RenderWidgetHostViewQtDelegateQuick : public QQuickPaintedItem, public Ren { Q_OBJECT public: - RenderWidgetHostViewQtDelegateQuick(QQuickItem *parent); + RenderWidgetHostViewQtDelegateQuick(QQuickItem *parent = 0); + virtual void initAsChild(WebContentsAdapterClient* container); virtual QRectF screenRect() const; virtual void setKeyboardFocus(); virtual bool hasKeyboardFocus(); |