Hello community,

here is the log from the commit of package kwayland for openSUSE:Factory 
checked in at 2017-07-05 23:53:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kwayland (Old)
 and      /work/SRC/openSUSE:Factory/.kwayland.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kwayland"

Wed Jul  5 23:53:21 2017 rev:37 rq:502974 version:5.35.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kwayland/kwayland.changes        2017-06-01 
16:21:42.580396914 +0200
+++ /work/SRC/openSUSE:Factory/.kwayland.new/kwayland.changes   2017-07-05 
23:53:24.378763128 +0200
@@ -1,0 +2,19 @@
+Sun Jun 11 09:27:43 CEST 2017 - lbeltr...@kde.org
+
+- Update to 5.35.0
+  * New feature release
+  * For more details please see:
+  * https://www.kde.org/announcements/kde-frameworks-5.35.0.php
+- Changes since 5.34.0:
+  * Autotests: solve warning for QProcess::ProcessState metatype registration
+  * Fix for TestQtSurfaceExtension in path with spaces
+  * API dox: add some minimal docs to more class to have them covered by 
doxygen
+  * API dox: add some minimal docs to class to have them covered by doxygen
+  * API dox: Use doxygen notation to have comments used
+  * API dox: fix @link usage
+  * add requestToggleKeepAbove/below
+  * Keep QIcon::fromTheme in main thread
+  * Remove pid changedSignal in Client::PlasmaWindow
+  * add pid to plasma window management protocol
+
+-------------------------------------------------------------------

Old:
----
  kwayland-5.34.0.tar.xz

New:
----
  kwayland-5.35.0.tar.xz

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

Other differences:
------------------
++++++ kwayland.spec ++++++
--- /var/tmp/diff_new_pack.CjMB8y/_old  2017-07-05 23:53:27.734290475 +0200
+++ /var/tmp/diff_new_pack.CjMB8y/_new  2017-07-05 23:53:27.738289911 +0200
@@ -16,9 +16,9 @@
 #
 
 
-%define _tar_path 5.34
+%define _tar_path 5.35
 Name:           kwayland
-Version:        5.34.0
+Version:        5.35.0
 Release:        0
 Summary:        KDE Wayland library
 License:        LGPL-2.1+

++++++ kwayland-5.34.0.tar.xz -> kwayland-5.35.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/CMakeLists.txt 
new/kwayland-5.35.0/CMakeLists.txt
--- old/kwayland-5.34.0/CMakeLists.txt  2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/CMakeLists.txt  2017-06-03 11:16:30.000000000 +0200
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.0)
 
-set(KF5_VERSION "5.34.0") # handled by release scripts
+set(KF5_VERSION "5.35.0") # handled by release scripts
 project(KWayland VERSION ${KF5_VERSION})
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 5.34.0  NO_MODULE)
+find_package(ECM 5.35.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})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/autotests/client/test_plasma_window_model.cpp 
new/kwayland-5.35.0/autotests/client/test_plasma_window_model.cpp
--- old/kwayland-5.34.0/autotests/client/test_plasma_window_model.cpp   
2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/autotests/client/test_plasma_window_model.cpp   
2017-06-03 11:16:30.000000000 +0200
@@ -79,6 +79,7 @@
     void testGeometry();
     void testTitle();
     void testAppId();
+    void testPid();
     void testVirtualDesktop();
     // TODO icon: can we ensure a theme is installed on CI?
     void testRequests();
@@ -220,6 +221,7 @@
     QTest::newRow("decoration") << int(Qt::DecorationRole) << 
QByteArrayLiteral("DecorationRole");
 
     QTest::newRow("AppId")                << int(PlasmaWindowModel::AppId) << 
QByteArrayLiteral("AppId");
+    QTest::newRow("Pid")                  << int(PlasmaWindowModel::Pid) << 
QByteArrayLiteral("Pid");
     QTest::newRow("IsActive")             << int(PlasmaWindowModel::IsActive) 
<< QByteArrayLiteral("IsActive");
     QTest::newRow("IsFullscreenable")     << 
int(PlasmaWindowModel::IsFullscreenable) << 
QByteArrayLiteral("IsFullscreenable");
     QTest::newRow("IsFullscreen")         << 
int(PlasmaWindowModel::IsFullscreen) << QByteArrayLiteral("IsFullscreen");
@@ -332,6 +334,7 @@
     QTest::newRow("IsVirtualDesktopChangeable") << 
int(PlasmaWindowModel::IsVirtualDesktopChangeable) << QVariant(false);
     QTest::newRow("IsCloseable")          << 
int(PlasmaWindowModel::IsCloseable) << QVariant(false);
     QTest::newRow("Geometry")             << int(PlasmaWindowModel::Geometry) 
<< QVariant(QRect());
+    QTest::newRow("Pid")                  << int(PlasmaWindowModel::Pid) << 
QVariant(0);
 }
 
 void PlasmaWindowModelTest::testDefaultData()
@@ -521,6 +524,24 @@
     QCOMPARE(model->data(index, PlasmaWindowModel::AppId).toString(), 
QStringLiteral("org.kde.testapp"));
 }
 
