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