Hello community,

here is the log from the commit of package kwindowsystem for openSUSE:Factory 
checked in at 2018-04-19 15:19:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kwindowsystem (Old)
 and      /work/SRC/openSUSE:Factory/.kwindowsystem.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kwindowsystem"

Thu Apr 19 15:19:08 2018 rev:56 rq:596906 version:5.45.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kwindowsystem/kwindowsystem.changes      
2018-03-20 21:48:17.619751226 +0100
+++ /work/SRC/openSUSE:Factory/.kwindowsystem.new/kwindowsystem.changes 
2018-04-19 15:19:10.324125870 +0200
@@ -1,0 +2,15 @@
+Sat Apr 14 13:19:06 CEST 2018 - [email protected]
+
+- Update to 5.45.0
+  * New feature release
+  * For more details please see:
+  * https://www.kde.org/announcements/kde-frameworks-5.45.0.php
+- Changes since 5.44.0:
+  * Add "SkipSwitcher" to API
+  * Autogenerate debug file
+  * We depend against 5.8.0
+  * Fix narrowing conversion warning on gcc and error on clang/FreeBSD
+  * [xcb] Fix implementation of _NET_WM_FULLSCREEN_MONITORS (kde#391960)
+  * Reduce plasmashell frozen time
+
+-------------------------------------------------------------------

Old:
----
  kwindowsystem-5.44.0.tar.xz

New:
----
  kwindowsystem-5.45.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kwindowsystem.spec ++++++
--- /var/tmp/diff_new_pack.6H85mN/_old  2018-04-19 15:19:10.908102490 +0200
+++ /var/tmp/diff_new_pack.6H85mN/_new  2018-04-19 15:19:10.908102490 +0200
@@ -18,13 +18,13 @@
 
 %bcond_without lang
 %define lname   libKF5WindowSystem5
-%define _tar_path 5.44
+%define _tar_path 5.45
 # 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: %global _kf5_bugfix_version %(echo %{_kf5_version} | 
awk -F. '{print $1"."$2}')}
 Name:           kwindowsystem
-Version:        5.44.0
+Version:        5.45.0
 Release:        0
 BuildRequires:  cmake >= 3.0
 BuildRequires:  extra-cmake-modules >= %{_kf5_bugfix_version}

++++++ kwindowsystem-5.44.0.tar.xz -> kwindowsystem-5.45.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/CMakeLists.txt 
new/kwindowsystem-5.45.0/CMakeLists.txt
--- old/kwindowsystem-5.44.0/CMakeLists.txt     2018-03-03 11:07:44.000000000 
+0100
+++ new/kwindowsystem-5.45.0/CMakeLists.txt     2018-04-07 21:40:06.000000000 
+0200
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.0)
 
-set(KF5_VERSION "5.44.0") # handled by release scripts
+set(KF5_VERSION "5.45.0") # handled by release scripts
 project(KWindowSystem VERSION ${KF5_VERSION})
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 5.44.0  NO_MODULE)
+find_package(ECM 5.45.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)
 
@@ -17,6 +17,7 @@
 include(ECMSetupVersion)
 include(ECMGenerateHeaders)
 include(CMakeFindFrameworks)
+include(ECMQtDeclareLoggingCategory)
 
 include(ECMAddQch)
 include(ECMPoQmTools)
@@ -30,7 +31,7 @@
                         SOVERSION 5)
 
 # Dependencies