+void PlasmaWindowModelTest::testPid()
+{
+    auto model = m_pw->createWindowModel();
+    QVERIFY(model);
+    QSignalSpy rowInsertedSpy(model, &PlasmaWindowModel::rowsInserted);
+    QVERIFY(rowInsertedSpy.isValid());
+    auto w = m_pwInterface->createWindow(m_pwInterface);
+    w->setPid(1337);
+    QVERIFY(w);
+    m_connection->flush();
+    m_display->dispatchEvents();
+    QVERIFY(rowInsertedSpy.wait());
+
+    //pid should be set as soon as the new row appears
+    const QModelIndex index = model->index(0);
+    QCOMPARE(model->data(index, PlasmaWindowModel::Pid).toInt(), 1337);
+}
+
 void PlasmaWindowModelTest::testVirtualDesktop()
 {
     auto model = m_pw->createWindowModel();
@@ -571,6 +592,10 @@
     QVERIFY(resizeRequestedSpy.isValid());
     QSignalSpy virtualDesktopRequestedSpy(w, 
&PlasmaWindowInterface::virtualDesktopRequested);
     QVERIFY(virtualDesktopRequestedSpy.isValid());
+    QSignalSpy keepAboveRequestedSpy(w, 
&PlasmaWindowInterface::keepAboveRequested);
+    QVERIFY(keepAboveRequestedSpy.isValid());
+    QSignalSpy keepBelowRequestedSpy(w, 
&PlasmaWindowInterface::keepBelowRequested);
+    QVERIFY(keepBelowRequestedSpy.isValid());
     QSignalSpy minimizedRequestedSpy(w, 
&PlasmaWindowInterface::minimizedRequested);
     QVERIFY(minimizedRequestedSpy.isValid());
     QSignalSpy maximizeRequestedSpy(w, 
&PlasmaWindowInterface::maximizedRequested);
@@ -582,6 +607,8 @@
     model->requestActivate(-1);
     model->requestClose(-1);
     model->requestVirtualDesktop(-1, 1);
+    model->requestToggleKeepAbove(-1);
+    model->requestToggleKeepBelow(-1);
     model->requestToggleMinimized(-1);
     model->requestToggleMaximized(-1);
     model->requestActivate(1);
@@ -589,6 +616,8 @@
     model->requestMove(1);
     model->requestResize(1);
     model->requestVirtualDesktop(1, 1);
+    model->requestToggleKeepAbove(1);
+    model->requestToggleKeepBelow(1);
     model->requestToggleMinimized(1);
     model->requestToggleMaximized(1);
     model->requestToggleShaded(1);
@@ -661,6 +690,30 @@
     QCOMPARE(minimizedRequestedSpy.count(), 0);
     QCOMPARE(maximizeRequestedSpy.count(), 0);
     QCOMPARE(shadeRequestedSpy.count(), 0);
+    // keep above
+    model->requestToggleKeepAbove(0);
+    QVERIFY(keepAboveRequestedSpy.wait());
+    QCOMPARE(keepAboveRequestedSpy.count(), 1);
+    QCOMPARE(keepAboveRequestedSpy.first().first().toBool(), true);
+    QCOMPARE(activateRequestedSpy.count(), 1);
+    QCOMPARE(closeRequestedSpy.count(), 1);
+    QCOMPARE(moveRequestedSpy.count(), 1);
+    QCOMPARE(resizeRequestedSpy.count(), 1);
+    QCOMPARE(virtualDesktopRequestedSpy.count(), 1);
+    QCOMPARE(maximizeRequestedSpy.count(), 0);
+    QCOMPARE(shadeRequestedSpy.count(), 0);
+    // keep Below
+    model->requestToggleKeepBelow(0);
+    QVERIFY(keepBelowRequestedSpy.wait());
+    QCOMPARE(keepBelowRequestedSpy.count(), 1);
+    QCOMPARE(keepBelowRequestedSpy.first().first().toBool(), true);
+    QCOMPARE(activateRequestedSpy.count(), 1);
+    QCOMPARE(closeRequestedSpy.count(), 1);
+    QCOMPARE(moveRequestedSpy.count(), 1);
+    QCOMPARE(resizeRequestedSpy.count(), 1);
+    QCOMPARE(virtualDesktopRequestedSpy.count(), 1);
+    QCOMPARE(maximizeRequestedSpy.count(), 0);
+    QCOMPARE(shadeRequestedSpy.count(), 0);
     // minimize
     model->requestToggleMinimized(0);
     QVERIFY(minimizedRequestedSpy.wait());
@@ -700,6 +753,20 @@
     // the toggles can also support a different state
     QSignalSpy dataChangedSpy(model, &PlasmaWindowModel::dataChanged);
     QVERIFY(dataChangedSpy.isValid());
+    // keepAbove
+    w->setKeepAbove(true);
+    QVERIFY(dataChangedSpy.wait());
+    model->requestToggleKeepAbove(0);
+    QVERIFY(keepAboveRequestedSpy.wait());
+    QCOMPARE(keepAboveRequestedSpy.count(), 2);
+    QCOMPARE(keepAboveRequestedSpy.last().first().toBool(), false);
+    // keepBelow
+    w->setKeepBelow(true);
+    QVERIFY(dataChangedSpy.wait());
+    model->requestToggleKeepBelow(0);
+    QVERIFY(keepBelowRequestedSpy.wait());
+    QCOMPARE(keepBelowRequestedSpy.count(), 2);
+    QCOMPARE(keepBelowRequestedSpy.last().first().toBool(), false);
     // minimize
     w->setMinimized(true);
     QVERIFY(dataChangedSpy.wait());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/autotests/client/test_wayland_windowmanagement.cpp 
new/kwayland-5.35.0/autotests/client/test_wayland_windowmanagement.cpp
--- old/kwayland-5.34.0/autotests/client/test_wayland_windowmanagement.cpp      
2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/autotests/client/test_wayland_windowmanagement.cpp      
2017-06-03 11:16:30.000000000 +0200
@@ -61,12 +61,15 @@
     void testRequests();
     void testRequestsBoolean_data();
     void testRequestsBoolean();
+    void testKeepAbove();
+    void testKeepBelow();
     void testShowingDesktop();
     void testRequestShowingDesktop_data();
     void testRequestShowingDesktop();
     void testParentWindow();
     void testGeometry();
     void testIcon();
+    void testPid();
 
     void cleanup();
 
@@ -160,6 +163,7 @@
     QSignalSpy windowSpy(m_windowManagement, 
SIGNAL(windowCreated(KWayland::Client::PlasmaWindow *)));
     QVERIFY(windowSpy.isValid());
     m_windowInterface = m_windowManagementInterface->createWindow(this);
+    m_windowInterface->setPid(1337);
 
     QVERIFY(windowSpy.wait());
     m_window = windowSpy.first().first().value<KWayland::Client::PlasmaWindow 
*>();
@@ -475,6 +479,50 @@
     
QTEST(requestSpy.first().first().value<PlasmaWindowManagementInterface::ShowingDesktopState>(),
 "expectedValue");
 }
 
+void TestWindowManagement::testKeepAbove()
+{
+    using namespace KWayland::Server;
+    // this test verifies setting the keep above state
+    QVERIFY(!m_window->isKeepAbove());
+    QSignalSpy keepAboveChangedSpy(m_window, 
&KWayland::Client::PlasmaWindow::keepAboveChanged);
+    QVERIFY(keepAboveChangedSpy.isValid());
+    m_windowInterface->setKeepAbove(true);
+    QVERIFY(keepAboveChangedSpy.wait());
+    QCOMPARE(keepAboveChangedSpy.count(), 1);
+    QVERIFY(m_window->isKeepAbove());
+    // setting to same should not change
+    m_windowInterface->setKeepAbove(true);
+    QVERIFY(!keepAboveChangedSpy.wait(100));
+    QCOMPARE(keepAboveChangedSpy.count(), 1);
+    // setting to other state should change
+    m_windowInterface->setKeepAbove(false);
+    QVERIFY(keepAboveChangedSpy.wait());
+    QCOMPARE(keepAboveChangedSpy.count(), 2);
+    QVERIFY(!m_window->isKeepAbove());
+}
+
+void TestWindowManagement::testKeepBelow()
+{
+    using namespace KWayland::Server;
+    // this test verifies setting the keep below state
+    QVERIFY(!m_window->isKeepBelow());
+    QSignalSpy keepBelowChangedSpy(m_window, 
&KWayland::Client::PlasmaWindow::keepBelowChanged);
+    QVERIFY(keepBelowChangedSpy.isValid());
+    m_windowInterface->setKeepBelow(true);
+    QVERIFY(keepBelowChangedSpy.wait());
+    QCOMPARE(keepBelowChangedSpy.count(), 1);
+    QVERIFY(m_window->isKeepBelow());
+    // setting to same should not change
+    m_windowInterface->setKeepBelow(true);
+    QVERIFY(!keepBelowChangedSpy.wait(100));
+    QCOMPARE(keepBelowChangedSpy.count(), 1);
+    // setting to other state should change
+    m_windowInterface->setKeepBelow(false);
+    QVERIFY(keepBelowChangedSpy.wait());
+    QCOMPARE(keepBelowChangedSpy.count(), 2);
+    QVERIFY(!m_window->isKeepBelow());
+}
+
 void TestWindowManagement::testParentWindow()
 {
     using namespace KWayland::Client;
@@ -581,5 +629,22 @@
     QCOMPARE(m_window->icon().name(), QStringLiteral("xorg"));
 }
 
+void TestWindowManagement::testPid()
+{
+    using namespace KWayland::Client;
+    QVERIFY(m_window);
+    QVERIFY(m_window->pid() == 1337);
+
+    //test server not setting a PID for whatever reason
+    QScopedPointer<KWayland::Server::PlasmaWindowInterface> 
newWindowInterface(m_windowManagementInterface->createWindow(this));
+    QSignalSpy windowSpy(m_windowManagement, 
SIGNAL(windowCreated(KWayland::Client::PlasmaWindow *)));
+    QVERIFY(windowSpy.wait());
+    QScopedPointer<PlasmaWindow> newWindow( 
windowSpy.first().first().value<KWayland::Client::PlasmaWindow *>());
+    QVERIFY(newWindow);
+    QVERIFY(newWindow->pid() == 0);
+
+
+}
+
 QTEST_MAIN(TestWindowManagement)
 #include "test_wayland_windowmanagement.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/autotests/server/test_qt_surface_extension.cpp 
