diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-06-17 18:58:06 +0200 |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-06-19 12:19:11 +0200 |
commit | bbeaf3278de08da00f56aba3511951aaf6a8d233 (patch) | |
tree | f59de9808a942a2668f2bb73d0b03a1bebcd4b0f /lib/render_widget_host_view_qt_delegate_widget.cpp | |
parent | 2d2da7d717d6bd354f5febe3deb8615685ca3280 (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.cpp | 84 |
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; +} |