-set(REQUIRED_QT_VERSION 5.7.0)
+set(REQUIRED_QT_VERSION 5.8.0)
 find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets)
 
 include(KDEInstallDirs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.44.0/autotests/kwindowinfox11test.cpp 
new/kwindowsystem-5.45.0/autotests/kwindowinfox11test.cpp
--- old/kwindowsystem-5.44.0/autotests/kwindowinfox11test.cpp   2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/autotests/kwindowinfox11test.cpp   2018-04-07 
21:40:06.000000000 +0200
@@ -192,14 +192,15 @@
 {
     QTest::addColumn<NET::States>("state");
 
-    QTest::newRow("max")         << NET::States(NET::Max);
-    QTest::newRow("maxHoriz")    << NET::States(NET::MaxHoriz);
-    QTest::newRow("shaded")      << NET::States(NET::Shaded);
-    QTest::newRow("skipTaskbar") << NET::States(NET::SkipTaskbar);
-    QTest::newRow("skipPager")   << NET::States(NET::SkipPager);
-    QTest::newRow("keep above")  << NET::States(NET::KeepAbove);
-    QTest::newRow("keep below")  << NET::States(NET::KeepBelow);
-    QTest::newRow("fullscreen")  << NET::States(NET::FullScreen);
+    QTest::newRow("max")          << NET::States(NET::Max);
+    QTest::newRow("maxHoriz")     << NET::States(NET::MaxHoriz);
+    QTest::newRow("shaded")       << NET::States(NET::Shaded);
+    QTest::newRow("skipTaskbar")  << NET::States(NET::SkipTaskbar);
+    QTest::newRow("skipPager")    << NET::States(NET::SkipPager);
+    QTest::newRow("skipSwitcher") << NET::States(NET::SkipSwitcher);
+    QTest::newRow("keep above")   << NET::States(NET::KeepAbove);
+    QTest::newRow("keep below")   << NET::States(NET::KeepBelow);
+    QTest::newRow("fullscreen")   << NET::States(NET::FullScreen);
 
     // NOTE: modal, sticky and hidden cannot be tested with this variant
     // demands attention is not tested as that's already part of the first run 
adjustments
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.44.0/autotests/netwininfotestclient.cpp 
new/kwindowsystem-5.45.0/autotests/netwininfotestclient.cpp
--- old/kwindowsystem-5.44.0/autotests/netwininfotestclient.cpp 2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/autotests/netwininfotestclient.cpp 2018-04-07 
21:40:06.000000000 +0200
@@ -70,7 +70,6 @@
     void testStrut();
     void testExtendedStrut();
     void testIconGeometry();
-    void testFullscreenMonitors();
     void testWindowType_data();
     void testWindowType();
 
@@ -574,49 +573,6 @@
     QCOMPARE(geo.size.height, newGeo.size.height);
 }
 
-void NetWinInfoTestClient::testFullscreenMonitors()
-{
-    QVERIFY(connection());
-    ATOM(_NET_WM_FULLSCREEN_MONITORS)
-    INFO
-
-    NETFullscreenMonitors topology = info.fullscreenMonitors();
-    QCOMPARE(topology.bottom, 0);
-    QCOMPARE(topology.left, 0);
-    QCOMPARE(topology.right, 0);
-    QCOMPARE(topology.top, -1);
-
-    NETFullscreenMonitors newTopology;
-    newTopology.bottom = 10;
-    newTopology.left   = 20;
-    newTopology.right  = 30;
-    newTopology.top    = 40;
-    info.setFullscreenMonitors(newTopology);
-    topology = info.fullscreenMonitors();
-    QCOMPARE(topology.bottom, newTopology.bottom);
-    QCOMPARE(topology.left,   newTopology.left);
-    QCOMPARE(topology.right,  newTopology.right);
-    QCOMPARE(topology.top,    newTopology.top);
-
-    // compare with the X property
-    QVERIFY(atom != XCB_ATOM_NONE);
-    GETPROP(XCB_ATOM_CARDINAL, 4, 32)
-    uint32_t *data = reinterpret_cast<uint32_t 
*>(xcb_get_property_value(reply.data()));
-    QCOMPARE(data[0], uint32_t(newTopology.top));
-    QCOMPARE(data[1], uint32_t(newTopology.bottom));
-    QCOMPARE(data[2], uint32_t(newTopology.left));
-    QCOMPARE(data[3], uint32_t(newTopology.right));
-
-    // and wait for our event
-    QEXPECT_FAIL("", "FullscreenMonitors not handled in events", Continue);
-    waitForPropertyChange(&info, atom, NET::Property(0), 
NET::WM2FullscreenMonitors);
-    topology = info.fullscreenMonitors();
-    QCOMPARE(topology.bottom, newTopology.bottom);
-    QCOMPARE(topology.left,   newTopology.left);
-    QCOMPARE(topology.right,  newTopology.right);
-    QCOMPARE(topology.top,    newTopology.top);
-}
-
 Q_DECLARE_METATYPE(NET::WindowType)
 void NetWinInfoTestClient::testWindowType_data()
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/autotests/netwininfotestwm.cpp 
new/kwindowsystem-5.45.0/autotests/netwininfotestwm.cpp
--- old/kwindowsystem-5.44.0/autotests/netwininfotestwm.cpp     2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/autotests/netwininfotestwm.cpp     2018-04-07 
21:40:06.000000000 +0200
@@ -75,6 +75,7 @@
     void testFrameExtents();
     void testFrameExtentsKDE();
     void testFrameOverlap();
+    void testFullscreenMonitors();
 
 private:
     bool hasAtomFlag(const xcb_atom_t *atoms, int atomsLenght, const 
QByteArray &actionName);
@@ -89,6 +90,7 @@
     QScopedPointer<QProcess> m_xvfb;
     xcb_window_t m_rootWindow;
     xcb_window_t m_testWindow;
+    QByteArray m_displayNumber;
 };
 
 void NetWinInfoTestWM::initTestCase()
