summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2021-08-13 22:06:18 +0200
committerAndreas Sturmlechner <asturm@gentoo.org>2021-08-13 22:13:47 +0200
commitc0e6cbb16cc7682173870439709ba880e1460b46 (patch)
tree87b1d0003200efb354111c15087fc7691c15034f /kde-apps/konsole
parentwww-client/chromium: Stabilize 92.0.4515.131 arm64, #806223 (diff)
downloadgentoo-c0e6cbb16cc7682173870439709ba880e1460b46.tar.gz
gentoo-c0e6cbb16cc7682173870439709ba880e1460b46.tar.bz2
gentoo-c0e6cbb16cc7682173870439709ba880e1460b46.zip
kde-apps/konsole: Prevent window "flashing" when closing last session
Upstream commit 302c16791935cc3cf262aee355afce13d694b00f KDE-bug: https://bugs.kde.org/show_bug.cgi?id=432077 Bug: https://bugs.gentoo.org/807933 Package-Manager: Portage-3.0.20, Repoman-3.0.3 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'kde-apps/konsole')
-rw-r--r--kde-apps/konsole/files/konsole-21.04.3-no-flash-on-session-close.patch81
-rw-r--r--kde-apps/konsole/konsole-21.04.3-r1.ebuild76
-rw-r--r--kde-apps/konsole/konsole-21.08.0-r1.ebuild72
3 files changed, 229 insertions, 0 deletions
diff --git a/kde-apps/konsole/files/konsole-21.04.3-no-flash-on-session-close.patch b/kde-apps/konsole/files/konsole-21.04.3-no-flash-on-session-close.patch
new file mode 100644
index 000000000000..d8b14f2f1660
--- /dev/null
+++ b/kde-apps/konsole/files/konsole-21.04.3-no-flash-on-session-close.patch
@@ -0,0 +1,81 @@
+From 302c16791935cc3cf262aee355afce13d694b00f Mon Sep 17 00:00:00 2001
+From: Ahmad Samir <a.samirh78@gmail.com>
+Date: Thu, 12 Aug 2021 13:58:20 +0200
+Subject: [PATCH] Prevent window "flashing" when closing the last session
+
+There are two scenarios when closing a window:
+A) clicking the close button on the title bar (or Ctrl+Shift+Q):
+~MainWindow()
+~ViewManager()
+~TabbedViewContainer()
+~TerminalDisplay()
+~Session()
+
+B) closing the last session/tab in a window:
+SessionController::sessionFinished()
+~Session()
+~TerminalDisplay()
+~TabbedViewContainer()
+~MainWindow()
+~ViewManager()
+
+the issue with the second case is that the TerminalDisplay is torn down
+first, which exposes the TabbedViewContainer widget, the latter has the same
+Qt::Window colour as the system colour scheme window background colour, if
+you're using a dark terminal colour scheme and a light-coloured system colour
+scheme, you could see some "flashing" when you close the last session with
+e.g. Ctrl+D.
+
+To fix this, in sessionFinished() check if TabbedViewContainer::count() is
+1 (i.e. closing last tab/session), and emit the empty() signal in that case,
+which is connected to MainwWindow::close(), then the order of tear down
+becomes:
+SessionController::sessionFinished()
+~Session()
+~MainWindow()
+~ViewManager()
+~TabbedViewContainer()
+~TerminalDisplay()
+
+BUG: 432077
+FIXED-IN: 21.12
+(cherry picked from commit bbec72250d080ce286a6762fb9beee4b6e7981c9)
+---
+ src/MainWindow.cpp | 2 +-
+ src/ViewManager.cpp | 7 +++++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
+index cc38b3990..0fae334de 100644
+--- a/src/MainWindow.cpp
++++ b/src/MainWindow.cpp
+@@ -102,7 +102,7 @@ MainWindow::MainWindow() :
+
+ // create view manager
+ _viewManager = new ViewManager(this, actionCollection());
+- connect(_viewManager, &Konsole::ViewManager::empty, this, &Konsole::MainWindow::close);
++ connect(_viewManager, &Konsole::ViewManager::empty, this, &QWidget::close);
+ connect(_viewManager, &Konsole::ViewManager::activeViewChanged, this,
+ &Konsole::MainWindow::activeViewChanged);
+ connect(_viewManager, &Konsole::ViewManager::unplugController, this,
+diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp
+index 751684dc8..4d33a4cf8 100644
+--- a/src/ViewManager.cpp
++++ b/src/ViewManager.cpp
+@@ -461,6 +461,13 @@ void ViewManager::sessionFinished()
+ return;
+ }
+
++ // The last session/tab? emit empty() so that close() is called in
++ // MainWindow, fixes #432077
++ if (_viewContainer->count() == 1) {
++ Q_EMIT empty();
++ return;
++ }
++
+ auto *session = qobject_cast<Session *>(sender());
+ Q_ASSERT(session);
+
+--
+GitLab
+
diff --git a/kde-apps/konsole/konsole-21.04.3-r1.ebuild b/kde-apps/konsole/konsole-21.04.3-r1.ebuild
new file mode 100644
index 000000000000..eb5601c28fcf
--- /dev/null
+++ b/kde-apps/konsole/konsole-21.04.3-r1.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+ECM_HANDBOOK="optional"
+ECM_TEST="true"
+KFMIN=5.80.0
+QTMIN=5.15.2
+VIRTUALX_REQUIRED="test"
+inherit ecm kde.org
+
+DESCRIPTION="KDE's terminal emulator"
+HOMEPAGE="https://apps.kde.org/konsole/ https://konsole.kde.org"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+IUSE="X"
+
+DEPEND="
+ >=dev-qt/qtdbus-${QTMIN}:5
+ >=dev-qt/qtgui-${QTMIN}:5
+ >=dev-qt/qtnetwork-${QTMIN}:5
+ >=dev-qt/qtprintsupport-${QTMIN}:5
+ >=dev-qt/qtwidgets-${QTMIN}:5
+ >=dev-qt/qtxml-${QTMIN}:5
+ >=kde-frameworks/kbookmarks-${KFMIN}:5
+ >=kde-frameworks/kconfig-${KFMIN}:5
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:5
+ >=kde-frameworks/kcoreaddons-${KFMIN}:5
+ >=kde-frameworks/kcrash-${KFMIN}:5
+ >=kde-frameworks/kdbusaddons-${KFMIN}:5
+ >=kde-frameworks/kguiaddons-${KFMIN}:5
+ >=kde-frameworks/kjobwidgets-${KFMIN}:5
+ >=kde-frameworks/ki18n-${KFMIN}:5
+ >=kde-frameworks/kinit-${KFMIN}:5
+ >=kde-frameworks/kiconthemes-${KFMIN}:5
+ >=kde-frameworks/kio-${KFMIN}:5
+ >=kde-frameworks/knewstuff-${KFMIN}:5
+ >=kde-frameworks/knotifications-${KFMIN}:5
+ >=kde-frameworks/knotifyconfig-${KFMIN}:5
+ >=kde-frameworks/kparts-${KFMIN}:5
+ >=kde-frameworks/kpty-${KFMIN}:5
+ >=kde-frameworks/kservice-${KFMIN}:5
+ >=kde-frameworks/ktextwidgets-${KFMIN}:5
+ >=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+ >=kde-frameworks/kwindowsystem-${KFMIN}:5
+ >=kde-frameworks/kxmlgui-${KFMIN}:5
+ X? ( x11-libs/libX11 )
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-no-flash-on-session-close.patch" ) # bug 807933
+
+src_prepare() {
+ ecm_src_prepare
+ ecm_punt_bogus_dep KF5 Completion
+}
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake_use_find_package X X11)
+ )
+
+ ecm_src_configure
+}
+
+src_test() {
+ # drkonqi process interferes. bug 702690
+ local myctestargs=(
+ -E "(DBusTest)"
+ )
+
+ ecm_src_test
+}
diff --git a/kde-apps/konsole/konsole-21.08.0-r1.ebuild b/kde-apps/konsole/konsole-21.08.0-r1.ebuild
new file mode 100644
index 000000000000..a9745100e0f6
--- /dev/null
+++ b/kde-apps/konsole/konsole-21.08.0-r1.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+ECM_HANDBOOK="optional"
+ECM_TEST="true"
+KFMIN=5.84.0
+QTMIN=5.15.2
+VIRTUALX_REQUIRED="test"
+inherit ecm kde.org
+
+DESCRIPTION="KDE's terminal emulator"
+HOMEPAGE="https://apps.kde.org/konsole/ https://konsole.kde.org"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+IUSE="X"
+
+DEPEND="
+ >=dev-qt/qtdbus-${QTMIN}:5
+ >=dev-qt/qtgui-${QTMIN}:5
+ >=dev-qt/qtnetwork-${QTMIN}:5
+ >=dev-qt/qtprintsupport-${QTMIN}:5
+ >=dev-qt/qtwidgets-${QTMIN}:5
+ >=dev-qt/qtxml-${QTMIN}:5
+ >=kde-frameworks/kbookmarks-${KFMIN}:5
+ >=kde-frameworks/kconfig-${KFMIN}:5
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:5
+ >=kde-frameworks/kcoreaddons-${KFMIN}:5
+ >=kde-frameworks/kcrash-${KFMIN}:5
+ >=kde-frameworks/kdbusaddons-${KFMIN}:5
+ >=kde-frameworks/kguiaddons-${KFMIN}:5
+ >=kde-frameworks/kjobwidgets-${KFMIN}:5
+ >=kde-frameworks/ki18n-${KFMIN}:5
+ >=kde-frameworks/kiconthemes-${KFMIN}:5
+ >=kde-frameworks/kio-${KFMIN}:5
+ >=kde-frameworks/knewstuff-${KFMIN}:5
+ >=kde-frameworks/knotifications-${KFMIN}:5
+ >=kde-frameworks/knotifyconfig-${KFMIN}:5
+ >=kde-frameworks/kparts-${KFMIN}:5
+ >=kde-frameworks/kpty-${KFMIN}:5
+ >=kde-frameworks/kservice-${KFMIN}:5
+ >=kde-frameworks/ktextwidgets-${KFMIN}:5
+ >=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+ >=kde-frameworks/kwindowsystem-${KFMIN}:5
+ >=kde-frameworks/kxmlgui-${KFMIN}:5
+ X? ( x11-libs/libX11 )
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-21.04.3-no-flash-on-session-close.patch" # bug 807933
+)
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake_use_find_package X X11)
+ )
+
+ ecm_src_configure
+}
+
+src_test() {
+ # drkonqi process interferes. bug 702690
+ local myctestargs=(
+ -E "(DBusTest)"
+ )
+
+ ecm_src_test
+}