diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-05-30 11:44:06 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-05-30 11:44:06 +0100 |
commit | f516638b7fe9592837389826a6152a7e1b251c54 (patch) | |
tree | 8bfecb640b7b6403d7a3d662d923eed630033da7 /kde-apps/konsole/files | |
parent | 1a61119f9f7b057830e2ce0563f913ec86f282ad (diff) |
gentoo resync : 30.05.2020
Diffstat (limited to 'kde-apps/konsole/files')
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 + |