new/kwayland-5.35.0/autotests/server/test_qt_surface_extension.cpp
--- old/kwayland-5.34.0/autotests/server/test_qt_surface_extension.cpp  
2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/autotests/server/test_qt_surface_extension.cpp  
2017-06-03 11:16:30.000000000 +0200
@@ -79,13 +79,14 @@
     QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
     env.insert(QStringLiteral("WAYLAND_DISPLAY"), s_socketName);
     process.setProcessEnvironment(env);
-    process.start(binary);
+    process.start(binary, QStringList());
     QVERIFY(surfaceExtensionSpy.wait());
     QCOMPARE(surfaceExtensionSpy.count(), 1);
     auto *extension = 
surfaceExtensionSpy.first().first().value<QtExtendedSurfaceInterface*>();
     QVERIFY(extension);
     QSignalSpy surfaceExtensionDestroyedSpy(extension, &QObject::destroyed);
     QVERIFY(surfaceExtensionSpy.isValid());
+    qRegisterMetaType<QProcess::ProcessState>();
     QSignalSpy processStateChangedSpy(&process, &QProcess::stateChanged);
     QVERIFY(processStateChangedSpy.isValid());
     extension->close();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/blur.h 
new/kwayland-5.35.0/src/client/blur.h
--- old/kwayland-5.34.0/src/client/blur.h       2017-05-06 10:51:20.000000000 
+0200
+++ new/kwayland-5.35.0/src/client/blur.h       2017-06-03 11:16:30.000000000 
+0200
@@ -47,6 +47,9 @@
 class Surface;
 class Region;
 
