summaryrefslogtreecommitdiffstats
path: root/lib/quick
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-08-09 18:27:15 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-12 12:09:29 +0200
commit4fdbee3bc4526d4a43b798a095e5168633eb99f5 (patch)
tree11c27e2cba9e383a150838a29c3873a1ed484042 /lib/quick
parent2ee75c4411394981f5bbf50c0edffe42b6343c90 (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.cpp5
-rw-r--r--lib/quick/qquickwebcontentsview_p_p.h1
-rw-r--r--lib/quick/render_widget_host_view_qt_delegate_quick.cpp8
-rw-r--r--lib/quick/render_widget_host_view_qt_delegate_quick.h3
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();