@@ -130,6 +132,7 @@
 
     displayNumber.prepend(QByteArray(":"));
     displayNumber.remove(displayNumber.size() -1, 1);
+    m_displayNumber = displayNumber;
 
     // create X connection
     int screen = 0;
@@ -426,6 +429,7 @@
     const QByteArray maxHoriz         = 
QByteArrayLiteral("_NET_WM_STATE_MAXIMIZED_HORZ");
     const QByteArray shaded           = 
QByteArrayLiteral("_NET_WM_STATE_SHADED");
     const QByteArray skipTaskbar      = 
QByteArrayLiteral("_NET_WM_STATE_SKIP_TASKBAR");
+    const QByteArray skipSwitcher     = 
QByteArrayLiteral("_KDE_NET_WM_STATE_SKIP_SWITCHER");
     const QByteArray keepAbove        = 
QByteArrayLiteral("_NET_WM_STATE_ABOVE");
     const QByteArray staysOnTop       = 
QByteArrayLiteral("_NET_WM_STATE_STAYS_ON_TOP");
     const QByteArray skipPager        = 
QByteArrayLiteral("_NET_WM_STATE_SKIP_PAGER");
@@ -447,6 +451,7 @@
     QTest::newRow("fullScreen")       << NET::States(NET::FullScreen)       << 
(QVector<QByteArray>() << fullScreen);
     QTest::newRow("keepBelow")        << NET::States(NET::KeepBelow)        << 
(QVector<QByteArray>() << keepBelow);
     QTest::newRow("demandsAttention") << NET::States(NET::DemandsAttention) << 
(QVector<QByteArray>() << demandsAttention);
+    QTest::newRow("skipSwitcher")     << NET::States(NET::SkipSwitcher)     << 
(QVector<QByteArray>() << skipSwitcher);
 
     // TODO: it's possible to be keep above and below at the same time?!?
     QTest::newRow("all") << NET::States(NET::Modal |
@@ -459,11 +464,12 @@
                                    NET::KeepBelow |
                                    NET::Hidden |
                                    NET::FullScreen |
-                                   NET::DemandsAttention)
+                                   NET::DemandsAttention |
+                                   NET::SkipSwitcher)
                          << (QVector<QByteArray>() << modal << sticky << 
maxVert << maxHoriz
                              << shaded << skipTaskbar << keepAbove
                              << skipPager << hidden << fullScreen
-                             << keepBelow << demandsAttention << staysOnTop);
+                             << keepBelow << demandsAttention << staysOnTop << 
skipSwitcher);
 }
 
 void NetWinInfoTestWM::testState()
@@ -564,6 +570,88 @@
     QCOMPARE(info.visibleName(), "bar");
 }
 