+/**
+ * TODO
+ */
 class KWAYLANDCLIENT_EXPORT BlurManager : public QObject
 {
     Q_OBJECT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/connection_thread.h 
new/kwayland-5.35.0/src/client/connection_thread.h
--- old/kwayland-5.34.0/src/client/connection_thread.h  2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/client/connection_thread.h  2017-06-03 
11:16:30.000000000 +0200
@@ -135,7 +135,7 @@
      * as that's managed by Qt.
      *
      * The returned ConnectionThread is not able to detect (protocol) error. 
The signal
-     * @link{errorOccurred} won't be emitted, @link{hasError} will return @c 
false, even if the
+     * {@link errorOccurred} won't be emitted, {@link hasError} will return @c 
false, even if the
      * actual connection held by QtWayland is on error. The behavior of 
QtWayland is to exit the
      * application on error.
      *
@@ -238,7 +238,7 @@
     /**
      * The Wayland connection experienced a fatal error.
      * The ConnectionThread is no longer valid, no requests may be sent.
-     * This has the same effects as @link{connectionDied}.
+     * This has the same effects as {@link connectionDied}.
      *
      * @see hasError
      * @see errorCode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/contrast.h 
new/kwayland-5.35.0/src/client/contrast.h
--- old/kwayland-5.34.0/src/client/contrast.h   2017-05-06 10:51:20.000000000 
+0200
+++ new/kwayland-5.35.0/src/client/contrast.h   2017-06-03 11:16:30.000000000 
+0200
@@ -40,6 +40,9 @@
 class Surface;
 class Region;
 
+/**
+ * TODO
+ */
 class KWAYLANDCLIENT_EXPORT ContrastManager : public QObject
 {
     Q_OBJECT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/idle.h 
new/kwayland-5.35.0/src/client/idle.h
--- old/kwayland-5.34.0/src/client/idle.h       2017-05-06 10:51:20.000000000 
+0200
+++ new/kwayland-5.35.0/src/client/idle.h       2017-06-03 11:16:30.000000000 
+0200
@@ -123,7 +123,7 @@
     /**
      * Creates a new IdleTimeout for the @p seat. If the @p seat has been idle,
      * that is none of the connected input devices got used for @p msec, the
-     * IdleTimeout will emit the @link{IdleTimeout::idle} signal.
+     * IdleTimeout will emit the {@link IdleTimeout::idle} signal.
      *
      * It is not guaranteed that the signal will be emitted exactly at the 
given
      * timeout. A Wayland server might for example have a minimum timeout 
which is
@@ -166,7 +166,7 @@
     Q_OBJECT
 public:
     /**
-     * To create an IdleTimeout prefer using @link{Idle::getTimeout} which 
sets up the
+     * To create an IdleTimeout prefer using {@link Idle::getTimeout} which 
sets up the
      * IdleTimeout to be fully functional.
      **/
     explicit IdleTimeout(QObject *parent = nullptr);
@@ -211,7 +211,7 @@
 
     /**
      * Simulates user activity. If the IdleTimeout is in idle state this will 
trigger the
-     * @link{resumeFromIdle} signal. The current idle duration is reset, so 
the @link{idle}
+     * {@link resumeFromIdle} signal. The current idle duration is reset, so 
the {@link idle}
      * will only be emitted after a complete idle duration as requested for 
this IdleTimeout.
      */
     void simulateUserActivity();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/plasmashell.h 
new/kwayland-5.35.0/src/client/plasmashell.h
--- old/kwayland-5.34.0/src/client/plasmashell.h        2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/client/plasmashell.h        2017-06-03 
11:16:30.000000000 +0200
@@ -292,10 +292,10 @@
     /**
      * Requests to hide a surface with Role Panel and PanelBahvior AutoHide.
      *
-     * Once the compositor has hidden the panel the signal 
@link{autoHidePanelHidden} gets
-     * emitted. Once it is shown again the signal @link{autoHidePanelShown} 
gets emitted.
+     * Once the compositor has hidden the panel the signal {@link 
autoHidePanelHidden} gets
+     * emitted. Once it is shown again the signal {@link autoHidePanelShown} 
gets emitted.
      *
-     * To show the surface again from client side use 
@link{requestShowAutoHidingPanel}.
+     * To show the surface again from client side use {@link 
requestShowAutoHidingPanel}.
      *
      * @see autoHidePanelHidden
      * @see autoHidePanelShown
@@ -308,7 +308,7 @@
      * Requests to show a surface with Role Panel and PanelBahvior AutoHide.
      *
      * This request allows the client to show a surface which it previously
-     * requested to be hidden with @link{requestHideAutoHidingPanel}.
+     * requested to be hidden with {@link requestHideAutoHidingPanel}.
      *
      * @see autoHidePanelHidden
      * @see autoHidePanelShown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/src/client/plasmawindowmanagement.cpp 
new/kwayland-5.35.0/src/client/plasmawindowmanagement.cpp
--- old/kwayland-5.34.0/src/client/plasmawindowmanagement.cpp   2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/client/plasmawindowmanagement.cpp   2017-06-03 
11:16:30.000000000 +0200
@@ -93,10 +93,12 @@
     QPointer<PlasmaWindow> parentWindow;
     QMetaObject::Connection parentWindowUnmappedConnection;
     QRect geometry;
+    quint32 pid = 0;
 
 private:
     static void titleChangedCallback(void *data, org_kde_plasma_window 
*window, const char *title);
     static void appIdChangedCallback(void *data, org_kde_plasma_window 
*window, const char *app_id);
+    static void pidChangedCallback(void *data, org_kde_plasma_window *window, 
uint32_t pid);
     static void stateChangedCallback(void *data, org_kde_plasma_window 
*window, uint32_t state);
     static void virtualDesktopChangedCallback(void *data, 
org_kde_plasma_window *window, int32_t number);
     static void themedIconNameChangedCallback(void *data, 
org_kde_plasma_window *window, const char *name);
@@ -124,6 +126,7 @@
     void setResizable(bool set);
     void setVirtualDesktopChangeable(bool set);
     void setParentWindow(PlasmaWindow *parentWindow);
+    void setPid(const quint32 pid);
 
     static Private *cast(void *data) {
         return reinterpret_cast<Private*>(data);
@@ -341,7 +344,8 @@
     initialStateCallback,
     parentWindowCallback,
     windowGeometryCallback,
-    iconChangedCallback
+    iconChangedCallback,
+    pidChangedCallback
 };
 
 void PlasmaWindow::Private::parentWindowCallback(void *data, 
org_kde_plasma_window *window, org_kde_plasma_window *parent)
@@ -422,6 +426,16 @@
     emit p->q->appIdChanged();
 }
 
+void PlasmaWindow::Private::pidChangedCallback(void *data, 
org_kde_plasma_window *window, uint32_t pid)
+{
+    Q_UNUSED(window)
+    Private *p = cast(data);
+    if (p->pid == static_cast<quint32>(pid)) {
+        return;
+    }
+    p->pid = pid;
+}
+
 void PlasmaWindow::Private::virtualDesktopChangedCallback(void *data, 
org_kde_plasma_window *window, int32_t number)
 {
     Q_UNUSED(window)
@@ -516,22 +530,24 @@
         QByteArray content;
         if (readData(pipeFd, content) != 0) {
             close(pipeFd);
-            return QIcon::fromTheme(QStringLiteral("wayland"));
+            return QIcon();
         }
         close(pipeFd);
         QDataStream ds(content);
         QIcon icon;
         ds >> icon;
-        if (icon.isNull()) {
-            return QIcon::fromTheme(QStringLiteral("wayland"));
-        }
         return icon;
     };
     QFutureWatcher<QIcon> *watcher = new QFutureWatcher<QIcon>(p->q);
     QObject::connect(watcher, &QFutureWatcher<QIcon>::finished, p->q,
         [p, watcher] {
             watcher->deleteLater();
-            p->icon = watcher->result();
+            QIcon icon = watcher->result();
+            if (!icon.isNull()) {
+                p->icon = icon;
+            } else {
+                p->icon = QIcon::fromTheme(QStringLiteral("wayland"));
+            }
             emit p->q->iconChanged();
         }
     );
@@ -749,6 +765,11 @@
     return d->appId;
 }
 
+quint32 PlasmaWindow::pid() const
+{
+    return d->pid;
+}
+
 QString PlasmaWindow::title() const
 {
     return d->title;
@@ -882,6 +903,32 @@
     org_kde_plasma_window_set_virtual_desktop(d->window, desktop);
 }
 
+void PlasmaWindow::requestToggleKeepAbove()
+{
+    if (d->keepAbove) {
+        org_kde_plasma_window_set_state(d->window,
+            ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STATE_KEEP_ABOVE,
+            0);
+    } else {
+        org_kde_plasma_window_set_state(d->window,
+            ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STATE_KEEP_ABOVE,
+            ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STATE_KEEP_ABOVE);
+    }
+}
+
+void PlasmaWindow::requestToggleKeepBelow()
+{
+    if (d->keepBelow) {
+        org_kde_plasma_window_set_state(d->window,
+            ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STATE_KEEP_BELOW,
+            0);
+    } else {
+        org_kde_plasma_window_set_state(d->window,
+            ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STATE_KEEP_BELOW,
+            ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STATE_KEEP_BELOW);
+    }
+}
+
 void PlasmaWindow::requestToggleMinimized()
 {
     if (d->minimized) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/plasmawindowmanagement.h 
new/kwayland-5.35.0/src/client/plasmawindowmanagement.h
--- old/kwayland-5.34.0/src/client/plasmawindowmanagement.h     2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/client/plasmawindowmanagement.h     2017-06-03 
11:16:30.000000000 +0200
@@ -161,7 +161,7 @@
     QList<PlasmaWindow*> windows() const;
     /**
      * @returns The currently active PlasmaWindow, the PlasmaWindow which
-     * returns @c true in @link{PlasmaWindow::isActive} or @c nullptr in case
+     * returns @c true in {@link PlasmaWindow::isActive} or @c nullptr in case
      * there is no active window.
      **/
     PlasmaWindow *activeWindow() const;
@@ -216,7 +216,7 @@
  * @short Wrapper for the org_kde_plasma_window interface.
  *
  * A PlasmaWindow gets created by the PlasmaWindowManagement and announced 
through
- * the @link{PlasmaWindowManagement::windowCreated} signal. The PlasmaWindow 
encapsulates
+ * the {@link PlasmaWindowManagement::windowCreated} signal. The PlasmaWindow 
encapsulates
  * state about a window managed by the Wayland server and allows to request 
state changes.
  *
  * The PlasmaWindow will be automatically deleted when the PlasmaWindow gets 
unmapped.
@@ -380,6 +380,12 @@
      * @since 5.22
      */
     bool isVirtualDesktopChangeable() const;
+    /**
+     * @returns The process id this window belongs to.
+     * or 0 if unset
+     * @since 5.35
+     */
+    quint32 pid() const;
 
     /**
      * Requests to activate the window.
@@ -403,6 +409,19 @@
      * Requests to send the window to virtual @p desktop.
      **/
     void requestVirtualDesktop(quint32 desktop);
+
+    /**
+     * Requests the window at this model row index have its keep above state 
toggled.
+     * @since 5.35
+     */
+    void requestToggleKeepAbove();
+
+    /**
+     * Requests the window at this model row index have its keep below state 
toggled.
+     * @since 5.35
+     */
+    void requestToggleKeepBelow();
+
     /**
      * Requests the window at this model row index have its minimized state 
toggled.
      */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/plasmawindowmodel.cpp 
new/kwayland-5.35.0/src/client/plasmawindowmodel.cpp
--- old/kwayland-5.34.0/src/client/plasmawindowmodel.cpp        2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/client/plasmawindowmodel.cpp        2017-06-03 
11:16:30.000000000 +0200
@@ -225,6 +225,8 @@
         return window->icon();
     } else if (role == AppId) {
         return window->appId();
+    } else if (role == Pid) {
+        return window->pid();
     } else if (role == IsActive) {
         return window->isActive();
     } else if (role == IsFullscreenable) {
@@ -315,6 +317,20 @@
     }
 }
 
