summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-08-08 13:56:38 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-12 12:04:53 +0200
commit80ead68ca80bca4f33e824064bff5af3b939a803 (patch)
tree200257aa555eced28a29d9d7a3e6078f8e3dbef3 /lib
parent08bfd6fb1595f4940316845348b5a262f55e7077 (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.cpp6
-rw-r--r--lib/quick/qquickwebcontentsview_p_p.h1
-rw-r--r--lib/web_contents_adapter_client.h1
-rw-r--r--lib/web_contents_view_qt.cpp8
-rw-r--r--lib/web_contents_view_qt.h1
-rw-r--r--lib/widgets/Api/qwebcontentsview.cpp6
-rw-r--r--lib/widgets/Api/qwebcontentsview_p.h1
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;