+class MockWinInfo : public NETWinInfo
+{
+public:
+    MockWinInfo(xcb_connection_t *connection, xcb_window_t window, 
xcb_window_t rootWindow)
+        : NETWinInfo(connection, window, rootWindow, NET::WMAllProperties, 
NET::WM2AllProperties, NET::WindowManager)
+    {
+    }
+
+protected:
+    void changeFullscreenMonitors(NETFullscreenMonitors topology) override
+    {
+        setFullscreenMonitors(topology);
+    }
+};
+
+void NetWinInfoTestWM::testFullscreenMonitors()
+{
+    // test case for BUG 391960
+    QVERIFY(connection());
+    const uint32_t maskValues[] = {
+                     XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
+                     XCB_EVENT_MASK_KEY_PRESS |
+                     XCB_EVENT_MASK_PROPERTY_CHANGE |
+                     XCB_EVENT_MASK_COLOR_MAP_CHANGE |
+                     XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
+                     XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
+                     XCB_EVENT_MASK_FOCUS_CHANGE | // For NotifyDetailNone
+                     XCB_EVENT_MASK_EXPOSURE
+    };
+    QScopedPointer<xcb_generic_error_t, QScopedPointerPodDeleter> 
redirectCheck(xcb_request_check(connection(),
+                                                                        
xcb_change_window_attributes_checked(connection(),
+                                                                               
                                 m_rootWindow,
+                                                                               
                                 XCB_CW_EVENT_MASK,
+                                                                               
                                 maskValues)));
+    QVERIFY(redirectCheck.isNull());
+
+    KXUtils::Atom atom(connection(), 
QByteArrayLiteral("_NET_WM_FULLSCREEN_MONITORS"));
+
+    // create client connection
+    auto clientConnection = xcb_connect(m_displayNumber.constData(), nullptr);
+    QVERIFY(clientConnection);
+    QVERIFY(!xcb_connection_has_error(clientConnection));
+
+    NETWinInfo clientInfo(clientConnection, m_testWindow, m_rootWindow, 
NET::WMAllProperties, NET::WM2AllProperties);
+    NETFullscreenMonitors topology;
+    topology.top = 1;
+    topology.bottom = 2;
+    topology.left = 3;
+    topology.right = 4;
+    clientInfo.setFullscreenMonitors(topology);
+    xcb_flush(clientConnection);
+
+    MockWinInfo info(connection(), m_testWindow, m_rootWindow);
+
+    while (true) {
+        KXUtils::ScopedCPointer<xcb_generic_event_t> 
event(xcb_wait_for_event(connection()));
+        if (event.isNull()) {
+            break;
+        }
+        if ((event->response_type & ~0x80) != XCB_CLIENT_MESSAGE) {
+            continue;
+        }
+
+        NET::Properties dirtyProtocols;
+        NET::Properties2 dirtyProtocols2;
+        QCOMPARE(info.fullscreenMonitors().isSet(), false);
+        info.event(event.data(), &dirtyProtocols, &dirtyProtocols2);
+        QCOMPARE(info.fullscreenMonitors().isSet(), true);
+        break;
+    }
+    xcb_flush(connection());
+    // now the property should be updated
+    waitForPropertyChange(&info, atom, NET::Property(0), 
NET::WM2FullscreenMonitors);
+
+    QCOMPARE(info.fullscreenMonitors().top, 1);
+    QCOMPARE(info.fullscreenMonitors().bottom, 2);
+    QCOMPARE(info.fullscreenMonitors().left, 3);
+    QCOMPARE(info.fullscreenMonitors().right, 4);
+
+    xcb_disconnect(clientConnection);
+}
+
 QTEST_GUILESS_MAIN(NetWinInfoTestWM)
 
 #include "netwininfotestwm.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/po/zh_CN/kwindowsystem5_qt.po 
new/kwindowsystem-5.45.0/po/zh_CN/kwindowsystem5_qt.po
--- old/kwindowsystem-5.44.0/po/zh_CN/kwindowsystem5_qt.po      2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/po/zh_CN/kwindowsystem5_qt.po      2018-04-07 
21:40:06.000000000 +0200
@@ -13,7 +13,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: kdeorg\n"
-"PO-Revision-Date: 2018-02-28 02:23-0500\n"
+"PO-Revision-Date: 2018-04-05 09:22-0400\n"
 "Last-Translator: guoyunhebrave <[email protected]>\n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/CMakeLists.txt 
new/kwindowsystem-5.45.0/src/CMakeLists.txt
--- old/kwindowsystem-5.44.0/src/CMakeLists.txt 2018-03-03 11:07:44.000000000 
+0100
+++ new/kwindowsystem-5.45.0/src/CMakeLists.txt 2018-04-07 21:40:06.000000000 
+0200
@@ -15,9 +15,10 @@
     platforms/wayland/kwindowsystem.cpp
     pluginwrapper.cpp
     kwindowsystemplugininterface.cpp
-    debug_p.cpp
     ${kwindowsystem_QM_LOADER}
     )
