summaryrefslogtreecommitdiffstats
path: root/lib/render_widget_host_view_qt_delegate_widget.cpp
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-06-17 18:58:06 +0200
committerJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-06-19 12:19:11 +0200
commitbbeaf3278de08da00f56aba3511951aaf6a8d233 (patch)
treef59de9808a942a2668f2bb73d0b03a1bebcd4b0f /lib/render_widget_host_view_qt_delegate_widget.cpp
parent2d2da7d717d6bd354f5febe3deb8615685ca3280 (diff)
Allow the API class to provide the page widget rendering implementation.
- Rename NativeViewQt to RenderWidgetHostViewQtDelegate to keep the context obvious. - Use an interface to handle the parenting instead of the NativeViewContainerQt mechanism that was needed with the Shell.
Diffstat (limited to 'lib/render_widget_host_view_qt_delegate_widget.cpp')
-rw-r--r--lib/render_widget_host_view_qt_delegate_widget.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/render_widget_host_view_qt_delegate_widget.cpp b/lib/render_widget_host_view_qt_delegate_widget.cpp
new file mode 100644
index 000000000..8be1d308f
--- /dev/null
+++ b/lib/render_widget_host_view_qt_delegate_widget.cpp
@@ -0,0 +1,84 @@
+#include "render_widget_host_view_qt_delegate_widget.h"
+
+#include "shared/backing_store_qt.h"
+#include "shared/render_widget_host_view_qt.h"
+
+#include <QResizeEvent>
+#include <QPaintEvent>
+
+RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(content::RenderWidgetHostViewQt* view, QWidget *parent)
+ : QWidget(parent)
+ , m_painter(0)
+ , m_backingStore(0)
+ , m_view(view)
+{
+ setFocusPolicy(Qt::ClickFocus);
+ setAttribute(Qt::WA_OpaquePaintEvent);
+}
+
+QRectF RenderWidgetHostViewQtDelegateWidget::screenRect() const
+{
+ return QRectF(x(), y(), width(), height());
+}
+
+void RenderWidgetHostViewQtDelegateWidget::show()
+{
+ QWidget::show();
+}
+
+void RenderWidgetHostViewQtDelegateWidget::hide()
+{
+ QWidget::hide();
+}
+
+
+bool RenderWidgetHostViewQtDelegateWidget::isVisible() const
+{
+ return QWidget::isVisible();
+}
+
+QWindow* RenderWidgetHostViewQtDelegateWidget::window() const
+{
+ return QWidget::windowHandle();
+}
+
+void RenderWidgetHostViewQtDelegateWidget::update(const QRect& rect)
+{
+ QWidget::update(rect);
+}
+
+void RenderWidgetHostViewQtDelegateWidget::setBackingStore(BackingStoreQt* backingStore)
+{
+ m_backingStore = backingStore;
+ if (m_backingStore)
+ m_backingStore->resize(size());
+}
+
+void RenderWidgetHostViewQtDelegateWidget::paintEvent(QPaintEvent * event)
+{
+ if (!m_backingStore)
+ return;
+ QPainter painter(this);
+ m_backingStore->paintToTarget(&painter, event->rect());
+}
+
+QPainter* RenderWidgetHostViewQtDelegateWidget::painter()
+{
+ if (!m_painter)
+ m_painter = new QPainter(this);
+ return m_painter;
+}
+
+void RenderWidgetHostViewQtDelegateWidget::resizeEvent(QResizeEvent *resizeEvent)
+{
+ if (m_backingStore)
+ m_backingStore->resize(resizeEvent->size());
+ QWidget::update();
+}
+
+bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event)
+{
+ if (!m_view || !m_view->handleEvent(event))
+ return QWidget::event(event);
+ return true;
+}