aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2019-10-18 18:53:13 +0200
committerMarius Bakke <mbakke@fastmail.com>2019-10-18 18:53:13 +0200
commit07abc851ce8a580253061e065b31a4037d2f965d (patch)
tree07483255073c21c558d3019815c73c1da622fefd /gnu/packages/patches
parent133be097a8064219927b1698160ecbed34db12ac (diff)
downloadguix-07abc851ce8a580253061e065b31a4037d2f965d.tar
guix-07abc851ce8a580253061e065b31a4037d2f965d.tar.gz
gnu: kwindowsystem: Fix test failure with Qt 5.12.
* gnu/packages/patches/kwindowsystem-qt-compat.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/kde-frameworks.scm (kwindowsystem)[source](patches): New field. [inputs]: Add XCB-UTIL-WM.
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/kwindowsystem-qt-compat.patch97
1 files changed, 97 insertions, 0 deletions
diff --git a/gnu/packages/patches/kwindowsystem-qt-compat.patch b/gnu/packages/patches/kwindowsystem-qt-compat.patch
new file mode 100644
index 0000000000..ef31636917
--- /dev/null
+++ b/gnu/packages/patches/kwindowsystem-qt-compat.patch
@@ -0,0 +1,97 @@
+Fix test failure with Qt 5.12.
+
+Taken from upstream:
+https://cgit.kde.org/kwindowsystem.git/commit/?id=14998613603c7d8f91b011a2c9c20396067add0e
+
+diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt
+index f8e67f0..c1121a7 100644
+--- a/autotests/CMakeLists.txt
++++ b/autotests/CMakeLists.txt
+@@ -12,12 +12,12 @@ add_subdirectory(helper)
+
+ if (NOT APPLE)
+ find_package(X11)
+- find_package(XCB COMPONENTS XCB KEYSYMS)
++ find_package(XCB COMPONENTS XCB ICCCM KEYSYMS)
+ endif()
+
+ macro(KWINDOWSYSTEM_UNIT_TESTS)
+ foreach(_testname ${ARGN})
+- set(libs KF5::WindowSystem Qt5::Test Qt5::Widgets Qt5::X11Extras XCB::KEYSYMS)
++ set(libs KF5::WindowSystem Qt5::Test Qt5::Widgets Qt5::X11Extras XCB::ICCCM XCB::KEYSYMS)
+ if(X11_FOUND)
+ list(APPEND libs ${XCB_XCB_LIBRARY})
+ endif()
+diff --git a/autotests/kwindowinfox11test.cpp b/autotests/kwindowinfox11test.cpp
+index 634c650..f483c46 100644
+--- a/autotests/kwindowinfox11test.cpp
++++ b/autotests/kwindowinfox11test.cpp
+@@ -25,8 +25,11 @@
+ #include <qtest_widgets.h>
+ #include <QScreen>
+ #include <QSignalSpy>
++#include <QSysInfo>
+ #include <QX11Info>
+
++#include <xcb/xcb_icccm.h>
++
+ #include <unistd.h>
+
+ Q_DECLARE_METATYPE(WId)
+@@ -598,19 +601,23 @@ void KWindowInfoX11Test::testWindowRole()
+
+ void KWindowInfoX11Test::testClientMachine()
+ {
++ const QByteArray oldHostName = QSysInfo::machineHostName().toLocal8Bit();
++
+ KWindowInfo info(window->winId(), NET::Properties(), NET::WM2ClientMachine);
+- QVERIFY(info.clientMachine().isNull());
++ QCOMPARE(info.clientMachine(), oldHostName);
+
+ // client machine needs to be set through xcb
++ const QByteArray newHostName = oldHostName + "2";
+ xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE, window->winId(),
+- XCB_ATOM_WM_CLIENT_MACHINE, XCB_ATOM_STRING, 8, 9, "localhost");
++ XCB_ATOM_WM_CLIENT_MACHINE, XCB_ATOM_STRING, 8, newHostName.count(),
++ newHostName.data());
+ xcb_flush(QX11Info::connection());
+
+ // it's just a property change so we can easily refresh
+ QX11Info::getTimestamp();
+
+ KWindowInfo info2(window->winId(), NET::Properties(), NET::WM2ClientMachine);
+- QCOMPARE(info2.clientMachine(), QByteArrayLiteral("localhost"));
++ QCOMPARE(info2.clientMachine(), newHostName);
+ }
+
+ void KWindowInfoX11Test::testName()
+@@ -680,11 +687,25 @@ void KWindowInfoX11Test::testTransientFor()
+
+ void KWindowInfoX11Test::testGroupLeader()
+ {
+- KWindowInfo info(window->winId(), NET::Properties(), NET::WM2GroupLeader);
+- QCOMPARE(info.groupLeader(), WId(0));
++ // WM_CLIENT_LEADER is set by default
++ KWindowInfo info1(window->winId(), NET::Properties(), NET::WM2GroupLeader);
++ QVERIFY(info1.groupLeader() != XCB_WINDOW_NONE);
++
++ xcb_connection_t *connection = QX11Info::connection();
++ xcb_window_t rootWindow = QX11Info::appRootWindow();
++
++ xcb_window_t leader = xcb_generate_id(connection);
++ xcb_create_window(connection, XCB_COPY_FROM_PARENT, leader, rootWindow, 0, 0, 1, 1,
++ 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, XCB_COPY_FROM_PARENT, 0, nullptr);
++
++ xcb_icccm_wm_hints_t hints = {};
++ hints.flags = XCB_ICCCM_WM_HINT_WINDOW_GROUP;
++ hints.window_group = leader;
++ xcb_icccm_set_wm_hints(connection, leader, &hints);
++ xcb_icccm_set_wm_hints(connection, window->winId(), &hints);
+
+- // TODO: here we should try to set a group leader and re-read it
+- // this needs setting and parsing the WMHints
++ KWindowInfo info2(window->winId(), NET::Properties(), NET::WM2GroupLeader);
++ QCOMPARE(info2.groupLeader(), leader);
+ }
+
+ void KWindowInfoX11Test::testExtendedStrut()