diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-11-16 14:57:44 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-11-16 14:57:44 +0100 |
commit | ef177a48f2c6c41549ef9d11a985ab2661942638 (patch) | |
tree | d6bc5aa8cbde95d9e9857ead4b509e8b04b524b9 /src/webenginewidgets | |
parent | 396ca081d7b0d9dab7de14ebaec7943c3f857a24 (diff) | |
parent | e5bc5a6dbdd915e0b19cfc43e7af17e43c1a7878 (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.cpp | 31 | ||||
-rw-r--r-- | src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h | 3 |
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 |