summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-11-16 14:57:44 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-11-16 14:57:44 +0100
commitef177a48f2c6c41549ef9d11a985ab2661942638 (patch)
treed6bc5aa8cbde95d9e9857ead4b509e8b04b524b9 /src/webenginewidgets
parent396ca081d7b0d9dab7de14ebaec7943c3f857a24 (diff)
parente5bc5a6dbdd915e0b19cfc43e7af17e43c1a7878 (diff)
Merge branch '5.12' into dev
Conflicts: src/core/compositor/compositor.cpp src/core/compositor/compositor.h Change-Id: I8a4d73d728d93d95e499849f8778cc88dda2105e
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp31
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h3
2 files changed, 20 insertions, 14 deletions
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
index 2753f5d3d..45e87477f 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
@@ -183,16 +183,15 @@ RenderWidgetHostViewQtDelegateWidget::~RenderWidgetHostViewQtDelegateWidget()
void RenderWidgetHostViewQtDelegateWidget::connectRemoveParentBeforeParentDelete()
{
- if (QWidget *parent = parentWidget())
- connect(parent, &QObject::destroyed,
- this, &RenderWidgetHostViewQtDelegateWidget::removeParentBeforeParentDelete);
-}
-
-void RenderWidgetHostViewQtDelegateWidget::disconnectRemoveParentBeforeParentDelete()
-{
- if (QWidget *parent = parentWidget())
- disconnect(parent, &QObject::destroyed,
- this, &RenderWidgetHostViewQtDelegateWidget::removeParentBeforeParentDelete);
+ disconnect(m_parentDestroyedConnection);
+
+ if (QWidget *parent = parentWidget()) {
+ m_parentDestroyedConnection = connect(parent, &QObject::destroyed,
+ this,
+ &RenderWidgetHostViewQtDelegateWidget::removeParentBeforeParentDelete);
+ } else {
+ m_parentDestroyedConnection = QMetaObject::Connection();
+ }
}
void RenderWidgetHostViewQtDelegateWidget::removeParentBeforeParentDelete()
@@ -417,15 +416,21 @@ void RenderWidgetHostViewQtDelegateWidget::hideEvent(QHideEvent *event)
m_client->notifyHidden();
}
+bool RenderWidgetHostViewQtDelegateWidget::copySurface(const QRect &rect, const QSize &size, QImage &image)
+{
+ QPixmap pixmap = rect.isEmpty() ? QQuickWidget::grab(QQuickWidget::rect()) : QQuickWidget::grab(rect);
+ if (pixmap.isNull())
+ return false;
+ image = pixmap.toImage().scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ return true;
+}
+
bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event)
{
bool handled = false;
// Track parent to make sure we don't get deleted.
switch (event->type()) {
- case QEvent::ParentAboutToChange:
- disconnectRemoveParentBeforeParentDelete();
- break;
case QEvent::ParentChange:
connectRemoveParentBeforeParentDelete();
break;
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
index 74c9e3413..e23f13d86 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
@@ -88,6 +88,7 @@ public:
void inputMethodStateChanged(bool editorVisible, bool passwordInput) override;
void setInputMethodHints(Qt::InputMethodHints) override;
void setClearColor(const QColor &color) override;
+ bool copySurface(const QRect &, const QSize &, QImage &) override;
protected:
bool event(QEvent *event) override;
@@ -101,7 +102,6 @@ protected:
private slots:
void onWindowPosChanged();
void connectRemoveParentBeforeParentDelete();
- void disconnectRemoveParentBeforeParentDelete();
void removeParentBeforeParentDelete();
private:
@@ -115,6 +115,7 @@ private:
QPoint m_lastGlobalPos;
QList<QMetaObject::Connection> m_windowConnections;
QWebEnginePage *m_page = nullptr;
+ QMetaObject::Connection m_parentDestroyedConnection;
};
} // namespace QtWebEngineCore