summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2019-06-01 10:38:46 +0200
committerAndreas Sturmlechner <asturm@gentoo.org>2019-06-01 10:42:37 +0200
commita8e77815125e73f7baf630855845a5f4bb041e51 (patch)
tree5ae8c29b28a917cb1e0857851ec5aed797c1e799 /kde-apps/messagelib
parentsci-chemistry/pymol: Change deps (diff)
downloadgentoo-a8e77815125e73f7baf630855845a5f4bb041e51.tar.gz
gentoo-a8e77815125e73f7baf630855845a5f4bb041e51.tar.bz2
gentoo-a8e77815125e73f7baf630855845a5f4bb041e51.zip
kde-apps/messagelib: Fix messagewindow crash with Qt 5.12.3
Reported-by: Erik Quaeghebeur <gentoobugzilla@equaeghe.nospammail.net> Thanks-to: Giuseppe Vitillaro <giuseppe@vitillaro.org> Closes: https://bugs.gentoo.org/686842 Package-Manager: Portage-2.3.67, Repoman-2.3.13 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'kde-apps/messagelib')
-rw-r--r--kde-apps/messagelib/files/messagelib-18.12.3-qtwebengine-5.12.3.patch172
-rw-r--r--kde-apps/messagelib/messagelib-18.12.3-r2.ebuild71
2 files changed, 243 insertions, 0 deletions
diff --git a/kde-apps/messagelib/files/messagelib-18.12.3-qtwebengine-5.12.3.patch b/kde-apps/messagelib/files/messagelib-18.12.3-qtwebengine-5.12.3.patch
new file mode 100644
index 000000000000..3fdc1527951a
--- /dev/null
+++ b/kde-apps/messagelib/files/messagelib-18.12.3-qtwebengine-5.12.3.patch
@@ -0,0 +1,172 @@
+From 9f0ce086c6a4e487cee1f01acb15290ebff19ac3 Mon Sep 17 00:00:00 2001
+From: Jonathan Marten <jjm@keelhaul.me.uk>
+Date: Tue, 12 Mar 2019 08:47:43 +0000
+Subject: Move management of QWebEngineProfile to WebEnginePage
+
+To avoid a crash on KMail quit or viewer window close, caused by the
+MailWebEnginePage being deleted while its QWebEngineProfile is still
+active. Simplified management of the profile by handling its creation
+and deletion within WebEnginePage.
+
+Deprecate the 2-argument WebEnginePage constructor which allows an
+already allocated profile to be used. This constructor is used by
+Akregator which specifies the global profile; it will be changed to
+use a private profile instead.
+
+Differential Revision: https://phabricator.kde.org/D19559
+---
+ .../src/viewer/webengine/mailwebenginepage.cpp | 10 -------
+ .../src/viewer/webengine/mailwebenginepage.h | 3 +-
+ .../src/viewer/webengine/mailwebengineview.cpp | 3 +-
+ webengineviewer/src/webenginepage.cpp | 22 ++++++++++----
+ webengineviewer/src/webenginepage.h | 35 ++++++++++++++++++++--
+ 5 files changed, 52 insertions(+), 21 deletions(-)
+
+diff --git a/messageviewer/src/viewer/webengine/mailwebenginepage.cpp b/messageviewer/src/viewer/webengine/mailwebenginepage.cpp
+index cd91494..f3790b9 100644
+--- a/messageviewer/src/viewer/webengine/mailwebenginepage.cpp
++++ b/messageviewer/src/viewer/webengine/mailwebenginepage.cpp
+@@ -29,16 +29,6 @@ MailWebEnginePage::MailWebEnginePage(QObject *parent)
+ initialize();
+ }
+
+-MailWebEnginePage::MailWebEnginePage(QWebEngineProfile *profile, QObject *parent)
+- : WebEngineViewer::WebEnginePage(profile, parent)
+-{
+- initialize();
+-}
+-
+-MailWebEnginePage::~MailWebEnginePage()
+-{
+-}
+-
+ void MailWebEnginePage::initialize()
+ {
+ settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, false);
+diff --git a/messageviewer/src/viewer/webengine/mailwebenginepage.h b/messageviewer/src/viewer/webengine/mailwebenginepage.h
+index 7f8e6eb..d581efd 100644
+--- a/messageviewer/src/viewer/webengine/mailwebenginepage.h
++++ b/messageviewer/src/viewer/webengine/mailwebenginepage.h
+@@ -28,8 +28,7 @@ class MESSAGEVIEWER_EXPORT MailWebEnginePage : public WebEngineViewer::WebEngine
+ Q_OBJECT
+ public:
+ explicit MailWebEnginePage(QObject *parent = nullptr);
+- explicit MailWebEnginePage(QWebEngineProfile *profile, QObject *parent = nullptr);
+- ~MailWebEnginePage();
++ virtual ~MailWebEnginePage() = default;
+
+ void setPrintElementBackground(bool printElementBackground);
+
+diff --git a/messageviewer/src/viewer/webengine/mailwebengineview.cpp b/messageviewer/src/viewer/webengine/mailwebengineview.cpp
+index 0685a8d..09224cf 100644
+--- a/messageviewer/src/viewer/webengine/mailwebengineview.cpp
++++ b/messageviewer/src/viewer/webengine/mailwebengineview.cpp
+@@ -34,7 +34,6 @@
+ #include <QContextMenuEvent>
+ #include <WebEngineViewer/WebHitTest>
+
+-#include <QWebEngineProfile>
+ #include <QPrinter>
+
+ #include <WebEngineViewer/WebHitTestResult>
+@@ -81,7 +80,7 @@ MailWebEngineView::MailWebEngineView(KActionCollection *ac, QWidget *parent)
+ : WebEngineViewer::WebEngineView(parent)
+ , d(new MessageViewer::MailWebEngineViewPrivate)
+ {
+- d->mPageEngine = new MailWebEnginePage(new QWebEngineProfile(this), this);
++ d->mPageEngine = new MailWebEnginePage(this);
+ setPage(d->mPageEngine);
+ d->mWebViewAccessKey = new WebEngineViewer::WebEngineAccessKey(this, this);
+ d->mWebViewAccessKey->setActionCollection(ac);
+diff --git a/webengineviewer/src/webenginepage.cpp b/webengineviewer/src/webenginepage.cpp
+index 447ac26..2fcb6c2 100644
+--- a/webengineviewer/src/webenginepage.cpp
++++ b/webengineviewer/src/webenginepage.cpp
+@@ -33,8 +33,24 @@
+ using namespace WebEngineViewer;
+
+ WebEnginePage::WebEnginePage(QObject *parent)
+- : QWebEnginePage(parent)
++ : QWebEnginePage(new QWebEngineProfile, parent)
+ {
++ // Create a private (off the record) QWebEngineProfile here to isolate the
++ // browsing settings, and adopt it as a child so that it will be deleted
++ // when we are destroyed. The profile must remain active for as long as
++ // any QWebEnginePage's belonging to it exist, see the API documentation
++ // of QWebEnginePage::QWebEnginePage(QWebEngineProfile *, QObject *).
++ // Deleting it as our child on destruction is safe.
++ //
++ // Do not try to save a line of code by setting the parent on construction:
++ //
++ // WebEnginePage::WebEnginePage(QObject *parent)
++ // : QWebEnginePage(new QWebEngineProfile(this), parent)
++ //
++ // because the QWebEngineProfile constructor will call out to the QWebEnginePage
++ // and crash because the QWebEnginePage is not fully constructed yet.
++ profile()->setParent(this);
++
+ init();
+ }
+
+@@ -44,10 +60,6 @@ WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject *parent)
+ init();
+ }
+
+-WebEnginePage::~WebEnginePage()
+-{
+-}
+-
+ void WebEnginePage::init()
+ {
+ connect(profile(), &QWebEngineProfile::downloadRequested, this, &WebEnginePage::saveHtml);
+diff --git a/webengineviewer/src/webenginepage.h b/webengineviewer/src/webenginepage.h
+index be38368..95c7c76 100644
+--- a/webengineviewer/src/webenginepage.h
++++ b/webengineviewer/src/webenginepage.h
+@@ -31,10 +31,41 @@ class WEBENGINEVIEWER_EXPORT WebEnginePage : public QWebEnginePage
+ {
+ Q_OBJECT
+ public:
++ /**
++ * Constructor.
++ *
++ * A private QWebEngineProfile, only applying to this QWebEnginePage,
++ * will be created to implement browser settings. It can be accessed via
++ * @c profile(), but it should not be shared or reused unless care is
++ * taken that the profile is not deleted until all of the QWebEnginePage's
++ * belonging to it are deleted first.
++ *
++ * @param parent The parent object
++ **/
+ explicit WebEnginePage(QObject *parent = nullptr);
+- explicit WebEnginePage(QWebEngineProfile *profile, QObject *parent = nullptr);
+
+- ~WebEnginePage() override;
++ /**
++ * Constructor.
++ *
++ * The specified QWebEngineProfile will be used. See the description of
++ * @c WebEnginePage(QObject *) and the API documentation of QWebEnginePage
++ * for caution regarding the lifetime of the profile.
++ *
++ * @param profile The profile to be used
++ * @param parent The parent object
++ * @deprecated Use the single argument constructor, which creates and uses
++ * a private profile.
++ **/
++#ifndef WEBENGINEVIEWER_NO_DEPRECATED
++ explicit WEBENGINEVIEWER_DEPRECATED WebEnginePage(QWebEngineProfile *profile, QObject *parent = nullptr);
++#endif
++
++ /**
++ * Destructor. If there is a private QWebEngineProfile then it will also
++ * be destroyed.
++ **/
++ virtual ~WebEnginePage() override = default;
++
+ WebEngineViewer::WebHitTest *hitTestContent(const QPoint &pos);
+
+ void saveHtml(QWebEngineDownloadItem *download);
+--
+cgit v1.1
+
diff --git a/kde-apps/messagelib/messagelib-18.12.3-r2.ebuild b/kde-apps/messagelib/messagelib-18.12.3-r2.ebuild
new file mode 100644
index 000000000000..6dd0db1af4af
--- /dev/null
+++ b/kde-apps/messagelib/messagelib-18.12.3-r2.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+KDE_TEST="forceoptional-recursive"
+VIRTUALX_REQUIRED="test"
+inherit kde5
+
+DESCRIPTION="Libraries for messaging functions"
+LICENSE="GPL-2+ LGPL-2.1+"
+KEYWORDS="amd64 ~arm64 x86"
+IUSE=""
+
+DEPEND="
+ $(add_frameworks_dep karchive)
+ $(add_frameworks_dep kcodecs)
+ $(add_frameworks_dep kcompletion)
+ $(add_frameworks_dep kconfig)
+ $(add_frameworks_dep kconfigwidgets)
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kdbusaddons)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep kiconthemes)
+ $(add_frameworks_dep kio)
+ $(add_frameworks_dep kitemmodels)
+ $(add_frameworks_dep kitemviews)
+ $(add_frameworks_dep kjobwidgets)
+ $(add_frameworks_dep knotifications)
+ $(add_frameworks_dep kservice)
+ $(add_frameworks_dep ktextwidgets)
+ $(add_frameworks_dep kwidgetsaddons)
+ $(add_frameworks_dep kwindowsystem)
+ $(add_frameworks_dep kxmlgui)
+ $(add_frameworks_dep sonnet)
+ $(add_frameworks_dep syntax-highlighting)
+ $(add_kdeapps_dep akonadi '' 18.12.3-r1)
+ $(add_kdeapps_dep akonadi-contacts)
+ $(add_kdeapps_dep akonadi-mime)
+ $(add_kdeapps_dep grantleetheme)
+ $(add_kdeapps_dep incidenceeditor)
+ $(add_kdeapps_dep kcalcore)
+ $(add_kdeapps_dep kcontacts)
+ $(add_kdeapps_dep kdepim-apps-libs)
+ $(add_kdeapps_dep kidentitymanagement)
+ $(add_kdeapps_dep kldap)
+ $(add_kdeapps_dep kmailtransport)
+ $(add_kdeapps_dep kmbox)
+ $(add_kdeapps_dep kmime)
+ $(add_kdeapps_dep kpimtextedit)
+ $(add_kdeapps_dep libgravatar)
+ $(add_kdeapps_dep libkdepim)
+ $(add_kdeapps_dep libkleo)
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtnetwork)
+ $(add_qt_dep qtprintsupport)
+ $(add_qt_dep qtwebengine 'widgets')
+ $(add_qt_dep qtwidgets)
+ >=app-crypt/gpgme-1.8.0-r1[cxx,qt5]
+ >=dev-libs/grantlee-5.1.0:5
+"
+RDEPEND="${DEPEND}
+ !kde-apps/kdepim-common-libs:4
+ !kde-apps/kdepim-l10n
+ !=kde-apps/kmail-4.4*:4
+"
+
+# bug 579630
+RESTRICT+=" test"
+
+PATCHES=( "${FILESDIR}/${P}-qtwebengine-5.12.3.patch" ) # bug 686842