Hello community, here is the log from the commit of package kwindowsystem for openSUSE:Factory checked in at 2016-11-17 12:38:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwindowsystem (Old) and /work/SRC/openSUSE:Factory/.kwindowsystem.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwindowsystem" Changes: -------- --- /work/SRC/openSUSE:Factory/kwindowsystem/kwindowsystem.changes 2016-10-28 12:24:29.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kwindowsystem.new/kwindowsystem.changes 2016-11-17 12:38:08.000000000 +0100 @@ -1,0 +2,9 @@ +Sat Nov 5 22:12:26 UTC 2016 - [email protected] + +- Update to 5.28.0 + * Improved relocatability of CMake export + * Add support for desktopFileName to NETWinInfo + * For more details please see: + https://www.kde.org/announcements/kde-frameworks-5.28.0.php + +------------------------------------------------------------------- Old: ---- kwindowsystem-5.27.0.tar.xz New: ---- kwindowsystem-5.28.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwindowsystem.spec ++++++ --- /var/tmp/diff_new_pack.DSDdjP/_old 2016-11-17 12:38:09.000000000 +0100 +++ /var/tmp/diff_new_pack.DSDdjP/_new 2016-11-17 12:38:09.000000000 +0100 @@ -18,9 +18,9 @@ %bcond_without lang %define lname libKF5WindowSystem5 -%define _tar_path 5.27 +%define _tar_path 5.28 Name: kwindowsystem -Version: 5.27.0 +Version: 5.28.0 Release: 0 BuildRequires: cmake >= 2.8.12 BuildRequires: extra-cmake-modules >= %{_tar_path} ++++++ kwindowsystem-5.27.0.tar.xz -> kwindowsystem-5.28.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.27.0/CMakeLists.txt new/kwindowsystem-5.28.0/CMakeLists.txt --- old/kwindowsystem-5.27.0/CMakeLists.txt 2016-10-02 12:01:58.000000000 +0200 +++ new/kwindowsystem-5.28.0/CMakeLists.txt 2016-11-05 16:00:08.000000000 +0100 @@ -4,7 +4,7 @@ # ECM setup include(FeatureSummary) -find_package(ECM 5.27.0 NO_MODULE) +find_package(ECM 5.28.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) @@ -19,7 +19,7 @@ include(ECMPoQmTools) -set(KF5_VERSION "5.27.0") # handled by release scripts +set(KF5_VERSION "5.28.0") # handled by release scripts ecm_setup_version(${KF5_VERSION} VARIABLE_PREFIX KWINDOWSYSTEM VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kwindowsystem_version.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.27.0/autotests/netwininfotestclient.cpp new/kwindowsystem-5.28.0/autotests/netwininfotestclient.cpp --- old/kwindowsystem-5.27.0/autotests/netwininfotestclient.cpp 2016-10-02 12:01:58.000000000 +0200 +++ new/kwindowsystem-5.28.0/autotests/netwininfotestclient.cpp 2016-11-05 16:00:08.000000000 +0100 @@ -61,6 +61,7 @@ void testBlockCompositing(); void testUserTime(); void testStartupId(); + void testDesktopFileName(); void testHandledIcons_data(); void testHandledIcons(); void testPid(); @@ -285,6 +286,28 @@ QCOMPARE(info.startupId(), "foo"); } +void NetWinInfoTestClient::testDesktopFileName() +{ + QVERIFY(connection()); + ATOM(_KDE_NET_WM_DESKTOP_FILE) + UTF8 + INFO + + QVERIFY(!info.desktopFileName()); + info.setDesktopFileName("foo"); + QCOMPARE(info.desktopFileName(), "foo"); + + // compare with the X property + QVERIFY(atom != XCB_ATOM_NONE); + QVERIFY(utf8String != XCB_ATOM_NONE); + GETPROP(utf8String, 3, 8) + QCOMPARE(reinterpret_cast<const char *>(xcb_get_property_value(reply.data())), "foo"); + + // and wait for our event + waitForPropertyChange(&info, atom, NET::Property(0), NET::WM2DesktopFileName); + QCOMPARE(info.desktopFileName(), "foo"); +} + void NetWinInfoTestClient::testHandledIcons_data() { QTest::addColumn<bool>("handled"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.27.0/src/CMakeLists.txt new/kwindowsystem-5.28.0/src/CMakeLists.txt --- old/kwindowsystem-5.27.0/src/CMakeLists.txt 2016-10-02 12:01:58.000000000 +0200 +++ new/kwindowsystem-5.28.0/src/CMakeLists.txt 2016-11-05 16:00:08.000000000 +0100 @@ -85,12 +85,6 @@ target_include_directories(KF5WindowSystem PUBLIC ${XCB_XCB_INCLUDE_DIR} ${X11_X11_INCLUDE_PATH}) endif() -if(IS_ABSOLUTE "${KDE_INSTALL_INCLUDEDIR_KF5}") - target_include_directories(KF5WindowSystem INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF5}>" ) -else() - target_include_directories(KF5WindowSystem INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/${KDE_INSTALL_INCLUDEDIR_KF5}>" ) -endif() - set_target_properties(KF5WindowSystem PROPERTIES VERSION ${KWINDOWSYSTEM_VERSION_STRING} SOVERSION ${KWINDOWSYSTEM_SOVERSION} EXPORT_NAME WindowSystem diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.27.0/src/netwm_def.h new/kwindowsystem-5.28.0/src/netwm_def.h --- old/kwindowsystem-5.27.0/src/netwm_def.h 2016-10-02 12:01:58.000000000 +0200 +++ new/kwindowsystem-5.28.0/src/netwm_def.h 2016-11-05 16:00:08.000000000 +0100 @@ -687,6 +687,7 @@ @li WM2InitialMappingState initial state hint of WM_HINTS (see ICCCM 4.1.2.4) @li WM2IconPixmap icon pixmap and mask in WM_HINTS (see ICCCM 4.1.2.4) @li WM2OpaqueRegion + @li WM2DesktopFileName the base name of the desktop file name or the full path to the desktop file **/ enum Property2 { WM2UserTime = 1u << 0, @@ -716,6 +717,7 @@ WM2InitialMappingState = 1u << 24, // @since 5.5 WM2IconPixmap = 1u << 25, // @since 5.7 WM2OpaqueRegion = 1u << 25, // @since 5.7 + WM2DesktopFileName = 1u << 26, // NOT STANDARD @since 5.28 WM2AllProperties = ~0u }; Q_DECLARE_FLAGS(Properties2, Property2) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.27.0/src/platforms/xcb/atoms_p.h new/kwindowsystem-5.28.0/src/platforms/xcb/atoms_p.h --- old/kwindowsystem-5.27.0/src/platforms/xcb/atoms_p.h 2016-10-02 12:01:58.000000000 +0200 +++ new/kwindowsystem-5.28.0/src/platforms/xcb/atoms_p.h 2016-11-05 16:00:08.000000000 +0100 @@ -100,6 +100,7 @@ ENUM(_NET_WM_WINDOW_OPACITY), ENUM(_NET_WM_FULLSCREEN_MONITORS), ENUM(_NET_WM_OPAQUE_REGION), + ENUM(_KDE_NET_WM_DESKTOP_FILE), // used to determine whether application window is managed or not ENUM(WM_STATE), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.27.0/src/platforms/xcb/netwm.cpp new/kwindowsystem-5.28.0/src/platforms/xcb/netwm.cpp --- old/kwindowsystem-5.27.0/src/platforms/xcb/netwm.cpp 2016-10-02 12:01:58.000000000 +0200 +++ new/kwindowsystem-5.28.0/src/platforms/xcb/netwm.cpp 2016-11-05 16:00:08.000000000 +0100 @@ -172,6 +172,7 @@ delete [] p->class_name; delete [] p->activities; delete [] p->client_machine; + delete [] p->desktop_file; int i; for (i = 0; i < p->icons.size(); i++) { @@ -2587,6 +2588,7 @@ p->client_machine = (char *) 0; p->icon_sizes = NULL; p->activities = (char *) 0; + p->desktop_file = Q_NULLPTR; p->blockCompositing = false; p->urgency = false; p->input = true; @@ -2649,6 +2651,7 @@ p->client_machine = (char *) 0; p->icon_sizes = NULL; p->activities = (char *) 0; + p->desktop_file = Q_NULLPTR; p->blockCompositing = false; p->urgency = false; p->input = true; @@ -3774,6 +3777,8 @@ dirty2 |= WM2Protocols; } else if (pe->atom == p->atom(_NET_WM_OPAQUE_REGION)) { dirty2 |= WM2OpaqueRegion; + } else if (pe->atom == p->atom(_KDE_NET_WM_DESKTOP_FILE)) { + dirty2 = WM2DesktopFileName; } do_update = true; @@ -3961,6 +3966,10 @@ cookies[c++] = xcb_get_property(p->conn, false, p->window, p->atom(_NET_WM_OPAQUE_REGION), XCB_ATOM_CARDINAL, 0, MAX_PROP_SIZE); } + if (dirty2 & WM2DesktopFileName) { + cookies[c++] = xcb_get_property(p->conn, false, p->window, p->atom(_KDE_NET_WM_DESKTOP_FILE), p->atom(UTF8_STRING), 0, MAX_PROP_SIZE); + } + c = 0; if (dirty & XAWMState) { @@ -4524,6 +4533,16 @@ p->opaqueRegion.push_back(rect); } } + + if (dirty2 & WM2DesktopFileName) { + delete[] p->desktop_file; + p->desktop_file = NULL; + + const QByteArray id = get_string_reply(p->conn, cookies[c++], p->atom(UTF8_STRING)); + if (id.length() > 0) { + p->desktop_file = nstrndup(id.constData(), id.length()); + } + } } NETRect NETWinInfo::iconGeometry() const @@ -4803,6 +4822,25 @@ return p->conn; } +void NETWinInfo::setDesktopFileName(const char *name) +{ + if (p->role != Client) { + return; + } + + delete[] p->desktop_file; + p->desktop_file = nstrdup(name); + + xcb_change_property(p->conn, XCB_PROP_MODE_REPLACE, p->window, p->atom(_KDE_NET_WM_DESKTOP_FILE), + p->atom(UTF8_STRING), 8, strlen(p->desktop_file), + (const void *) p->desktop_file); +} + +const char *NETWinInfo::desktopFileName() const +{ + return p->desktop_file; +} + void NETRootInfo::virtual_hook(int, void *) { /*BASE::virtual_hook( id, data );*/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.27.0/src/platforms/xcb/netwm.h new/kwindowsystem-5.28.0/src/platforms/xcb/netwm.h --- old/kwindowsystem-5.27.0/src/platforms/xcb/netwm.h 2016-10-02 12:01:58.000000000 +0200 +++ new/kwindowsystem-5.28.0/src/platforms/xcb/netwm.h 2016-11-05 16:00:08.000000000 +0100 @@ -1583,6 +1583,28 @@ std::vector<NETRect> opaqueRegion() const; /** + * Sets the @p name as the desktop file name. + * + * This is either the base name without full path and without file extension of the + * desktop file for the window's application (e.g. "org.kde.foo"). + * + * If the application's desktop file name is not at a standard location it should be + * the full path to the desktop file name (e.g. "/opt/kde/share/org.kde.foo.desktop"). + * + * If the window does not know the desktop file name, it should not set the name at all. + * + * @since 5.28 + **/ + void setDesktopFileName(const char *name); + + /** + * @returns The desktop file name of the window's application if present. + * @since 5.28 + * @see setDesktopFileName + **/ + const char *desktopFileName() const; + + /** Sentinel value to indicate that the client wishes to be visible on all desktops. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwindowsystem-5.27.0/src/platforms/xcb/netwm_p.h new/kwindowsystem-5.28.0/src/platforms/xcb/netwm_p.h --- old/kwindowsystem-5.27.0/src/platforms/xcb/netwm_p.h 2016-10-02 12:01:58.000000000 +0200 +++ new/kwindowsystem-5.28.0/src/platforms/xcb/netwm_p.h 2016-11-05 16:00:08.000000000 +0100 @@ -182,7 +182,7 @@ xcb_window_t transient_for, window_group; xcb_pixmap_t icon_pixmap, icon_mask; NET::Actions allowed_actions; - char *class_class, *class_name, *window_role, *client_machine; + char *class_class, *class_name, *window_role, *client_machine, *desktop_file; NET::Properties properties; NET::Properties2 properties2;
