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 |