+ecm_qt_declare_logging_category(kwindowsystem_SRCS HEADER 
kwindowsystem_debug.h IDENTIFIER LOG_KWINDOWSYSTEM CATEGORY_NAME 
org.kde.kwindowsystem DEFAULT_SEVERITY Warning)
+ecm_qt_declare_logging_category(kwindowsystem_SRCS HEADER 
kwindowsystem_xcb_debug.h IDENTIFIER LOG_KKEYSERVER_X11 CATEGORY_NAME 
org.kde.kwindowsystem.keyserver.x11 DEFAULT_SEVERITY Warning)
 
 if (KWINDOWSYSTEM_HAVE_X11)
   set(kwindowsystem_SRCS ${kwindowsystem_SRCS}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/debug_p.cpp 
new/kwindowsystem-5.45.0/src/debug_p.cpp
--- old/kwindowsystem-5.44.0/src/debug_p.cpp    2018-03-03 11:07:44.000000000 
+0100
+++ new/kwindowsystem-5.45.0/src/debug_p.cpp    1970-01-01 01:00:00.000000000 
+0100
@@ -1,22 +0,0 @@
-/*
- *   Copyright 2015 Christoph Cullmann <[email protected]>
- *
- *   This library is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU Lesser General Public
- *   License as published by the Free Software Foundation; either
- *   version 2.1 of the License, or (at your option) any later version.
- *
- *   This library is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *   Lesser General Public License for more details.
- *
- *   You should have received a copy of the GNU Lesser General Public
- *   License along with this library.  If not, see 
<http://www.gnu.org/licenses/>.
- */
-
-#include "debug_p.h"
-
-// logging category for this framework, default: log stuff >= warning
-Q_LOGGING_CATEGORY(LOG_KWINDOWSYSTEM, "org.kde.kwindowsystem", QtWarningMsg)
-Q_LOGGING_CATEGORY(LOG_KKEYSERVER_X11, "org.kde.kwindowsystem.keyserver.x11", 
QtWarningMsg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/debug_p.h 
new/kwindowsystem-5.45.0/src/debug_p.h
--- old/kwindowsystem-5.44.0/src/debug_p.h      2018-03-03 11:07:44.000000000 
+0100
+++ new/kwindowsystem-5.45.0/src/debug_p.h      1970-01-01 01:00:00.000000000 
+0100
@@ -1,26 +0,0 @@
-/*
- *   Copyright 2015 Christoph Cullmann <[email protected]>
- *
- *   This library is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU Lesser General Public
- *   License as published by the Free Software Foundation; either
- *   version 2.1 of the License, or (at your option) any later version.
- *
- *   This library is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *   Lesser General Public License for more details.
- *
- *   You should have received a copy of the GNU Lesser General Public
- *   License along with this library.  If not, see 
<http://www.gnu.org/licenses/>.
- */
-
-#ifndef KWINDOWSYSTEM_DEBUG_P_H
-#define KWINDOWSYSTEM_DEBUG_P_H
-
-#include <QLoggingCategory>
-
-Q_DECLARE_LOGGING_CATEGORY(LOG_KWINDOWSYSTEM)
-Q_DECLARE_LOGGING_CATEGORY(LOG_KKEYSERVER_X11)
-
-#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/kstartupinfo.cpp 
new/kwindowsystem-5.45.0/src/kstartupinfo.cpp
--- old/kwindowsystem-5.44.0/src/kstartupinfo.cpp       2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/kstartupinfo.cpp       2018-04-07 
21:40:06.000000000 +0200
@@ -36,7 +36,7 @@
 
 #include "kstartupinfo.h"
 #include "netwm_def.h"
-#include "debug_p.h"
+#include "kwindowsystem_debug.h"
 
 #include <QWidget>
 #include <QDateTime>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/kwindowsystem.h 
new/kwindowsystem-5.45.0/src/kwindowsystem.h
--- old/kwindowsystem-5.44.0/src/kwindowsystem.h        2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/kwindowsystem.h        2018-04-07 
21:40:06.000000000 +0200
@@ -345,7 +345,8 @@
      * Possible values are or'ed combinations of NET::Modal,
      * NET::Sticky, NET::MaxVert, NET::MaxHoriz, NET::Shaded,
      * NET::SkipTaskbar, NET::SkipPager, NET::Hidden,
-     * NET::FullScreen, NET::KeepAbove, NET::KeepBelow, NET::StaysOnTop
+     * NET::FullScreen, NET::KeepAbove, NET::KeepBelow, NET::StaysOnTop,
+     * NET::SkipSwitcher
      *
      * @param win the id of the window
      * @param state the new flags that will be set
@@ -358,7 +359,8 @@
      * Possible values are or'ed combinations of NET::Modal,
      * NET::Sticky, NET::MaxVert, NET::MaxHoriz, NET::Shaded,
      * NET::SkipTaskbar, NET::SkipPager, NET::Hidden,
-     * NET::FullScreen, NET::KeepAbove, NET::KeepBelow, NET::StaysOnTop
+     * NET::FullScreen, NET::KeepAbove, NET::KeepBelow, NET::StaysOnTop,
+     * NET::SkipSwitcher
      *
      * @param win the id of the window
      * @param state the flags that will be cleared
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/netwm_def.h 
new/kwindowsystem-5.45.0/src/netwm_def.h
--- old/kwindowsystem-5.44.0/src/netwm_def.h    2018-03-03 11:07:44.000000000 
+0100
+++ new/kwindowsystem-5.45.0/src/netwm_def.h    2018-04-07 21:40:06.000000000 
+0200
@@ -418,10 +418,10 @@
 
        To set the state of a window, you'll typically do something like:
        \code
-         KWindowSystem::setState( winId(), NET::SkipTaskbar | NET::SkipPager );
+         KWindowSystem::setState( winId(), NET::SkipTaskbar | NET::SkipPager | 
NET::SkipSwitcher );
        \endcode
 
-       for example to not show the window on the taskbar and desktop pager.
+       for example to not show the window on the taskbar, desktop pager, or 
window switcher.
        winId() is a function of QWidget()
 
        Note that KeepAbove (StaysOnTop) and KeepBelow are meant as user 
preference and
@@ -493,7 +493,13 @@
            this. E.g. taskbar should mark such window specially to bring 
user's attention to
            this window. Only the window manager is allowed to change it.
         **/
-        DemandsAttention = 1u << 11
+        DemandsAttention = 1u << 11,
+        /**
+           indicates that a window should not be included on a switcher.
+
+           @since 5.45
+        **/
+        SkipSwitcher = 1u << 12
     };
     Q_DECLARE_FLAGS(States, State)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.44.0/src/platforms/xcb/CMakeLists.txt 
new/kwindowsystem-5.45.0/src/platforms/xcb/CMakeLists.txt
--- old/kwindowsystem-5.44.0/src/platforms/xcb/CMakeLists.txt   2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/platforms/xcb/CMakeLists.txt   2018-04-07 
21:40:06.000000000 +0200
@@ -6,6 +6,7 @@
     kxutils.cpp
     plugin.cpp
 )
