mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-06 02:17:34 -08:00
kde-misc/yakuake: Fixes for Qt-5.9 and Wayland sessions
Package release cycle is slow. Package-Manager: Portage-2.3.11, Repoman-2.3.3
This commit is contained in:
parent
1ff2833374
commit
a2cca051f8
44
kde-misc/yakuake/files/yakuake-3.0.4-qdbus-crash.patch
Normal file
44
kde-misc/yakuake/files/yakuake-3.0.4-qdbus-crash.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From 09abe657c65ba482ce9253e54467d33276f88bc9 Mon Sep 17 00:00:00 2001
|
||||
From: Vangelis Tasoulas <cyberang3l@gmail.com>
|
||||
Date: Sat, 16 Sep 2017 16:42:44 +0500
|
||||
Subject: Fixes a yakuake "index out of range" crash produced by QDBus exposed
|
||||
function TabBar::sessionAtTab(int)
|
||||
|
||||
Summary:
|
||||
The function `TabBar::sessionAtTab(int index)` is exposed through QDBus and if a user/script passes a negative number, yakuake crashes with `index out of range`.
|
||||
|
||||
This patch fixes that behaviour with a sanity check. If the user passes a negative number, return -1.
|
||||
|
||||
Test Plan:
|
||||
Run the command `qdbus org.kde.yakuake /yakuake/tabs org.kde.yakuake.sessionAtTab -1`
|
||||
Yakuake will crash.
|
||||
|
||||
Apply the patch and re-run the above `qdbus` command. It shouldn't be crashing now.
|
||||
|
||||
Reviewers: #kde_applications, hein, alexeymin
|
||||
|
||||
Reviewed By: #kde_applications, hein, alexeymin
|
||||
|
||||
Subscribers: alexeymin
|
||||
|
||||
Differential Revision: https://phabricator.kde.org/D7812
|
||||
---
|
||||
app/tabbar.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/app/tabbar.cpp b/app/tabbar.cpp
|
||||
index b76cdee..1bc6fdd 100644
|
||||
--- a/app/tabbar.cpp
|
||||
+++ b/app/tabbar.cpp
|
||||
@@ -914,7 +914,7 @@ void TabBar::setTabTitleInteractive(int sessionId, const QString& newTitle)
|
||||
|
||||
int TabBar::sessionAtTab(int index)
|
||||
{
|
||||
- if (index > m_tabs.count() - 1)
|
||||
+ if (index < 0 || index > m_tabs.count() - 1)
|
||||
return -1;
|
||||
else
|
||||
return m_tabs.at(index);
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
32
kde-misc/yakuake/files/yakuake-3.0.4-qicon.patch
Normal file
32
kde-misc/yakuake/files/yakuake-3.0.4-qicon.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 28138a891ff71236b3b8efcd1bc5fe7a2fe09b0d Mon Sep 17 00:00:00 2001
|
||||
From: Kai Uwe Broulik <kde@privat.broulik.de>
|
||||
Date: Wed, 2 Aug 2017 16:31:09 +0200
|
||||
Subject: [Appearance Settings] QIcon -> QIcon::fromTheme
|
||||
|
||||
Most likely a porting error from KIcon
|
||||
|
||||
Reviewed-By: Eike Hein
|
||||
---
|
||||
app/config/appearancesettings.cpp | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/app/config/appearancesettings.cpp b/app/config/appearancesettings.cpp
|
||||
index c21ac33..b7d5c6f 100644
|
||||
--- a/app/config/appearancesettings.cpp
|
||||
+++ b/app/config/appearancesettings.cpp
|
||||
@@ -63,9 +63,9 @@ AppearanceSettings::AppearanceSettings(QWidget* parent) : QWidget(parent)
|
||||
connect(installButton, SIGNAL(clicked()), this, SLOT(installSkin()));
|
||||
connect(removeButton, SIGNAL(clicked()), this, SLOT(removeSelectedSkin()));
|
||||
|
||||
- installButton->setIcon(QIcon(QStringLiteral("folder")));
|
||||
- removeButton->setIcon(QIcon(QStringLiteral("edit-delete")));
|
||||
- ghnsButton->setIcon(QIcon(QStringLiteral("get-hot-new-stuff")));
|
||||
+ installButton->setIcon(QIcon::fromTheme(QStringLiteral("folder")));
|
||||
+ removeButton->setIcon(QIcon::fromTheme(QStringLiteral("edit-delete")));
|
||||
+ ghnsButton->setIcon(QIcon::fromTheme(QStringLiteral("get-hot-new-stuff")));
|
||||
|
||||
m_knsConfigFileName = QLatin1String("yakuake.knsrc");
|
||||
m_knsDownloadManager = new KNSCore::DownloadManager(m_knsConfigFileName);
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
120
kde-misc/yakuake/files/yakuake-3.0.4-qt-5.9-wayland.patch
Normal file
120
kde-misc/yakuake/files/yakuake-3.0.4-qt-5.9-wayland.patch
Normal file
@ -0,0 +1,120 @@
|
||||
From 7534df21025b10fd236dd5a8f92d0dff7889e0ef Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Martin=20Fl=C3=B6ser?= <mgraesslin@kde.org>
|
||||
Date: Wed, 6 Sep 2017 18:42:01 +0200
|
||||
Subject: Make Yakuake work on Wayland with Qt 5.9
|
||||
|
||||
Summary:
|
||||
Yakuake is also affected by the common problem that the integration
|
||||
breaks once a window gets hidden, which is a very common feature of
|
||||
Yakuake.
|
||||
|
||||
This change tracks the PlasmaShellSurface, destroys it on hide and
|
||||
recreates on show. Thus it's alwyas positioned as expected.
|
||||
|
||||
Test Plan:
|
||||
This commit was created using a yakuake which is positioned
|
||||
correctly, although I pressed F12 a few times.
|
||||
|
||||
Differential Revision: https://phabricator.kde.org/D7709
|
||||
---
|
||||
app/mainwindow.cpp | 33 ++++++++++++++++++++++++++-------
|
||||
app/mainwindow.h | 3 +++
|
||||
2 files changed, 29 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp
|
||||
index a7b0d89..6fa9160 100644
|
||||
--- a/app/mainwindow.cpp
|
||||
+++ b/app/mainwindow.cpp
|
||||
@@ -95,6 +95,7 @@ MainWindow::MainWindow(QWidget* parent)
|
||||
m_isWayland = QGuiApplication::platformName().startsWith(QLatin1String("wayland"));
|
||||
#if HAVE_KWAYLAND
|
||||
m_plasmaShell = Q_NULLPTR;
|
||||
+ m_plasmaShellSurface = Q_NULLPTR;
|
||||
initWayland();
|
||||
#endif
|
||||
|
||||
@@ -176,6 +177,21 @@ void MainWindow::initWayland()
|
||||
registry->setup();
|
||||
connection->roundtrip();
|
||||
}
|
||||
+
|
||||
+void MainWindow::initWaylandSurface()
|
||||
+{
|
||||
+ if (m_plasmaShellSurface) {
|
||||
+ return;
|
||||
+ }
|
||||
+ if (!m_plasmaShell) {
|
||||
+ return;
|
||||
+ }
|
||||
+ if (auto surface = KWayland::Client::Surface::fromWindow(windowHandle())) {
|
||||
+ m_plasmaShellSurface = m_plasmaShell->createSurface(surface, this);
|
||||
+ m_plasmaShellSurface->setPosition(pos());
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
#endif
|
||||
|
||||
bool MainWindow::queryClose()
|
||||
@@ -861,13 +877,7 @@ void MainWindow::setWindowGeometry(int newWidth, int newHeight, int newPosition)
|
||||
setGeometry(workArea.x() + workArea.width() * newPosition * (100 - newWidth) / 10000,
|
||||
workArea.y(), targetWidth, maxHeight);
|
||||
#if HAVE_KWAYLAND
|
||||
- if (m_plasmaShell) {
|
||||
- if (auto surface = KWayland::Client::Surface::fromWindow(windowHandle())) {
|
||||
- if (auto plasmaSurface = m_plasmaShell->createSurface(surface, this)) {
|
||||
- plasmaSurface->setPosition(pos());
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
+ initWaylandSurface();
|
||||
#endif
|
||||
|
||||
maxHeight -= m_titleBar->height();
|
||||
@@ -1303,6 +1313,10 @@ void MainWindow::sharedAfterOpenWindow()
|
||||
|
||||
applyWindowProperties();
|
||||
|
||||
+#if HAVE_KWAYLAND
|
||||
+ initWaylandSurface();
|
||||
+#endif
|
||||
+
|
||||
emit windowOpened();
|
||||
}
|
||||
|
||||
@@ -1316,6 +1330,11 @@ void MainWindow::sharedAfterHideWindow()
|
||||
{
|
||||
if (Settings::pollMouse()) toggleMousePoll(true);
|
||||
|
||||
+#if HAVE_KWAYLAND
|
||||
+ delete m_plasmaShellSurface;
|
||||
+ m_plasmaShellSurface = Q_NULLPTR;
|
||||
+#endif
|
||||
+
|
||||
emit windowClosed();
|
||||
}
|
||||
|
||||
diff --git a/app/mainwindow.h b/app/mainwindow.h
|
||||
index 8a46c89..bb6404e 100644
|
||||
--- a/app/mainwindow.h
|
||||
+++ b/app/mainwindow.h
|
||||
@@ -44,6 +44,7 @@ class KActionCollection;
|
||||
namespace KWayland {
|
||||
namespace Client {
|
||||
class PlasmaShell;
|
||||
+ class PlasmaShellSurface;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -203,7 +204,9 @@ class MainWindow : public QMainWindow
|
||||
|
||||
#if HAVE_KWAYLAND
|
||||
void initWayland();
|
||||
+ void initWaylandSurface();
|
||||
KWayland::Client::PlasmaShell *m_plasmaShell;
|
||||
+ KWayland::Client::PlasmaShellSurface *m_plasmaShellSurface;
|
||||
#endif
|
||||
};
|
||||
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
28
kde-misc/yakuake/files/yakuake-3.0.4-wayland.patch
Normal file
28
kde-misc/yakuake/files/yakuake-3.0.4-wayland.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From 3cdc1d0654dcd8e6eb3fc01d95fcccafe68cbb47 Mon Sep 17 00:00:00 2001
|
||||
From: Aleix Pol <aleixpol@kde.org>
|
||||
Date: Thu, 12 Oct 2017 18:41:58 +0200
|
||||
Subject: Fix (my) yakuake on a wayland session
|
||||
|
||||
KWindowSystem::activeWindow and winId are two entirely different things.
|
||||
|
||||
Reviewed by Eike
|
||||
---
|
||||
app/mainwindow.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp
|
||||
index 6fa9160..028bb9c 100644
|
||||
--- a/app/mainwindow.cpp
|
||||
+++ b/app/mainwindow.cpp
|
||||
@@ -1023,7 +1023,7 @@ void MainWindow::wmActiveWindowChanged()
|
||||
return;
|
||||
}
|
||||
|
||||
- if (!Settings::keepOpen() && isVisible() && KWindowSystem::activeWindow() != winId()) {
|
||||
+ if (!Settings::keepOpen() && hasFocus()) {
|
||||
toggleWindowState();
|
||||
}
|
||||
}
|
||||
--
|
||||
cgit v0.11.2
|
||||
|
||||
54
kde-misc/yakuake/yakuake-3.0.4-r1.ebuild
Normal file
54
kde-misc/yakuake/yakuake-3.0.4-r1.ebuild
Normal file
@ -0,0 +1,54 @@
|
||||
# Copyright 1999-2017 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
inherit kde5
|
||||
|
||||
DESCRIPTION="Quake-style terminal emulator based on konsole"
|
||||
HOMEPAGE="https://yakuake.kde.org/"
|
||||
if [[ ${KDE_BUILD_TYPE} != live ]]; then
|
||||
SRC_URI="mirror://kde/stable/${PN}/${PV}/src/${P}.tar.xz"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-2 LGPL-2"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE=""
|
||||
|
||||
DEPEND="
|
||||
$(add_frameworks_dep karchive)
|
||||
$(add_frameworks_dep kconfig)
|
||||
$(add_frameworks_dep kconfigwidgets)
|
||||
$(add_frameworks_dep kcoreaddons)
|
||||
$(add_frameworks_dep kcrash)
|
||||
$(add_frameworks_dep kdbusaddons)
|
||||
$(add_frameworks_dep kglobalaccel)
|
||||
$(add_frameworks_dep ki18n)
|
||||
$(add_frameworks_dep kiconthemes)
|
||||
$(add_frameworks_dep kio)
|
||||
$(add_frameworks_dep knewstuff)
|
||||
$(add_frameworks_dep knotifications)
|
||||
$(add_frameworks_dep knotifyconfig)
|
||||
$(add_frameworks_dep kparts)
|
||||
$(add_frameworks_dep kservice)
|
||||
$(add_frameworks_dep kwayland)
|
||||
$(add_frameworks_dep kwidgetsaddons)
|
||||
$(add_frameworks_dep kwindowsystem)
|
||||
$(add_frameworks_dep kxmlgui)
|
||||
$(add_kdeapps_dep konsole)
|
||||
$(add_qt_dep qtdbus)
|
||||
$(add_qt_dep qtgui)
|
||||
$(add_qt_dep qtwidgets)
|
||||
$(add_qt_dep qtx11extras)
|
||||
x11-libs/libX11
|
||||
"
|
||||
RDEPEND="${DEPEND}
|
||||
!kde-misc/yakuake:4
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${P}-qicon.patch"
|
||||
"${FILESDIR}/${P}-qt-5.9-wayland.patch"
|
||||
"${FILESDIR}/${P}-qdbus-crash.patch"
|
||||
"${FILESDIR}/${P}-wayland.patch"
|
||||
)
|
||||
Loading…
x
Reference in New Issue
Block a user