summaryrefslogtreecommitdiff
path: root/kde-apps/konsole/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-05-30 11:44:06 +0100
committerV3n3RiX <venerix@redcorelinux.org>2020-05-30 11:44:06 +0100
commitf516638b7fe9592837389826a6152a7e1b251c54 (patch)
tree8bfecb640b7b6403d7a3d662d923eed630033da7 /kde-apps/konsole/files
parent1a61119f9f7b057830e2ce0563f913ec86f282ad (diff)
gentoo resync : 30.05.2020
Diffstat (limited to 'kde-apps/konsole/files')
-rw-r--r--kde-apps/konsole/files/konsole-20.04.1-crash-on-close.patch57
-rw-r--r--kde-apps/konsole/files/konsole-20.04.1-qt-5.15-set-text-encoding-crash.patch109
-rw-r--r--kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch44
3 files changed, 210 insertions, 0 deletions
diff --git a/kde-apps/konsole/files/konsole-20.04.1-crash-on-close.patch b/kde-apps/konsole/files/konsole-20.04.1-crash-on-close.patch
new file mode 100644
index 000000000000..51e1d0c5dcd2
--- /dev/null
+++ b/kde-apps/konsole/files/konsole-20.04.1-crash-on-close.patch
@@ -0,0 +1,57 @@
+From fdfae25665731882687da8721e58c3c56a3babf8 Mon Sep 17 00:00:00 2001
+From: Nicolas Fella <nicolas.fella@gmx.de>
+Date: Thu, 28 May 2020 09:28:06 -0400
+Subject: Fix crash when closing session in KonsolePart via menu
+
+This close method is also used when closing a Konsole session
+via the X on the tabbar and tabheader.
+
+FIXED-IN: 20.08.0
+BUG: 420817
+BUG: 420695
+BUG: 415762
+
+See merge request !87
+---
+ src/SessionController.cpp | 23 +++++++++++++++--------
+ 1 file changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/src/SessionController.cpp b/src/SessionController.cpp
+index 006ba8b..e72f342 100644
+--- a/src/SessionController.cpp
++++ b/src/SessionController.cpp
+@@ -999,16 +999,23 @@ void SessionController::closeSession()
+ return;
+ }
+
+- if (confirmClose()) {
+- if (_session->closeInNormalWay()) {
++ if (!confirmClose()) {
++ return;
++ }
++
++ if (!_session->closeInNormalWay()) {
++ if (!confirmForceClose()) {
+ return;
+- } else if (confirmForceClose()) {
+- if (_session->closeInForceWay()) {
+- return;
+- } else {
+- qCDebug(KonsoleDebug) << "Konsole failed to close a session in any way.";
+- }
+ }
++
++ if (!_session->closeInForceWay()) {
++ qCDebug(KonsoleDebug) << "Konsole failed to close a session in any way.";
++ return;
++ }
++ }
++
++ if (factory()) {
++ factory()->removeClient(this);
+ }
+ }
+
+--
+cgit v1.1
+
diff --git a/kde-apps/konsole/files/konsole-20.04.1-qt-5.15-set-text-encoding-crash.patch b/kde-apps/konsole/files/konsole-20.04.1-qt-5.15-set-text-encoding-crash.patch
new file mode 100644
index 000000000000..78e5559d047a
--- /dev/null
+++ b/kde-apps/konsole/files/konsole-20.04.1-qt-5.15-set-text-encoding-crash.patch
@@ -0,0 +1,109 @@
+From 72e76de072aa4c7960396856e72681a00c4f67d9 Mon Sep 17 00:00:00 2001
+From: Ahmad Samir <a.samirh78@gmail.com>
+Date: Thu, 28 May 2020 21:40:29 +0200
+Subject: [PATCH] [SessionController] Fix crash caused by text encoding menu
+
+QMenu since 5.15 is hidden when an action is triggered, this caused a
+crash in Konsole when trying to access the text encoding menu.
+
+Now Session emits a signal when the text encoding is changed, the
+SessionController can connect to that singal to set the current codec in
+the KCodecAction object.
+
+Also fix the EditProfileDialog so that when the KCodecAction menu is
+shown the currently set codec is selected.
+
+BUG: 419526
+
+FIXED-IN: 20.08
+---
+ src/EditProfileDialog.cpp | 1 +
+ src/Session.cpp | 2 ++
+ src/Session.h | 5 +++++
+ src/SessionController.cpp | 7 ++++---
+ src/SessionController.h | 2 +-
+ 5 files changed, 13 insertions(+), 4 deletions(-)
+
+diff --git a/src/EditProfileDialog.cpp b/src/EditProfileDialog.cpp
+index a64136934..f93e9e166 100644
+--- a/src/EditProfileDialog.cpp
++++ b/src/EditProfileDialog.cpp
+@@ -1725,6 +1725,7 @@ void EditProfileDialog::setupAdvancedPage(const Profile::Ptr &profile)
+
+ // encoding options
+ auto codecAction = new KCodecAction(this);
++ codecAction->setCurrentCodec(profile->defaultEncoding());
+ _advancedUi->selectEncodingButton->setMenu(codecAction->menu());
+ connect(codecAction,
+ QOverload<QTextCodec *>::of(&KCodecAction::triggered), this,
+diff --git a/src/Session.cpp b/src/Session.cpp
+index 1103f6e1b..483d8fd6a 100644
+--- a/src/Session.cpp
++++ b/src/Session.cpp
+@@ -252,6 +252,8 @@ void Session::setCodec(QTextCodec* codec)
+ }
+
+ emulation()->setCodec(codec);
++
++ emit sessionCodecChanged(codec);
+ }
+
+ bool Session::setCodec(const QByteArray& name)
+diff --git a/src/Session.h b/src/Session.h
+index 1b7da1b3b..c1af3c05d 100644
+--- a/src/Session.h
++++ b/src/Session.h
+@@ -661,6 +661,11 @@ Q_SIGNALS:
+ */
+ void currentDirectoryChanged(const QString &dir);
+
++ /**
++ * Emitted when the session text encoding changes.
++ */
++ void sessionCodecChanged(QTextCodec *codec);
++
+ /** Emitted when a bell event occurs in the session. */
+ void bellRequest(const QString &message);
+
+diff --git a/src/SessionController.cpp b/src/SessionController.cpp
+index e72f342c4..f74969f85 100644
+--- a/src/SessionController.cpp
++++ b/src/SessionController.cpp
+@@ -691,7 +691,8 @@ void SessionController::setupCommonActions()
+ _codecAction = new KCodecAction(i18n("Set &Encoding"), this);
+ _codecAction->setIcon(QIcon::fromTheme(QStringLiteral("character-set")));
+ collection->addAction(QStringLiteral("set-encoding"), _codecAction);
+- connect(_codecAction->menu(), &QMenu::aboutToShow, this, &Konsole::SessionController::updateCodecAction);
++ _codecAction->setCurrentCodec(QString::fromUtf8(_session->codec()));
++ connect(_session.data(), &Konsole::Session::sessionCodecChanged, this, &Konsole::SessionController::updateCodecAction);
+ connect(_codecAction,
+ QOverload<QTextCodec*>::of(&KCodecAction::triggered), this,
+ &Konsole::SessionController::changeCodec);
+@@ -846,9 +847,9 @@ void SessionController::prepareSwitchProfileMenu()
+ _switchProfileMenu->menu()->clear();
+ _switchProfileMenu->menu()->addActions(_profileList->actions());
+ }
+-void SessionController::updateCodecAction()
++void SessionController::updateCodecAction(QTextCodec *codec)
+ {
+- _codecAction->setCurrentCodec(QString::fromUtf8(_session->codec()));
++ _codecAction->setCurrentCodec(codec);
+ }
+
+ void SessionController::changeCodec(QTextCodec* codec)
+diff --git a/src/SessionController.h b/src/SessionController.h
+index 057a31446..5062833b7 100644
+--- a/src/SessionController.h
++++ b/src/SessionController.h
+@@ -260,7 +260,7 @@ private Q_SLOTS:
+ // other
+ void setupSearchBar();
+ void prepareSwitchProfileMenu();
+- void updateCodecAction();
++ void updateCodecAction(QTextCodec *codec);
+ void showDisplayContextMenu(const QPoint &position);
+ void movementKeyFromSearchBarReceived(QKeyEvent *event);
+ void sessionNotificationsChanged(Session::Notification notification, bool enabled);
+--
+2.26.2
+
diff --git a/kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch b/kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch
new file mode 100644
index 000000000000..55213878ad27
--- /dev/null
+++ b/kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch
@@ -0,0 +1,44 @@
+From 5e5129d51fa85036832f1af44ec5b875d426392f Mon Sep 17 00:00:00 2001
+From: Maximilian Schiller <manimax3@outlook.de>
+Date: Thu, 28 May 2020 22:57:29 +0200
+Subject: [PATCH] Fix konsolepart Segfault when closed
+
+Assign the _view as the parent to the KXMLGuiFactory because the factory
+is referencing the view widget as its associated widget. Since the
+TerminalDisplay gets destructed first this is now a dangling pointer.
+If the view is set as the parent the factory gets cleaned up correctly.
+
+Also cleanup the created clientBuilder after destruction because it
+cant have a parent and would probably leak memory.
+
+BUG: 415762
+BUG: 421226
+BUG: 421194
+BUG: 421138
+---
+ src/SessionController.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/SessionController.cpp b/src/SessionController.cpp
+index e72f342c4..99e185f5e 100644
+--- a/src/SessionController.cpp
++++ b/src/SessionController.cpp
+@@ -1732,11 +1732,13 @@ void SessionController::showDisplayContextMenu(const QPoint& position)
+ if (factory() == nullptr) {
+ if (clientBuilder() == nullptr) {
+ setClientBuilder(new KXMLGUIBuilder(_view));
++
++ // Client builder does not get delted automatically
++ connect(this, &QObject::destroyed, this, [this]{ delete clientBuilder(); });
+ }
+
+- auto factory = new KXMLGUIFactory(clientBuilder(), this);
++ auto factory = new KXMLGUIFactory(clientBuilder(), _view);
+ factory->addClient(this);
+- ////qDebug() << "Created xmlgui factory" << factory;
+ }
+
+ QPointer<QMenu> popup = qobject_cast<QMenu*>(factory()->container(QStringLiteral("session-popup-menu"), this));
+--
+2.26.2
+