+Q_INVOKABLE void PlasmaWindowModel::requestToggleKeepAbove(int row)
+{
+    if (row >= 0 && row < d->windows.count()) {
+        d->windows.at(row)->requestToggleKeepAbove();
+    }
+}
+
+Q_INVOKABLE void PlasmaWindowModel::requestToggleKeepBelow(int row)
+{
+    if (row >= 0 && row < d->windows.count()) {
+        d->windows.at(row)->requestToggleKeepBelow();
+    }
+}
+
 Q_INVOKABLE void PlasmaWindowModel::requestToggleMinimized(int row)
 {
     if (row >= 0 && row < d->windows.count()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/plasmawindowmodel.h 
new/kwayland-5.35.0/src/client/plasmawindowmodel.h
--- old/kwayland-5.34.0/src/client/plasmawindowmodel.h  2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/client/plasmawindowmodel.h  2017-06-03 
11:16:30.000000000 +0200
@@ -101,7 +101,11 @@
         /**
         * @since 5.25
         */
-        Geometry
+        Geometry,
+        /**
+         * @since 5.35
+         */
+        Pid
     };
     Q_ENUM(AdditionalRoles)
 
@@ -147,6 +151,18 @@
     Q_INVOKABLE void requestVirtualDesktop(int row, quint32 desktop);
 
     /**
+     * Requests the window at this model row index have its keep above state 
toggled.
+     * @since 5.35
+     */
+    Q_INVOKABLE void requestToggleKeepAbove(int row);
+
+    /**
+     * Requests the window at this model row index have its keep above state 
toggled.
+     * @since 5.35
+     */
+    Q_INVOKABLE void requestToggleKeepBelow(int row);
+
+    /**
      * Requests the window at this model row index have its minimized state 
toggled.
      */
     Q_INVOKABLE void requestToggleMinimized(int row);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/pointerconstraints.h 
new/kwayland-5.35.0/src/client/pointerconstraints.h
--- old/kwayland-5.34.0/src/client/pointerconstraints.h 2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/client/pointerconstraints.h 2017-06-03 
11:16:30.000000000 +0200
@@ -152,7 +152,7 @@
      * Creating a LockedPointer does not lock the pointer immediately; in the
      * future, when the compositor deems implementation-specific constraints
      * are satisfied, the pointer lock will be activated and the compositor
-     * sends a locked event, reported by @link{LockedPointer::locked}.
+     * sends a locked event, reported by {@link LockedPointer::locked}.
      *
      * The protocol provides no guarantee that the constraints are ever
      * satisfied, and does not require the compositor to send an error if the
@@ -173,8 +173,8 @@
      * A Surface may receive pointer focus without the lock being activated.
      *
      * Note that while a pointer is locked, the Pointer objects of the
-     * corresponding seat will not emit any @link{Pointer::motion} signals, but
-     * relative motion events will still be emitted via 
@link{RelativePointer::relativeMotion}.
+     * corresponding seat will not emit any {@link Pointer::motion} signals, 
but
+     * relative motion events will still be emitted via {@link 
RelativePointer::relativeMotion}.
      * Pointer axis and button events are unaffected.
      *
      * @param surface The Surface which should be constrained in pointer motion
@@ -194,7 +194,7 @@
      * does not take effect immediately; in the future, when the compositor
      * deems implementation-specific constraints are satisfied, the pointer
      * confinement will be     activated and the compositor sends a confined 
event,
-     * which is reported through the @link{ConfinedPointer::confined} signal.
+     * which is reported through the {@link ConfinedPointer::confined} signal.
      *
      * The intersection of the @p region passed and the input region of the
      * @p surface is used to determine where the pointer must be
@@ -235,7 +235,7 @@
  * The LockedPointer represents a locked pointer state.
  *
  * While the lock of this object is active, the Pointer objects of the
- * associated seat will not emit any @link{Pointer::motion} events.
+ * associated seat will not emit any {@link Pointer::motion} events.
  *
  * This object will send the signal locked when the lock is activated.
  * Whenever the lock is activated, it is guaranteed that the locked surface
@@ -249,7 +249,7 @@
  *
  * When unlocking, the compositor may warp the cursor position to the set
  * cursor position hint. If it does, it will not result in any relative
- * motion events emitted via @link{RelativePointer::relativeMotion}.
+ * motion events emitted via {@link RelativePointer::relativeMotion}.
  *
  * If the Surface the lock was requested on is destroyed and the lock is not
  * yet activated, the LockedPointer object is now defunct and must be
@@ -308,7 +308,7 @@
      *
      * The cursor position hint is double buffered. The new hint will only take
      * effect when the associated surface gets it pending state applied.
-     * See @link{Surface::commit} for details.
+     * See {@link Surface::commit} for details.
      *
      * @param surfaceLocal The new position hint in surface local coordinates
      * @see Surface::commit
@@ -320,7 +320,7 @@
      *
      * The new lock region is double-buffered. The new lock region will
      * only take effect when the associated Surface gets its pending state
-     * applied. See @link{Surface::commit} for details.
+     * applied. See {@link Surface::commit} for details.
      *
      * @param region The new lock region.
      * @see Surface::commit
@@ -421,13 +421,13 @@
      *
      * The new confine region is double-buffered. The new confine region will
      * only take effect when the associated Surface gets its pending state
-     * applied. See @link{Surface::commit} for details.
+     * applied. See {@link Surface::commit} for details.
      *
      * If the confinement is active when the new confinement region is applied
      * and the pointer ends up outside of newly applied region, the pointer may
      * warped to a position within the new confinement region. If warped, a
-     * @link{Pointer::motion} signal will be emitted, but no
-     * @link{RelativePointer::relativeMotion} signal.
+     * {@link Pointer::motion} signal will be emitted, but no
+     * {@link RelativePointer::relativeMotion} signal.
      *
      * The compositor may also, instead of using the new region, unconfine the
      * pointer.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/src/client/protocols/plasma-window-management.xml 
new/kwayland-5.35.0/src/client/protocols/plasma-window-management.xml
--- old/kwayland-5.34.0/src/client/protocols/plasma-window-management.xml       
2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/client/protocols/plasma-window-management.xml       
2017-06-03 11:16:30.000000000 +0200
@@ -17,7 +17,7 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
   ]]></copyright>
 
-  <interface name="org_kde_plasma_window_management" version="7">
+  <interface name="org_kde_plasma_window_management" version="8">
     <description summary="application windows management">
       This interface manages application windows.
       It provides requests to show and hide the desktop and emits
@@ -257,5 +257,14 @@
             The client can request the icon using get_icon.
         </description>
     </event>
+
+    <event name="pid_changed">
+      <description summary="process id of application owning the window has 
changed">
+        This event will be sent when the compositor has set the process id 
this window belongs to.
+        This should be set once before the initial_state is sent.
+      </description>
+      <arg name="pid" type="uint" summary="process id"/>
+    </event>
+
   </interface>
 </protocol>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/shell.h 
new/kwayland-5.35.0/src/client/shell.h
--- old/kwayland-5.34.0/src/client/shell.h      2017-05-06 10:51:20.000000000 
+0200
+++ new/kwayland-5.35.0/src/client/shell.h      2017-06-03 11:16:30.000000000 
+0200
@@ -256,7 +256,7 @@
      * on the @p grabbedSeat. It needs to pass the @p grabSerial indicating 
the implicit grab
      * to the request for setting the surface. The implicit grab is turned 
into a popup grab
      * which will persist after the implicit grab ends. The popup grab ends 
when the ShellSurface
-     * gets destroyed or when the compositor breaks the grab through the 
@link{popupDone} signal.
+     * gets destroyed or when the compositor breaks the grab through the 
{@link popupDone} signal.
      *
      * @param parent The parent Surface of this ShellSurface
      * @param grabbedSeat The Seat on which an implicit grab exists
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/slide.h 
new/kwayland-5.35.0/src/client/slide.h
--- old/kwayland-5.34.0/src/client/slide.h      2017-05-06 10:51:20.000000000 
+0200
+++ new/kwayland-5.35.0/src/client/slide.h      2017-06-03 11:16:30.000000000 
+0200
@@ -143,15 +143,18 @@
     QScopedPointer<Private> d;
 };
 
