Hello community, here is the log from the commit of package kwindowsystem for openSUSE:Factory checked in at 2019-08-19 21:17:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwindowsystem (Old) and /work/SRC/openSUSE:Factory/.kwindowsystem.new.22127 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwindowsystem" Mon Aug 19 21:17:37 2019 rev:73 rq:722498 version:5.61.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kwindowsystem/kwindowsystem.changes 2019-07-26 12:21:18.710555726 +0200 +++ /work/SRC/openSUSE:Factory/.kwindowsystem.new.22127/kwindowsystem.changes 2019-08-19 21:18:17.188757250 +0200 @@ -1,0 +2,17 @@ +Wed Aug 7 17:51:51 UTC 2019 - Christophe Giboudeaux <[email protected]> + +- Update to 5.61.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/kde-frameworks-5.61.0.php +- Changes since 5.60.0: + * [platforms/xcb] Use XRES extension to get real window PID (kde#384837) + * Fix failing autotest + * Port KXMessages away from QWidget + +------------------------------------------------------------------- +Fri Jul 19 11:45:42 UTC 2019 - Wolfgang Bauer <[email protected]> + +- Don't lower minimum Qt version anymore, it requires 5.11 now + +------------------------------------------------------------------- Old: ---- kwindowsystem-5.60.0.tar.xz New: ---- frameworks.keyring kwindowsystem-5.61.0.tar.xz kwindowsystem-5.61.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwindowsystem.spec ++++++ --- /var/tmp/diff_new_pack.wP2QVP/_old 2019-08-19 21:18:20.160756647 +0200 +++ /var/tmp/diff_new_pack.wP2QVP/_new 2019-08-19 21:18:20.176756643 +0200 @@ -17,21 +17,25 @@ %define lname libKF5WindowSystem5 -%define _tar_path 5.60 +%define _tar_path 5.61 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} %bcond_without lang Name: kwindowsystem -Version: 5.60.0 +Version: 5.61.0 Release: 0 Summary: KDE Access to window manager License: LGPL-2.1-or-later Group: System/GUI/KDE URL: https://www.kde.org -Source: http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz -Source1: baselibs.conf +Source: https://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz +%if %{with lang} +Source1: https://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz.sig +Source2: frameworks.keyring +%endif +Source99: baselibs.conf BuildRequires: cmake >= 3.0 BuildRequires: extra-cmake-modules >= %{_kf5_bugfix_version} BuildRequires: fdupes @@ -94,9 +98,6 @@ %prep %setup -q -%if 0%{?suse_version} == 1500 -sed -i -e "s/^set *(REQUIRED_QT_VERSION 5.10.0)$/set(REQUIRED_QT_VERSION 5.9.0)/" CMakeLists.txt -%endif %build %cmake_kf5 -d build -- -Dlconvert_executable=%{_kf5_libdir}/qt5/bin/lconvert ++++++ kwindowsystem-5.60.0.tar.xz -> kwindowsystem-5.61.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/CMakeLists.txt new/kwindowsystem-5.61.0/CMakeLists.txt --- old/kwindowsystem-5.60.0/CMakeLists.txt 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/CMakeLists.txt 2019-08-03 21:59:52.000000000 +0200 @@ -1,15 +1,15 @@ cmake_minimum_required(VERSION 3.5) -set(KF5_VERSION "5.60.0") # handled by release scripts +set(KF5_VERSION "5.61.0") # handled by release scripts project(KWindowSystem VERSION ${KF5_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.60.0 NO_MODULE) +find_package(ECM 5.61.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) -set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) include(GenerateExportHeader) @@ -54,7 +54,7 @@ set(KWINDOWSYSTEM_HAVE_X11 ${X11_FOUND}) if(X11_FOUND) - find_package(XCB COMPONENTS XCB KEYSYMS) + find_package(XCB COMPONENTS XCB KEYSYMS RES) find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED X11Extras) set_package_properties(X11_Xrender PROPERTIES DESCRIPTION "X Rendering Extension (libXrender)" URL "http://www.x.org" TYPE RECOMMENDED diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/autotests/CMakeLists.txt new/kwindowsystem-5.61.0/autotests/CMakeLists.txt --- old/kwindowsystem-5.60.0/autotests/CMakeLists.txt 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/autotests/CMakeLists.txt 2019-08-03 21:59:52.000000000 +0200 @@ -12,12 +12,12 @@ 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/autotests/kwindowinfox11test.cpp new/kwindowsystem-5.61.0/autotests/kwindowinfox11test.cpp --- old/kwindowsystem-5.60.0/autotests/kwindowinfox11test.cpp 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/autotests/kwindowinfox11test.cpp 2019-08-03 21:59:52.000000000 +0200 @@ -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::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::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() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/po/gl/kwindowsystem5_qt.po new/kwindowsystem-5.61.0/po/gl/kwindowsystem5_qt.po --- old/kwindowsystem-5.60.0/po/gl/kwindowsystem5_qt.po 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/po/gl/kwindowsystem5_qt.po 2019-08-03 21:59:52.000000000 +0200 @@ -22,10 +22,6 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Lokalize 1.5\n" -"X-Environment: kde, development\n" -"X-Accelerator-Marker: &\n" -"X-Text-Markup: kde4\n" "X-Qt-Contexts: true\n" #: platforms/osx/kwindowsystem.cpp:578 platforms/windows/kwindowsystem.cpp:630 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/po/zh_CN/kwindowsystem5_qt.po new/kwindowsystem-5.61.0/po/zh_CN/kwindowsystem5_qt.po --- old/kwindowsystem-5.60.0/po/zh_CN/kwindowsystem5_qt.po 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/po/zh_CN/kwindowsystem5_qt.po 2019-08-03 21:59:52.000000000 +0200 @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: kdeorg\n" -"PO-Revision-Date: 2019-06-02 11:52\n" +"PO-Revision-Date: 2019-07-18 14:57\n" "Last-Translator: Guo Yunhe (guoyunhe)\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/src/platforms/xcb/CMakeLists.txt new/kwindowsystem-5.61.0/src/platforms/xcb/CMakeLists.txt --- old/kwindowsystem-5.60.0/src/platforms/xcb/CMakeLists.txt 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/src/platforms/xcb/CMakeLists.txt 2019-08-03 21:59:52.000000000 +0200 @@ -13,6 +13,7 @@ KF5WindowSystem Qt5::X11Extras XCB::XCB + XCB::RES ${X11_LIBRARIES} ${X11_Xfixes_LIB} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/src/platforms/xcb/kwindowinfo.cpp new/kwindowsystem-5.61.0/src/platforms/xcb/kwindowinfo.cpp --- old/kwindowsystem-5.60.0/src/platforms/xcb/kwindowinfo.cpp 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/src/platforms/xcb/kwindowinfo.cpp 2019-08-03 21:59:52.000000000 +0200 @@ -27,6 +27,21 @@ #include <QX11Info> #include <X11/Xatom.h> +#include <xcb/res.h> + +static bool haveXRes() +{ + static bool s_checked = false; + static bool s_haveXRes = false; + if (!s_checked) { + auto cookie = xcb_res_query_version(QX11Info::connection(), XCB_RES_MAJOR_VERSION, XCB_RES_MINOR_VERSION); + QScopedPointer<xcb_res_query_version_reply_t, QScopedPointerPodDeleter >reply(xcb_res_query_version_reply(QX11Info::connection(), cookie, nullptr)); + s_haveXRes = !reply.isNull(); + s_checked = true; + } + return s_haveXRes; +} + // KWindowSystem::info() should be updated too if something has to be changed here KWindowInfoPrivateX11::KWindowInfoPrivateX11(WId _win, NET::Properties properties, NET::Properties2 properties2) : KWindowInfoPrivate(_win, properties, properties2) @@ -75,6 +90,19 @@ m_frame_geometry.setRect(frame.pos.x, frame.pos.y, frame.size.width, frame.size.height); } m_valid = !handler.error(false); // no sync - NETWinInfo did roundtrips + + if (haveXRes()) { + xcb_res_client_id_spec_t specs; + specs.client = win(); + specs.mask = XCB_RES_CLIENT_ID_MASK_LOCAL_CLIENT_PID; + auto cookie = xcb_res_query_client_ids(QX11Info::connection(), 1, &specs); + + QScopedPointer<xcb_res_query_client_ids_reply_t, QScopedPointerPodDeleter> reply( xcb_res_query_client_ids_reply(QX11Info::connection(), cookie, nullptr)); + if (reply && xcb_res_query_client_ids_ids_length(reply.data()) > 0) { + uint32_t pid = *xcb_res_client_id_value_value((xcb_res_query_client_ids_ids_iterator(reply.data()).data)); + m_pid = pid; + } + } } KWindowInfoPrivateX11::~KWindowInfoPrivateX11() @@ -431,10 +459,18 @@ int KWindowInfoPrivateX11::pid() const { + // If pid is found using the XRes extension use that instead. + // It is more reliable than the app reporting it's own PID as apps + // within an app namespace are unable to do so correctly + if (m_pid > 0) { + return m_pid; + } + #if !defined(KDE_NO_WARNING_OUTPUT) if (!(m_info->passedProperties() & NET::WMPid)) { qWarning() << "Pass NET::WMPid to KWindowInfo"; } #endif + return m_info->pid(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/src/platforms/xcb/kwindowinfo_p_x11.h new/kwindowsystem-5.61.0/src/platforms/xcb/kwindowinfo_p_x11.h --- old/kwindowsystem-5.60.0/src/platforms/xcb/kwindowinfo_p_x11.h 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/src/platforms/xcb/kwindowinfo_p_x11.h 2019-08-03 21:59:52.000000000 +0200 @@ -66,6 +66,7 @@ QString m_iconic_name; QRect m_geometry; QRect m_frame_geometry; + int m_pid = -1; // real PID from XResources. Valid if > 0 bool m_valid; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.60.0/src/platforms/xcb/kxmessages.cpp new/kwindowsystem-5.61.0/src/platforms/xcb/kxmessages.cpp --- old/kwindowsystem-5.60.0/src/platforms/xcb/kxmessages.cpp 2019-07-07 20:39:06.000000000 +0200 +++ new/kwindowsystem-5.61.0/src/platforms/xcb/kxmessages.cpp 2019-08-03 21:59:52.000000000 +0200 @@ -30,7 +30,7 @@ #include <qcoreapplication.h> #include <QDebug> -#include <QWidget> // WId +#include <QWindow> // WId #include <QAbstractNativeEventFilter> #include <xcb/xcb.h> @@ -112,7 +112,7 @@ KXMessagesPrivate(KXMessages *parent, const char *acceptBroadcast, xcb_connection_t *c, xcb_window_t root) : accept_atom1(acceptBroadcast ? QByteArray(acceptBroadcast) + QByteArrayLiteral("_BEGIN") : QByteArray()) , accept_atom2(acceptBroadcast ? QByteArray(acceptBroadcast) : QByteArray()) - , handle(new QWidget) + , handle(new QWindow) , q(parent) , valid(c) , connection(c) @@ -129,7 +129,7 @@ XcbAtom accept_atom1; XcbAtom accept_atom2; QMap< WId, QByteArray > incoming_messages; - QScopedPointer<QWidget> handle; + QScopedPointer<QWindow> handle; KXMessages *q; bool valid; xcb_connection_t *connection;
