diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-08-08 13:56:38 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-12 12:04:53 +0200 |
commit | 80ead68ca80bca4f33e824064bff5af3b939a803 (patch) | |
tree | 200257aa555eced28a29d9d7a3e6078f8e3dbef3 /lib | |
parent | 08bfd6fb1595f4940316845348b5a262f55e7077 (diff) |
Avoid keeping a RWHVDelegate pointer in WebContentsViewQt.
There can be multiple RWHVDelegates within one WebContentsViewQt
during navigation. Avoid keeping a pointer by sending the focus
call to the client directly, which fits the purpose better.
Change-Id: I863c174e9a2567f3580f3cb525bc5353ab2a4417
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/quick/qquickwebcontentsview.cpp | 6 | ||||
-rw-r--r-- | lib/quick/qquickwebcontentsview_p_p.h | 1 | ||||
-rw-r--r-- | lib/web_contents_adapter_client.h | 1 | ||||
-rw-r--r-- | lib/web_contents_view_qt.cpp | 8 | ||||
-rw-r--r-- | lib/web_contents_view_qt.h | 1 | ||||
-rw-r--r-- | lib/widgets/Api/qwebcontentsview.cpp | 6 | ||||
-rw-r--r-- | lib/widgets/Api/qwebcontentsview_p.h | 1 |
7 files changed, 19 insertions, 5 deletions
diff --git a/lib/quick/qquickwebcontentsview.cpp b/lib/quick/qquickwebcontentsview.cpp index 806a75dbb..18bccd107 100644 --- a/lib/quick/qquickwebcontentsview.cpp +++ b/lib/quick/qquickwebcontentsview.cpp @@ -94,6 +94,12 @@ void QQuickWebContentsViewPrivate::loadFinished(bool success) Q_EMIT q->loadingStateChanged(); } +void QQuickWebContentsViewPrivate::focusContainer() +{ + Q_Q(QQuickWebContentsView); + q->forceActiveFocus(); +} + QQuickWebContentsView::QQuickWebContentsView() : d_ptr(new QQuickWebContentsViewPrivate) { diff --git a/lib/quick/qquickwebcontentsview_p_p.h b/lib/quick/qquickwebcontentsview_p_p.h index 462a5b4f2..faf9d1ccf 100644 --- a/lib/quick/qquickwebcontentsview_p_p.h +++ b/lib/quick/qquickwebcontentsview_p_p.h @@ -63,6 +63,7 @@ public: virtual void loadingStateChanged() Q_DECL_OVERRIDE; virtual QRectF viewportRect() const Q_DECL_OVERRIDE; virtual void loadFinished(bool success) Q_DECL_OVERRIDE; + virtual void focusContainer() Q_DECL_OVERRIDE; QScopedPointer<WebContentsAdapter> adapter; }; diff --git a/lib/web_contents_adapter_client.h b/lib/web_contents_adapter_client.h index cc54c3fd6..fd4599f7f 100644 --- a/lib/web_contents_adapter_client.h +++ b/lib/web_contents_adapter_client.h @@ -62,6 +62,7 @@ public: virtual void loadingStateChanged() = 0; virtual QRectF viewportRect() const = 0; virtual void loadFinished(bool success) = 0; + virtual void focusContainer() = 0; }; #endif // WEB_CONTENTS_ADAPTER_CLIENT_H diff --git a/lib/web_contents_view_qt.cpp b/lib/web_contents_view_qt.cpp index 9d35b622f..7903d24fe 100644 --- a/lib/web_contents_view_qt.cpp +++ b/lib/web_contents_view_qt.cpp @@ -50,9 +50,9 @@ content::RenderWidgetHostView* WebContentsViewQt::CreateViewForWidget(content::RenderWidgetHost* render_widget_host) { RenderWidgetHostViewQt *view = new RenderWidgetHostViewQt(render_widget_host); - m_viewDelegate = m_client->CreateRenderWidgetHostViewQtDelegate(); - m_viewDelegate->resetView(view); - view->SetDelegate(m_viewDelegate); + RenderWidgetHostViewQtDelegate* viewDelegate = m_client->CreateRenderWidgetHostViewQtDelegate(); + viewDelegate->resetView(view); + view->SetDelegate(viewDelegate); return view; } @@ -71,7 +71,7 @@ void WebContentsViewQt::GetContainerBounds(gfx::Rect* out) const void WebContentsViewQt::Focus() { - m_viewDelegate->setKeyboardFocus(); + m_client->focusContainer(); } void WebContentsViewQt::SetInitialFocus() diff --git a/lib/web_contents_view_qt.h b/lib/web_contents_view_qt.h index 3723a8786..0d686359b 100644 --- a/lib/web_contents_view_qt.h +++ b/lib/web_contents_view_qt.h @@ -114,7 +114,6 @@ public: private: WebContentsAdapterClient* m_client; - RenderWidgetHostViewQtDelegate* m_viewDelegate; }; #endif // WEB_CONTENTS_VIEW_QT_H diff --git a/lib/widgets/Api/qwebcontentsview.cpp b/lib/widgets/Api/qwebcontentsview.cpp index 1479a17be..2ef4c04d4 100644 --- a/lib/widgets/Api/qwebcontentsview.cpp +++ b/lib/widgets/Api/qwebcontentsview.cpp @@ -88,6 +88,12 @@ void QWebContentsViewPrivate::loadFinished(bool success) Q_EMIT q->loadFinished(success); } +void QWebContentsViewPrivate::focusContainer() +{ + Q_Q(QWebContentsView); + q->setFocus(); +} + RenderWidgetHostViewQtDelegate *QWebContentsViewPrivate::CreateRenderWidgetHostViewQtDelegate() { Q_Q(QWebContentsView); diff --git a/lib/widgets/Api/qwebcontentsview_p.h b/lib/widgets/Api/qwebcontentsview_p.h index eade6c245..d97a098d9 100644 --- a/lib/widgets/Api/qwebcontentsview_p.h +++ b/lib/widgets/Api/qwebcontentsview_p.h @@ -64,6 +64,7 @@ public: virtual void loadingStateChanged() Q_DECL_OVERRIDE; virtual QRectF viewportRect() const Q_DECL_OVERRIDE; virtual void loadFinished(bool success) Q_DECL_OVERRIDE; + virtual void focusContainer() Q_DECL_OVERRIDE; bool m_isLoading; QScopedPointer<WebContentsAdapter> adapter; |