+ecm_qt_declare_logging_category(xcb_plugin_SRCS HEADER 
kwindowsystem_xcb_debug.h IDENTIFIER LOG_KKEYSERVER_X11 CATEGORY_NAME 
org.kde.kwindowsystem.keyserver.x11 DEFAULT_SEVERITY Warning)
 
 add_library(KF5WindowSystemX11Plugin MODULE ${xcb_plugin_SRCS})
 target_link_libraries(KF5WindowSystemX11Plugin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/platforms/xcb/atoms_p.h 
new/kwindowsystem-5.45.0/src/platforms/xcb/atoms_p.h
--- old/kwindowsystem-5.44.0/src/platforms/xcb/atoms_p.h        2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/platforms/xcb/atoms_p.h        2018-04-07 
21:40:06.000000000 +0200
@@ -133,6 +133,8 @@
     ENUM(_NET_WM_STATE_ABOVE),
     ENUM(_NET_WM_STATE_BELOW),
     ENUM(_NET_WM_STATE_DEMANDS_ATTENTION),
+    // KDE-specific atom
+    ENUM(_KDE_NET_WM_STATE_SKIP_SWITCHER),
 
     // allowed actions
     ENUM(_NET_WM_ACTION_MOVE),
@@ -173,4 +175,4 @@
     ENUM_COUNT(KwsAtom)
 ENUM_END(KwsAtom)
 
-#endif // ATOMS_H
\ No newline at end of file
+#endif // ATOMS_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.44.0/src/platforms/xcb/kkeyserver.cpp 
new/kwindowsystem-5.45.0/src/platforms/xcb/kkeyserver.cpp
--- old/kwindowsystem-5.44.0/src/platforms/xcb/kkeyserver.cpp   2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/platforms/xcb/kkeyserver.cpp   2018-04-07 
21:40:06.000000000 +0200
@@ -21,7 +21,7 @@
 #include "kkeyserver_x11.h"
 #include "kkeyserver.h"
 
-#include "../../debug_p.h"
+#include "platforms/xcb/kwindowsystem_xcb_debug.h"
 #include <QDebug>
 
 #include <QX11Info>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-5.44.0/src/platforms/xcb/kxmessages.cpp 
new/kwindowsystem-5.45.0/src/platforms/xcb/kxmessages.cpp
--- old/kwindowsystem-5.44.0/src/platforms/xcb/kxmessages.cpp   2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/platforms/xcb/kxmessages.cpp   2018-04-07 
21:40:06.000000000 +0200
@@ -138,7 +138,8 @@
     bool nativeEventFilter(const QByteArray &eventType, void *message, long 
*result) Q_DECL_OVERRIDE
     {
         Q_UNUSED(result);
-        if (eventType != "xcb_generic_event_t") {
+       // A faster comparison than eventType != "xcb_generic_event_t"
+        if (eventType[0] != 'x') {
             return false;
         }
         xcb_generic_event_t *event = reinterpret_cast<xcb_generic_event_t 
*>(message);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/platforms/xcb/kxutils.cpp 
new/kwindowsystem-5.45.0/src/platforms/xcb/kxutils.cpp
--- old/kwindowsystem-5.44.0/src/platforms/xcb/kxutils.cpp      2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/platforms/xcb/kxutils.cpp      2018-04-07 
21:40:06.000000000 +0200
@@ -66,9 +66,7 @@
             pixels[i] = qRgba(r, g, b, 0xff);
         }
         // fall through, Qt format is still Format_ARGB32_Premultiplied
-#if QT_VERSION >= QT_VERSION_CHECK(5,8,0)
         Q_FALLTHROUGH();
-#endif
     }
     case 32:
         format = QImage::Format_ARGB32_Premultiplied;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/platforms/xcb/netwm.cpp 
new/kwindowsystem-5.45.0/src/platforms/xcb/netwm.cpp
--- old/kwindowsystem-5.44.0/src/platforms/xcb/netwm.cpp        2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/platforms/xcb/netwm.cpp        2018-04-07 
21:40:06.000000000 +0200
@@ -1003,6 +1003,9 @@
         if (p->states & SkipPager) {
             atoms[pnum++] = p->atom(_NET_WM_STATE_SKIP_PAGER);
         }
+        if (p->states & SkipSwitcher) {
+            atoms[pnum++] = p->atom(_KDE_NET_WM_STATE_SKIP_SWITCHER);
+        }
         if (p->states & Hidden) {
             atoms[pnum++] = p->atom(_NET_WM_STATE_HIDDEN);
         }
@@ -1316,6 +1319,8 @@
         p->states |= SkipTaskbar;
     } else if (atom == p->atom(_NET_WM_STATE_SKIP_PAGER)) {
         p->states |= SkipPager;
+    } else if (atom == p->atom(_KDE_NET_WM_STATE_SKIP_SWITCHER)) {
+        p->states |= SkipSwitcher;
     } else if (atom == p->atom(_NET_WM_STATE_HIDDEN)) {
         p->states |= Hidden;
     } else if (atom == p->atom(_NET_WM_STATE_FULLSCREEN)) {
@@ -2841,20 +2846,24 @@
 
 void NETWinInfo::setFullscreenMonitors(NETFullscreenMonitors topology)
 {
-    if (p->role != Client) {
-        return;
-    }
+    if (p->role == Client) {
+        const uint32_t data[5] = {
+            uint32_t(topology.top), uint32_t(topology.bottom), 
uint32_t(topology.left), uint32_t(topology.right), 1
+        };
 
-    p->fullscreen_monitors = topology;
+        send_client_message(p->conn, netwm_sendevent_mask, p->root, p->window, 
p->atom(_NET_WM_FULLSCREEN_MONITORS), data);
+    } else {
+        p->fullscreen_monitors = topology;
 
-    uint32_t data[4];
-    data[0] = topology.top;
-    data[1] = topology.bottom;
-    data[2] = topology.left;
-    data[3] = topology.right;
+        uint32_t data[4];
+        data[0] = topology.top;
+        data[1] = topology.bottom;
+        data[2] = topology.left;
+        data[3] = topology.right;
 
-    xcb_change_property(p->conn, XCB_PROP_MODE_REPLACE, p->window, 
p->atom(_NET_WM_FULLSCREEN_MONITORS),
-                        XCB_ATOM_CARDINAL, 32, 4, (const void *) data);
+        xcb_change_property(p->conn, XCB_PROP_MODE_REPLACE, p->window, 
p->atom(_NET_WM_FULLSCREEN_MONITORS),
+                            XCB_ATOM_CARDINAL, 32, 4, (const void *) data);
+    }
 }
 
 void NETWinInfo::setState(NET::States state, NET::States mask)
@@ -2969,6 +2978,14 @@
             xcb_send_event(p->conn, false, p->root, netwm_sendevent_mask, 
(const char *) &event);
         }
 