+/**
+ * TODO
+ */
 class KWAYLANDCLIENT_EXPORT Slide : public QObject
 {
     Q_OBJECT
 public:
     enum Location {
-        Left = 0, /** Slide from the left edge of the screen */
-        Top, /** Slide from the top edge of the screen */
-        Right, /** Slide from the bottom edge of the screen */
-        Bottom /** Slide from the bottom edge of the screen */
+        Left = 0, /**< Slide from the left edge of the screen */
+        Top, /**< Slide from the top edge of the screen */
+        Right, /**< Slide from the bottom edge of the screen */
+        Bottom /**< Slide from the bottom edge of the screen */
     };
 
     virtual ~Slide();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/textinput.h 
new/kwayland-5.35.0/src/client/textinput.h
--- old/kwayland-5.34.0/src/client/textinput.h  2017-05-06 10:51:20.000000000 
+0200
+++ new/kwayland-5.35.0/src/client/textinput.h  2017-06-03 11:16:30.000000000 
+0200
@@ -286,8 +286,8 @@
     QByteArray language() const;
 
     /**
-     * The cursor position inside the @link{composingText} (as byte offset) 
relative
-     * to the start of the @link{composingText}.
+     * The cursor position inside the {@link composingText} (as byte offset) 
relative
+     * to the start of the {@link composingText}.
      * If index is a negative number no cursor is shown.
      * @see composingText
      * @see composingTextChanged
@@ -295,14 +295,14 @@
     qint32 composingTextCursorPosition() const;
 
     /**
-     * The currently being composed text around the 
@link{composingTextCursorPosition}.
+     * The currently being composed text around the {@link 
composingTextCursorPosition}.
      * @see composingTextCursorPosition
      * @see composingTextChanged
      **/
     QByteArray composingText() const;
 
     /**
-     * The fallback text can be used to replace the @link{composingText} in 
some cases
+     * The fallback text can be used to replace the {@link composingText} in 
some cases
      * (for example when losing focus).
      *
      * @see composingText
@@ -322,13 +322,13 @@
     QByteArray commitText() const;
 
     /**
-     * The cursor position in bytes at which the @link{commitText} should be 
inserted.
+     * The cursor position in bytes at which the {@link commitText} should be 
inserted.
      * @see committed
      **/
     qint32 cursorPosition() const;
 
     /**
-     * The text between anchorPosition and @link(cursorPosition} should be 
selected.
+     * The text between anchorPosition and {@link cursorPosition} should be 
selected.
      * @see cursorPosition
      * @see committed
      **/
@@ -398,8 +398,8 @@
 
     /**
      * Emitted when the currently composing text got committed.
-     * The @link{commitText} should get inserted at the @link{cursorPosition} 
and
-     * the text around @link{deleteSurroundingText} should be deleted.
+     * The {@link commitText} should get inserted at the {@link 
cursorPosition} and
+     * the text around {@link deleteSurroundingText} should be deleted.
      *
      * @see commitText
      * @see cursorPosition
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/client/touch.h 
new/kwayland-5.35.0/src/client/touch.h
--- old/kwayland-5.34.0/src/client/touch.h      2017-05-06 10:51:20.000000000 
+0200
+++ new/kwayland-5.35.0/src/client/touch.h      2017-06-03 11:16:30.000000000 
+0200
@@ -35,6 +35,9 @@
 class Surface;
 class Touch;
 
+/**
+ * TODO
+ */
 class KWAYLANDCLIENT_EXPORT TouchPoint
 {
 public:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/server/plasmashell_interface.h 
new/kwayland-5.35.0/src/server/plasmashell_interface.h
--- old/kwayland-5.34.0/src/server/plasmashell_interface.h      2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/plasmashell_interface.h      2017-06-03 
11:16:30.000000000 +0200
@@ -140,7 +140,7 @@
 
     /**
      * Informs the PlasmaShellSurfaceInterface that the auto-hiding panel got 
hidden.
-     * Once it is shown again the method @link{showAutoHidingPanel} should be 
used.
+     * Once it is shown again the method {@link showAutoHidingPanel} should be 
used.
      *
      * @see showAutoHidingPanel
      * @see panelAutoHideHideRequested
@@ -197,9 +197,9 @@
      * A surface with Role Panel and PanelBehavior AutoHide requested to be 
hidden.
      *
      * The compositor should inform the PlasmaShellSurfaceInterface about the 
actual change.
-     * Once the surface is hidden it should invoke @link{hideAutoHidingPanel}. 
If the compositor
+     * Once the surface is hidden it should invoke {@link 
hideAutoHidingPanel}. If the compositor
      * cannot hide the surface (e.g. because it doesn't border a screen edge) 
it should inform
-     * the surface through invoking @link{showAutoHidingPanel}. This method 
should also be invoked
+     * the surface through invoking {@link showAutoHidingPanel}. This method 
should also be invoked
      * whenever the surface gets shown again due to triggering the screen edge.
      *
      * @see hideAutoHidingPanel
@@ -213,7 +213,7 @@
      * A surface with Role Panel and PanelBehavior AutoHide requested to be 
shown.
      *
      * The compositor should inform the PlasmaShellSurfaceInterface about the 
actual change.
-     * Once the surface is shown it should invoke @link{showAutoHidingPanel}.
+     * Once the surface is shown it should invoke {@link showAutoHidingPanel}.
      *
      * @see hideAutoHidingPanel
      * @see showAutoHidingPanel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/src/server/plasmawindowmanagement_interface.cpp 
new/kwayland-5.35.0/src/server/plasmawindowmanagement_interface.cpp
--- old/kwayland-5.34.0/src/server/plasmawindowmanagement_interface.cpp 
2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/plasmawindowmanagement_interface.cpp 
2017-06-03 11:16:30.000000000 +0200
@@ -72,6 +72,7 @@
     void createResource(wl_resource *parent, uint32_t id);
     void setTitle(const QString &title);
     void setAppId(const QString &appId);
+    void setPid(quint32 pid);
     void setThemedIconName(const QString &iconName);
     void setIcon(const QIcon &icon);
     void setVirtualDesktop(quint32 desktop);
@@ -109,6 +110,7 @@
     PlasmaWindowInterface *q;
     QString m_title;
     QString m_appId;
+    quint32 m_pid = 0;
     QString m_themedIconName;
     QIcon m_icon;
     quint32 m_virtualDesktop = 0;
@@ -329,6 +331,9 @@
     if (!m_appId.isEmpty()) {
         org_kde_plasma_window_send_app_id_changed(resource, 
m_appId.toUtf8().constData());
     }
+    if (m_pid != 0) {
+        org_kde_plasma_window_send_pid_changed(resource, m_pid);
+    }
     if (!m_title.isEmpty()) {
         org_kde_plasma_window_send_title_changed(resource, 
m_title.toUtf8().constData());
     }
@@ -369,6 +374,17 @@
     }
 }
 
+void PlasmaWindowInterface::Private::setPid(quint32 pid)
+{
+    if (m_pid == pid) {
+        return;
+    }
+    m_pid = pid;
+    for (auto it = resources.constBegin(); it != resources.constEnd(); ++it) {
+        org_kde_plasma_window_send_pid_changed(*it, pid);
+    }
+}
+
 void PlasmaWindowInterface::Private::setThemedIconName(const QString &iconName)
 {
     if (m_themedIconName == iconName) {
@@ -655,6 +671,11 @@
     d->setAppId(appId);
 }
 
+void PlasmaWindowInterface::setPid(quint32 pid)
+{
+    d->setPid(pid);
+}
+
 void PlasmaWindowInterface::setTitle(const QString &title)
 {
     d->setTitle(title);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/src/server/plasmawindowmanagement_interface.h 
new/kwayland-5.35.0/src/server/plasmawindowmanagement_interface.h
--- old/kwayland-5.34.0/src/server/plasmawindowmanagement_interface.h   
2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/plasmawindowmanagement_interface.h   
2017-06-03 11:16:30.000000000 +0200
@@ -38,6 +38,9 @@
 class PlasmaWindowInterface;
 class SurfaceInterface;
 
+/**
+ * @todo Add documentation
+ */
 class KWAYLANDSERVER_EXPORT PlasmaWindowManagementInterface : public Global
 {
     Q_OBJECT
@@ -53,8 +56,8 @@
     QList<PlasmaWindowInterface*> windows() const;
 
     /**
-     * Unmaps the @p window previously created with @link{createWindow}.
-     * The window will be unmapped and removed from the list of @link{windows}.
+     * Unmaps the @p window previously created with {@link createWindow}.
+     * The window will be unmapped and removed from the list of {@link 
windows}.
      *
      * Unmapping a @p window indicates to the client that it should destroy the
      * resource created for the window. Once all resources for the @p window 
are
@@ -79,6 +82,9 @@
     Private *d_func() const;
 };
 
+/**
+ * @todo Add documentation
+ */
 class KWAYLANDSERVER_EXPORT PlasmaWindowInterface : public QObject
 {
     Q_OBJECT
@@ -87,6 +93,7 @@
 
     void setTitle(const QString &title);
     void setAppId(const QString &appId);
+    void setPid(quint32 pid);
     void setVirtualDesktop(quint32 desktop);
     void setActive(bool set);
     void setMinimized(bool set);
@@ -133,7 +140,7 @@
      * This method removes the Window and the Client is supposed to release 
the resource
      * bound for this Window. Once all resources are released the Window gets 
deleted.
      *
-     * Prefer using @link{PlasmaWindowManagementInterface::unmapWindow}.
+     * Prefer using {@link PlasmaWindowManagementInterface::unmapWindow}.
      * @see PlasmaWindowManagementInterface::unmapWindow
      **/
     void unmap();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/src/server/pointerconstraints_interface.h 
new/kwayland-5.35.0/src/server/pointerconstraints_interface.h
--- old/kwayland-5.34.0/src/server/pointerconstraints_interface.h       
2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/pointerconstraints_interface.h       
2017-06-03 11:16:30.000000000 +0200
@@ -50,7 +50,7 @@
 /**
  * Manager object to create pointer constraints.
  *
- * To create this manager use @link{Display::createPointerConstraints}
+ * To create this manager use {@link Display::createPointerConstraints}
  *
  * @see ConfinedPointerInterface
  * @see LockedPointerInterface
@@ -82,9 +82,9 @@
  * to a position.
  *
  * It is up to the compositor whether the lock gets activated.
- * To activate it needs to use @link{LockedPointerInterface::setLocked}.
+ * To activate it needs to use {@link LockedPointerInterface::setLocked}.
  * The compositor needs to ensure that the SurfaceInterface has pointer focus
- * and that the pointer is inside the @link{LockedPointerInterface::region} 
when
+ * and that the pointer is inside the {@link LockedPointerInterface::region} 
when
  * it activates the lock.
  *
  * While the lock is active the PointerInterface does no longer emit pointer 
motion
@@ -136,7 +136,7 @@
      *
      * A pointer lock can only be activated if the SurfaceInterface
      * this LockedPointerInterface was created for has pointer focus
-     * and the pointer is inside the @link{region}.
+     * and the pointer is inside the {@link region}.
      *
      * @param locked Whether the lock should be active
      * @see isLocked
@@ -153,7 +153,7 @@
     void regionChanged();
 
     /**
-     * Emitted whenever the @link{isLocked} state changes.
+     * Emitted whenever the {@link isLocked} state changes.
      * @see isLocked
      * @see setLocked
      **/
@@ -175,14 +175,14 @@
  * pointer to a region of the SurfaceInterface.
  *
  * It is up to the compositor whether the confinement gets activated.
- * To activate it needs to use @link{ConfinedPointerInterface::setConfined}.
+ * To activate it needs to use {@link ConfinedPointerInterface::setConfined}.
  * The compositor needs to ensure that the SurfaceInterface has pointer focus
- * and that the pointer is inside the @link{ConfinedPointerInterface::region} 
when
+ * and that the pointer is inside the {@link ConfinedPointerInterface::region} 
when
  * it activates the confinement.
  *
  * From client side the confinement gets deactivated by destroying the 
ConfinedPointerInterface.
  * From compositor side the confinement can be deactivated by setting
- * @link{ConfinedPointerInterface::setConfined} to @c false.
+ * {@link ConfinedPointerInterface::setConfined} to @c false.
  *
  * @since 5.29
  **/
@@ -230,7 +230,7 @@
      *
      * A pointer confinement can only be activated if the SurfaceInterface
      * this ConfinedPointerInterface was created for has pointer focus
-     * and the pointer is inside the @link{region}.
+     * and the pointer is inside the {@link region}.
      *
      * @param confined Whether the confinement should be active
      * @see isConfined
@@ -247,7 +247,7 @@
     void regionChanged();
 
     /**
-     * Emitted whenever the @link{isConfined} state changes.
+     * Emitted whenever the {@link isConfined} state changes.
      * @see isConfined
      * @see setConfined
      **/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.34.0/src/server/qtsurfaceextension_interface.h 
new/kwayland-5.35.0/src/server/qtsurfaceextension_interface.h
--- old/kwayland-5.34.0/src/server/qtsurfaceextension_interface.h       
2017-05-06 10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/qtsurfaceextension_interface.h       
2017-06-03 11:16:30.000000000 +0200
@@ -39,6 +39,9 @@
 class SurfaceInterface;
 class QtExtendedSurfaceInterface;
 
+/**
+ * TODO
+ */
 class KWAYLANDSERVER_EXPORT QtSurfaceExtensionInterface : public Global
 {
     Q_OBJECT
@@ -54,6 +57,9 @@
     class Private;
 };
 
+/**
+ * TODO
+ */
 class KWAYLANDSERVER_EXPORT QtExtendedSurfaceInterface : public Resource
 {
     Q_OBJECT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/server/seat_interface.h 
new/kwayland-5.35.0/src/server/seat_interface.h
--- old/kwayland-5.34.0/src/server/seat_interface.h     2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/seat_interface.h     2017-06-03 
11:16:30.000000000 +0200
@@ -387,7 +387,7 @@
      * and configuration-specific and non-accelerated deltas and accelerated
      * deltas may have the same value on some devices.
      *
-     * Relative motions are not coupled to wl_pointer.motion events (see 
@link{setPointerPos},
+     * Relative motions are not coupled to wl_pointer.motion events (see 
{@link setPointerPos},
      * and can be sent in combination with such events, but also 
independently. There may
      * also be scenarios where wl_pointer.motion is sent, but there is no
      * relative motion. The order of an absolute and relative motion event
@@ -624,7 +624,7 @@
      * The currently focused text input, may be @c null even if there is a
      * focused text input surface set.
      *
-     * The focused text input might not be enabled for the 
@link{focusedTextInputSurface}.
+     * The focused text input might not be enabled for the {@link 
focusedTextInputSurface}.
      * It is recommended to check the enabled state before interacting with the
      * TextInputInterface.
      *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/server/shadow_interface.h 
new/kwayland-5.35.0/src/server/shadow_interface.h
--- old/kwayland-5.34.0/src/server/shadow_interface.h   2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/shadow_interface.h   2017-06-03 
11:16:30.000000000 +0200
@@ -36,6 +36,9 @@
 class BufferInterface;
 class Display;
 
+/**
+ * TODO
+ */
 class KWAYLANDSERVER_EXPORT ShadowManagerInterface : public Global
 {
     Q_OBJECT
@@ -48,6 +51,9 @@
     class Private;
 };
 
+/**
+ * TODO
+ */
 class KWAYLANDSERVER_EXPORT ShadowInterface : public Resource
 {
     Q_OBJECT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/server/slide_interface.h 
new/kwayland-5.35.0/src/server/slide_interface.h
--- old/kwayland-5.34.0/src/server/slide_interface.h    2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/slide_interface.h    2017-06-03 
11:16:30.000000000 +0200
@@ -32,6 +32,9 @@
 
 class Display;
 
+/**
+ * TODO
+ */
 class KWAYLANDSERVER_EXPORT SlideManagerInterface : public Global
 {
     Q_OBJECT
@@ -44,15 +47,18 @@
     class Private;
 };
 
+/**
+ * TODO
+ */
 class KWAYLANDSERVER_EXPORT SlideInterface : public Resource
 {
     Q_OBJECT
 public:
     enum Location {
-        Left = 0, /** Slide from the left edge of the screen */
-        Top, /** Slide from the top edge of the screen */
-        Right, /** Slide from the bottom edge of the screen */
-        Bottom /** Slide from the bottom edge of the screen */
+        Left = 0, /**< Slide from the left edge of the screen */
+        Top, /**< Slide from the top edge of the screen */
+        Right, /**< Slide from the bottom edge of the screen */
+        Bottom /**< Slide from the bottom edge of the screen */
     };
 
     virtual ~SlideInterface();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/server/subcompositor_interface.h 
new/kwayland-5.35.0/src/server/subcompositor_interface.h
--- old/kwayland-5.34.0/src/server/subcompositor_interface.h    2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/subcompositor_interface.h    2017-06-03 
11:16:30.000000000 +0200
@@ -39,6 +39,9 @@
 class SurfaceInterface;
 class SubSurfaceInterface;
 
+/**
+ * @todo Add documentation
+ */
 class KWAYLANDSERVER_EXPORT SubCompositorInterface : public Global
 {
     Q_OBJECT
@@ -54,6 +57,9 @@
     class Private;
 };
 
+/**
+ * @todo Add documentation
+ */
 class KWAYLANDSERVER_EXPORT SubSurfaceInterface : public Resource
 {
     Q_OBJECT
@@ -72,7 +78,7 @@
 
     /**
      * Whether this SubSurfaceInterface is in synchronized mode.
-     * A SubSurface is in synchronized mode if either @link mode is
+     * A SubSurface is in synchronized mode if either {@link mode} is
      * @c Mode::Synchronized or if the parent surface is in synchronized
      * mode. If a SubSurfaceInterface is in synchronized mode all child
      * SubSurfaceInterfaces are also in synchronized mode ignoring the actual 
mode.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/server/surface_interface.h 
new/kwayland-5.35.0/src/server/surface_interface.h
--- old/kwayland-5.34.0/src/server/surface_interface.h  2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/surface_interface.h  2017-06-03 
11:16:30.000000000 +0200
@@ -169,16 +169,16 @@
     bool isMapped() const;
 
     /**
-     * Returns the tracked damage since the last call to @link 
resetTrackedDamage.
-     * In contrast to @link damage this method does not reset the damage when
+     * Returns the tracked damage since the last call to  {@link 
resetTrackedDamage}.
+     * In contrast to {@link damage} this method does not reset the damage when
      * a new BufferInterface gets committed. This allows a compositor to 
properly
      * track the damage over multiple commits even if it didn't render each new
      * BufferInterface.
      *
-     * The damage gets reset whenever @link resetTrackedDamage is called.
+     * The damage gets reset whenever {@link resetTrackedDamage} is called.
      * This allows a compositor to properly track the change in its rendering 
scene
      * for this SurfaceInterface. After it updates its internal state (e.g. by 
creating
-     * an OpenGL texture from the BufferInterface) it can invoke @link 
resetTrackedDamage
+     * an OpenGL texture from the BufferInterface) it can invoke {@link 
resetTrackedDamage}
      * and the damage tracker will start to track further damage changes.
      *
      * @returns Combined damage since last call to resetTrackedDamage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/server/textinput_interface.h 
new/kwayland-5.35.0/src/server/textinput_interface.h
--- old/kwayland-5.34.0/src/server/textinput_interface.h        2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/textinput_interface.h        2017-06-03 
11:16:30.000000000 +0200
@@ -59,9 +59,9 @@
  * @brief Represent the Global for the interface.
  *
  * The class can represent different interfaces. Which concrete interface is 
represented
- * can be determined through @link{interfaceVersion}.
+ * can be determined through {@link interfaceVersion}.
  *
- * To create a TextInputManagerInterface use 
@link{Display::createTextInputManager}
+ * To create a TextInputManagerInterface use {@link 
Display::createTextInputManager}
  *
  * @since 5.23
  **/
@@ -91,9 +91,9 @@
  * for any interface which implements a text input, e.g. the unstable 
wl_text_input interface.
  *
  * It does not expose the actual interface to cover up the fact that the 
interface is unstable
- * and might change. If one needs to know the actual used protocol, use the 
method @link{interfaceVersion}.
+ * and might change. If one needs to know the actual used protocol, use the 
method {@link interfaceVersion}.
  *
- * A TextInputInterface gets created by the @link{TextInputManagerInterface}. 
The individual
+ * A TextInputInterface gets created by the {@link TextInputManagerInterface}. 
The individual
  * instances are not exposed directly. The SeatInterface provides access to 
the currently active
  * TextInputInterface. This is evaluated automatically based on which 
SurfaceInterface has
  * keyboard focus.
@@ -256,13 +256,13 @@
      **/
     QByteArray surroundingText() const;
     /**
-     * @returns The byte offset of current cursor position within the @link 
{surroundingText}
+     * @returns The byte offset of current cursor position within the {@link 
surroundingText}
      * @see surroundingText
      * @see surroundingTextChanged
      **/
     qint32 surroundingTextCursorPosition() const;
     /**
-     * The byte offset of the selection anchor within the 
@link{surroundingText}.
+     * The byte offset of the selection anchor within the {@link 
surroundingText}.
      *
      * If there is no selected text this is the same as cursor.
      * @return The byte offset of the selection anchor
@@ -303,9 +303,9 @@
     /**
      * Notify when @p text should be inserted into the editor widget.
      * The text to commit could be either just a single character after a key 
press or the
-     * result of some composing (@link{preEdit}). It could be also an empty 
text
-     * when some text should be removed (see @link{deleteSurroundingText}) or 
when
-     * the input cursor should be moved (see @link{cursorPosition}).
+     * result of some composing ({@link preEdit}). It could be also an empty 
text
+     * when some text should be removed (see {@link deleteSurroundingText}) or 
when
+     * the input cursor should be moved (see {@link cursorPosition}).
      *
      * Any previously set composing text should be removed.
      * @param text The utf8-encoded text to be inserted into the editor widget
@@ -318,7 +318,7 @@
      * Sets the cursor position inside the composing text (as byte offset) 
relative to the
      * start of the composing text. When @p index is a negative number no 
cursor is shown.
      *
-     * The Client applies the @p index together with @link{preEdit}.
+     * The Client applies the @p index together with {@link preEdit}.
      * @param index The cursor position relative to the start of the composing 
text
      * @see preEdit
      **/
@@ -393,14 +393,14 @@
      **/
     void cursorRectangleChanged(const QRect &rect);
     /**
-     * Emitted when the @link{contentPurpose} and/or @link{contentHints} 
changes.
+     * Emitted when the {@link contentPurpose} and/or {@link contentHints} 
changes.
      * @see contentPurpose
      * @see contentHints
      **/
     void contentTypeChanged();
     /**
-     * Emitted when the @link{surroundingText}, 
@link{surroundingTextCursorPosition}
-     * and/or @link{surroundingTextSelectionAnchor} changed.
+     * Emitted when the {@link surroundingText}, {@link 
surroundingTextCursorPosition}
+     * and/or {@link surroundingTextSelectionAnchor} changed.
      * @see surroundingText
      * @see surroundingTextCursorPosition
      * @see surroundingTextSelectionAnchor
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.34.0/src/server/xdgshell_interface.h 
new/kwayland-5.35.0/src/server/xdgshell_interface.h
--- old/kwayland-5.34.0/src/server/xdgshell_interface.h 2017-05-06 
10:51:20.000000000 +0200
+++ new/kwayland-5.35.0/src/server/xdgshell_interface.h 2017-06-03 
11:16:30.000000000 +0200
@@ -138,7 +138,7 @@
      * This tells the Surface the current @p states it is in and the @p size 
it should have.
      * If @p size has width and height at @c 0, the Surface can choose the 
size.
      *
-     * The Surface acknowledges the configure event with 
@link{configureAcknowledged}.
+     * The Surface acknowledges the configure event with {@link 
configureAcknowledged}.
      *
      * @param states The states the surface is in
      * @param size The requested size


Reply via email to