Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: kde-apps/messagelib/, kde-apps/messagelib/files/
Date: Sat, 01 Jun 2019 08:42:53
Message-Id: 1559378557.a8e77815125e73f7baf630855845a5f4bb041e51.asturm@gentoo
1 commit: a8e77815125e73f7baf630855845a5f4bb041e51
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Sat Jun 1 08:38:46 2019 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Sat Jun 1 08:42:37 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a8e77815
7
8 kde-apps/messagelib: Fix messagewindow crash with Qt 5.12.3
9
10 Reported-by: Erik Quaeghebeur <gentoobugzilla <AT> equaeghe.nospammail.net>
11 Thanks-to: Giuseppe Vitillaro <giuseppe <AT> vitillaro.org>
12 Closes: https://bugs.gentoo.org/686842
13 Package-Manager: Portage-2.3.67, Repoman-2.3.13
14 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
15
16 .../messagelib-18.12.3-qtwebengine-5.12.3.patch | 172 +++++++++++++++++++++
17 kde-apps/messagelib/messagelib-18.12.3-r2.ebuild | 71 +++++++++
18 2 files changed, 243 insertions(+)
19
20 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
21 new file mode 100644
22 index 00000000000..3fdc1527951
23 --- /dev/null
24 +++ b/kde-apps/messagelib/files/messagelib-18.12.3-qtwebengine-5.12.3.patch
25 @@ -0,0 +1,172 @@
26 +From 9f0ce086c6a4e487cee1f01acb15290ebff19ac3 Mon Sep 17 00:00:00 2001
27 +From: Jonathan Marten <jjm@×××××××××××.uk>
28 +Date: Tue, 12 Mar 2019 08:47:43 +0000
29 +Subject: Move management of QWebEngineProfile to WebEnginePage
30 +
31 +To avoid a crash on KMail quit or viewer window close, caused by the
32 +MailWebEnginePage being deleted while its QWebEngineProfile is still
33 +active. Simplified management of the profile by handling its creation
34 +and deletion within WebEnginePage.
35 +
36 +Deprecate the 2-argument WebEnginePage constructor which allows an
37 +already allocated profile to be used. This constructor is used by
38 +Akregator which specifies the global profile; it will be changed to
39 +use a private profile instead.
40 +
41 +Differential Revision: https://phabricator.kde.org/D19559
42 +---
43 + .../src/viewer/webengine/mailwebenginepage.cpp | 10 -------
44 + .../src/viewer/webengine/mailwebenginepage.h | 3 +-
45 + .../src/viewer/webengine/mailwebengineview.cpp | 3 +-
46 + webengineviewer/src/webenginepage.cpp | 22 ++++++++++----
47 + webengineviewer/src/webenginepage.h | 35 ++++++++++++++++++++--
48 + 5 files changed, 52 insertions(+), 21 deletions(-)
49 +
50 +diff --git a/messageviewer/src/viewer/webengine/mailwebenginepage.cpp b/messageviewer/src/viewer/webengine/mailwebenginepage.cpp
51 +index cd91494..f3790b9 100644
52 +--- a/messageviewer/src/viewer/webengine/mailwebenginepage.cpp
53 ++++ b/messageviewer/src/viewer/webengine/mailwebenginepage.cpp
54 +@@ -29,16 +29,6 @@ MailWebEnginePage::MailWebEnginePage(QObject *parent)
55 + initialize();
56 + }
57 +
58 +-MailWebEnginePage::MailWebEnginePage(QWebEngineProfile *profile, QObject *parent)
59 +- : WebEngineViewer::WebEnginePage(profile, parent)
60 +-{
61 +- initialize();
62 +-}
63 +-
64 +-MailWebEnginePage::~MailWebEnginePage()
65 +-{
66 +-}
67 +-
68 + void MailWebEnginePage::initialize()
69 + {
70 + settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, false);
71 +diff --git a/messageviewer/src/viewer/webengine/mailwebenginepage.h b/messageviewer/src/viewer/webengine/mailwebenginepage.h
72 +index 7f8e6eb..d581efd 100644
73 +--- a/messageviewer/src/viewer/webengine/mailwebenginepage.h
74 ++++ b/messageviewer/src/viewer/webengine/mailwebenginepage.h
75 +@@ -28,8 +28,7 @@ class MESSAGEVIEWER_EXPORT MailWebEnginePage : public WebEngineViewer::WebEngine
76 + Q_OBJECT
77 + public:
78 + explicit MailWebEnginePage(QObject *parent = nullptr);
79 +- explicit MailWebEnginePage(QWebEngineProfile *profile, QObject *parent = nullptr);
80 +- ~MailWebEnginePage();
81 ++ virtual ~MailWebEnginePage() = default;
82 +
83 + void setPrintElementBackground(bool printElementBackground);
84 +
85 +diff --git a/messageviewer/src/viewer/webengine/mailwebengineview.cpp b/messageviewer/src/viewer/webengine/mailwebengineview.cpp
86 +index 0685a8d..09224cf 100644
87 +--- a/messageviewer/src/viewer/webengine/mailwebengineview.cpp
88 ++++ b/messageviewer/src/viewer/webengine/mailwebengineview.cpp
89 +@@ -34,7 +34,6 @@
90 + #include <QContextMenuEvent>
91 + #include <WebEngineViewer/WebHitTest>
92 +
93 +-#include <QWebEngineProfile>
94 + #include <QPrinter>
95 +
96 + #include <WebEngineViewer/WebHitTestResult>
97 +@@ -81,7 +80,7 @@ MailWebEngineView::MailWebEngineView(KActionCollection *ac, QWidget *parent)
98 + : WebEngineViewer::WebEngineView(parent)
99 + , d(new MessageViewer::MailWebEngineViewPrivate)
100 + {
101 +- d->mPageEngine = new MailWebEnginePage(new QWebEngineProfile(this), this);
102 ++ d->mPageEngine = new MailWebEnginePage(this);
103 + setPage(d->mPageEngine);
104 + d->mWebViewAccessKey = new WebEngineViewer::WebEngineAccessKey(this, this);
105 + d->mWebViewAccessKey->setActionCollection(ac);
106 +diff --git a/webengineviewer/src/webenginepage.cpp b/webengineviewer/src/webenginepage.cpp
107 +index 447ac26..2fcb6c2 100644
108 +--- a/webengineviewer/src/webenginepage.cpp
109 ++++ b/webengineviewer/src/webenginepage.cpp
110 +@@ -33,8 +33,24 @@
111 + using namespace WebEngineViewer;
112 +
113 + WebEnginePage::WebEnginePage(QObject *parent)
114 +- : QWebEnginePage(parent)
115 ++ : QWebEnginePage(new QWebEngineProfile, parent)
116 + {
117 ++ // Create a private (off the record) QWebEngineProfile here to isolate the
118 ++ // browsing settings, and adopt it as a child so that it will be deleted
119 ++ // when we are destroyed. The profile must remain active for as long as
120 ++ // any QWebEnginePage's belonging to it exist, see the API documentation
121 ++ // of QWebEnginePage::QWebEnginePage(QWebEngineProfile *, QObject *).
122 ++ // Deleting it as our child on destruction is safe.
123 ++ //
124 ++ // Do not try to save a line of code by setting the parent on construction:
125 ++ //
126 ++ // WebEnginePage::WebEnginePage(QObject *parent)
127 ++ // : QWebEnginePage(new QWebEngineProfile(this), parent)
128 ++ //
129 ++ // because the QWebEngineProfile constructor will call out to the QWebEnginePage
130 ++ // and crash because the QWebEnginePage is not fully constructed yet.
131 ++ profile()->setParent(this);
132 ++
133 + init();
134 + }
135 +
136 +@@ -44,10 +60,6 @@ WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject *parent)
137 + init();
138 + }
139 +
140 +-WebEnginePage::~WebEnginePage()
141 +-{
142 +-}
143 +-
144 + void WebEnginePage::init()
145 + {
146 + connect(profile(), &QWebEngineProfile::downloadRequested, this, &WebEnginePage::saveHtml);
147 +diff --git a/webengineviewer/src/webenginepage.h b/webengineviewer/src/webenginepage.h
148 +index be38368..95c7c76 100644
149 +--- a/webengineviewer/src/webenginepage.h
150 ++++ b/webengineviewer/src/webenginepage.h
151 +@@ -31,10 +31,41 @@ class WEBENGINEVIEWER_EXPORT WebEnginePage : public QWebEnginePage
152 + {
153 + Q_OBJECT
154 + public:
155 ++ /**
156 ++ * Constructor.
157 ++ *
158 ++ * A private QWebEngineProfile, only applying to this QWebEnginePage,
159 ++ * will be created to implement browser settings. It can be accessed via
160 ++ * @c profile(), but it should not be shared or reused unless care is
161 ++ * taken that the profile is not deleted until all of the QWebEnginePage's
162 ++ * belonging to it are deleted first.
163 ++ *
164 ++ * @param parent The parent object
165 ++ **/
166 + explicit WebEnginePage(QObject *parent = nullptr);
167 +- explicit WebEnginePage(QWebEngineProfile *profile, QObject *parent = nullptr);
168 +
169 +- ~WebEnginePage() override;
170 ++ /**
171 ++ * Constructor.
172 ++ *
173 ++ * The specified QWebEngineProfile will be used. See the description of
174 ++ * @c WebEnginePage(QObject *) and the API documentation of QWebEnginePage
175 ++ * for caution regarding the lifetime of the profile.
176 ++ *
177 ++ * @param profile The profile to be used
178 ++ * @param parent The parent object
179 ++ * @deprecated Use the single argument constructor, which creates and uses
180 ++ * a private profile.
181 ++ **/
182 ++#ifndef WEBENGINEVIEWER_NO_DEPRECATED
183 ++ explicit WEBENGINEVIEWER_DEPRECATED WebEnginePage(QWebEngineProfile *profile, QObject *parent = nullptr);
184 ++#endif
185 ++
186 ++ /**
187 ++ * Destructor. If there is a private QWebEngineProfile then it will also
188 ++ * be destroyed.
189 ++ **/
190 ++ virtual ~WebEnginePage() override = default;
191 ++
192 + WebEngineViewer::WebHitTest *hitTestContent(const QPoint &pos);
193 +
194 + void saveHtml(QWebEngineDownloadItem *download);
195 +--
196 +cgit v1.1
197 +
198
199 diff --git a/kde-apps/messagelib/messagelib-18.12.3-r2.ebuild b/kde-apps/messagelib/messagelib-18.12.3-r2.ebuild
200 new file mode 100644
201 index 00000000000..6dd0db1af4a
202 --- /dev/null
203 +++ b/kde-apps/messagelib/messagelib-18.12.3-r2.ebuild
204 @@ -0,0 +1,71 @@
205 +# Copyright 1999-2019 Gentoo Authors
206 +# Distributed under the terms of the GNU General Public License v2
207 +
208 +EAPI=7
209 +
210 +KDE_TEST="forceoptional-recursive"
211 +VIRTUALX_REQUIRED="test"
212 +inherit kde5
213 +
214 +DESCRIPTION="Libraries for messaging functions"
215 +LICENSE="GPL-2+ LGPL-2.1+"
216 +KEYWORDS="amd64 ~arm64 x86"
217 +IUSE=""
218 +
219 +DEPEND="
220 + $(add_frameworks_dep karchive)
221 + $(add_frameworks_dep kcodecs)
222 + $(add_frameworks_dep kcompletion)
223 + $(add_frameworks_dep kconfig)
224 + $(add_frameworks_dep kconfigwidgets)
225 + $(add_frameworks_dep kcoreaddons)
226 + $(add_frameworks_dep kdbusaddons)
227 + $(add_frameworks_dep ki18n)
228 + $(add_frameworks_dep kiconthemes)
229 + $(add_frameworks_dep kio)
230 + $(add_frameworks_dep kitemmodels)
231 + $(add_frameworks_dep kitemviews)
232 + $(add_frameworks_dep kjobwidgets)
233 + $(add_frameworks_dep knotifications)
234 + $(add_frameworks_dep kservice)
235 + $(add_frameworks_dep ktextwidgets)
236 + $(add_frameworks_dep kwidgetsaddons)
237 + $(add_frameworks_dep kwindowsystem)
238 + $(add_frameworks_dep kxmlgui)
239 + $(add_frameworks_dep sonnet)
240 + $(add_frameworks_dep syntax-highlighting)
241 + $(add_kdeapps_dep akonadi '' 18.12.3-r1)
242 + $(add_kdeapps_dep akonadi-contacts)
243 + $(add_kdeapps_dep akonadi-mime)
244 + $(add_kdeapps_dep grantleetheme)
245 + $(add_kdeapps_dep incidenceeditor)
246 + $(add_kdeapps_dep kcalcore)
247 + $(add_kdeapps_dep kcontacts)
248 + $(add_kdeapps_dep kdepim-apps-libs)
249 + $(add_kdeapps_dep kidentitymanagement)
250 + $(add_kdeapps_dep kldap)
251 + $(add_kdeapps_dep kmailtransport)
252 + $(add_kdeapps_dep kmbox)
253 + $(add_kdeapps_dep kmime)
254 + $(add_kdeapps_dep kpimtextedit)
255 + $(add_kdeapps_dep libgravatar)
256 + $(add_kdeapps_dep libkdepim)
257 + $(add_kdeapps_dep libkleo)
258 + $(add_qt_dep qtgui)
259 + $(add_qt_dep qtnetwork)
260 + $(add_qt_dep qtprintsupport)
261 + $(add_qt_dep qtwebengine 'widgets')
262 + $(add_qt_dep qtwidgets)
263 + >=app-crypt/gpgme-1.8.0-r1[cxx,qt5]
264 + >=dev-libs/grantlee-5.1.0:5
265 +"
266 +RDEPEND="${DEPEND}
267 + !kde-apps/kdepim-common-libs:4
268 + !kde-apps/kdepim-l10n
269 + !=kde-apps/kmail-4.4*:4
270 +"
271 +
272 +# bug 579630
273 +RESTRICT+=" test"
274 +
275 +PATCHES=( "${FILESDIR}/${P}-qtwebengine-5.12.3.patch" ) # bug 686842