+        if ((mask & SkipSwitcher) && ((p->state & SkipSwitcher) != (state & 
SkipSwitcher))) {
+            event.data.data32[0] = (state & SkipSwitcher) ? 1 : 0;
+            event.data.data32[1] = p->atom(_KDE_NET_WM_STATE_SKIP_SWITCHER);
+            event.data.data32[2] = 0l;
+
+            xcb_send_event(p->conn, false, p->root, netwm_sendevent_mask, 
(const char *) &event);
+        }
+
         if ((mask & Hidden) && ((p->state & Hidden) != (state & Hidden))) {
             event.data.data32[0] = (state & Hidden) ? 1 : 0;
             event.data.data32[1] = p->atom(_NET_WM_STATE_HIDDEN);
@@ -3066,6 +3083,9 @@
         if (p->state & SkipPager) {
             data[count++] = p->atom(_NET_WM_STATE_SKIP_PAGER);
         }
+        if (p->state & SkipSwitcher) {
+            data[count++] = p->atom(_KDE_NET_WM_STATE_SKIP_SWITCHER);
+        }
 
 #ifdef NETWMDEBUG
         fprintf(stderr, "NETWinInfo::setState: setting state property (%d)\n", 
count);
@@ -3629,6 +3649,8 @@
                     mask |= SkipTaskbar;
                 } else if ((xcb_atom_t) message->data.data32[i] == 
p->atom(_NET_WM_STATE_SKIP_PAGER)) {
                     mask |= SkipPager;
+                } else if ((xcb_atom_t) message->data.data32[i] == 
p->atom(_KDE_NET_WM_STATE_SKIP_SWITCHER)) {
+                    mask |= SkipSwitcher;
                 } else if ((xcb_atom_t) message->data.data32[i] == 
p->atom(_NET_WM_STATE_HIDDEN)) {
                     mask |= Hidden;
                 } else if ((xcb_atom_t) message->data.data32[i] == 
p->atom(_NET_WM_STATE_FULLSCREEN)) {
@@ -3775,6 +3797,8 @@
             dirty2 |= WM2OpaqueRegion;
         } else if (pe->atom == p->atom(_KDE_NET_WM_DESKTOP_FILE)) {
             dirty2 = WM2DesktopFileName;
+        } else if (pe->atom == p->atom(_NET_WM_FULLSCREEN_MONITORS)) {
+            dirty2 = WM2FullscreenMonitors;
         }
 
         do_update = true;
@@ -4036,6 +4060,10 @@
                 p->state |= SkipPager;
             }
 
+            else if (state == p->atom(_KDE_NET_WM_STATE_SKIP_SWITCHER)) {
+                p->state |= SkipSwitcher;
+            }
+
             else if (state == p->atom(_NET_WM_STATE_HIDDEN)) {
                 p->state |= Hidden;
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-5.44.0/src/pluginwrapper.cpp 
new/kwindowsystem-5.45.0/src/pluginwrapper.cpp
--- old/kwindowsystem-5.44.0/src/pluginwrapper.cpp      2018-03-03 
11:07:44.000000000 +0100
+++ new/kwindowsystem-5.45.0/src/pluginwrapper.cpp      2018-04-07 
21:40:06.000000000 +0200
@@ -22,7 +22,7 @@
 #include "kwindowsystemplugininterface_p.h"
 #include "kwindoweffects_dummy_p.h"
 #include "kwindowsystem_dummy_p.h"
-#include "debug_p.h"
+#include "kwindowsystem_debug.h"
 
 #include <QDebug>
 #include <QDir>


Reply via email to