From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id EBCBF138334 for ; Sat, 1 Jun 2019 08:42:53 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 16DEFE0897; Sat, 1 Jun 2019 08:42:53 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id E046CE0897 for ; Sat, 1 Jun 2019 08:42:52 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 9782B3454C3 for ; Sat, 1 Jun 2019 08:42:51 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 0AF2F471 for ; Sat, 1 Jun 2019 08:42:50 +0000 (UTC) From: "Andreas Sturmlechner" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Andreas Sturmlechner" Message-ID: <1559378557.a8e77815125e73f7baf630855845a5f4bb041e51.asturm@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: kde-apps/messagelib/, kde-apps/messagelib/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: kde-apps/messagelib/files/messagelib-18.12.3-qtwebengine-5.12.3.patch kde-apps/messagelib/messagelib-18.12.3-r2.ebuild X-VCS-Directories: kde-apps/messagelib/ kde-apps/messagelib/files/ X-VCS-Committer: asturm X-VCS-Committer-Name: Andreas Sturmlechner X-VCS-Revision: a8e77815125e73f7baf630855845a5f4bb041e51 X-VCS-Branch: master Date: Sat, 1 Jun 2019 08:42:50 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 657dd692-3642-4446-b3db-df32d6aeb4e0 X-Archives-Hash: e7e3b2b09ad9f3689ec009c2039a00d6 commit: a8e77815125e73f7baf630855845a5f4bb041e51 Author: Andreas Sturmlechner gentoo org> AuthorDate: Sat Jun 1 08:38:46 2019 +0000 Commit: Andreas Sturmlechner gentoo org> CommitDate: Sat Jun 1 08:42:37 2019 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a8e77815 kde-apps/messagelib: Fix messagewindow crash with Qt 5.12.3 Reported-by: Erik Quaeghebeur equaeghe.nospammail.net> Thanks-to: Giuseppe Vitillaro vitillaro.org> Closes: https://bugs.gentoo.org/686842 Package-Manager: Portage-2.3.67, Repoman-2.3.13 Signed-off-by: Andreas Sturmlechner gentoo.org> .../messagelib-18.12.3-qtwebengine-5.12.3.patch | 172 +++++++++++++++++++++ kde-apps/messagelib/messagelib-18.12.3-r2.ebuild | 71 +++++++++ 2 files changed, 243 insertions(+) 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 00000000000..3fdc1527951 --- /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 +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 + #include + +-#include + #include + + #include +@@ -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 00000000000..6dd0db1af4a --- /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