Hello community, here is the log from the commit of package kwayland for openSUSE:Factory checked in at 2019-02-14 14:28:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwayland (Old) and /work/SRC/openSUSE:Factory/.kwayland.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwayland" Thu Feb 14 14:28:26 2019 rev:58 rq:674270 version:5.55.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kwayland/kwayland.changes 2019-01-21 10:22:39.229928942 +0100 +++ /work/SRC/openSUSE:Factory/.kwayland.new.28833/kwayland.changes 2019-02-14 14:28:27.467787812 +0100 @@ -1,0 +2,17 @@ +Sun Feb 10 22:03:18 UTC 2019 - [email protected] + +- Update to 5.55.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/kde-frameworks-5.55.0.php +- Changes since 5.54.0: + * [server] Generate correct touch ids + * [autotests] Stabilize testWindowmanagement + * Make XdgTest spec compliant + * Add option to use wl_display_add_socket_auto + * [server] Send initial org_kde_plasma_virtual_desktop_management.rows + * Add rows info to the plasma virtual desktop protocol + * [client] Wrap wl_shell_surface_set_{class,title} + * Guard resource deletion in OuptutConfiguration::sendApplied + +------------------------------------------------------------------- Old: ---- kwayland-5.54.0.tar.xz New: ---- kwayland-5.55.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwayland.spec ++++++ --- /var/tmp/diff_new_pack.WU2VVB/_old 2019-02-14 14:28:27.955787586 +0100 +++ /var/tmp/diff_new_pack.WU2VVB/_new 2019-02-14 14:28:27.959787584 +0100 @@ -16,13 +16,13 @@ # -%define _tar_path 5.54 +%define _tar_path 5.55 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} Name: kwayland -Version: 5.54.0 +Version: 5.55.0 Release: 0 Summary: KDE Wayland library License: LGPL-2.1-or-later ++++++ kwayland-5.54.0.tar.xz -> kwayland-5.55.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/CMakeLists.txt new/kwayland-5.55.0/CMakeLists.txt --- old/kwayland-5.54.0/CMakeLists.txt 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/CMakeLists.txt 2019-02-02 18:24:11.000000000 +0100 @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.5) -set(KF5_VERSION "5.54.0") # handled by release scripts +set(KF5_VERSION "5.55.0") # handled by release scripts project(KWayland VERSION ${KF5_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.54.0 NO_MODULE) +find_package(ECM 5.55.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}) @@ -30,7 +30,7 @@ SOVERSION 5) # Dependencies -set(REQUIRED_QT_VERSION 5.9.0) +set(REQUIRED_QT_VERSION 5.10.0) find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Concurrent Gui) find_package(Wayland 1.13 COMPONENTS Client Server) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/autotests/client/test_plasma_virtual_desktop.cpp new/kwayland-5.55.0/autotests/client/test_plasma_virtual_desktop.cpp --- old/kwayland-5.54.0/autotests/client/test_plasma_virtual_desktop.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/autotests/client/test_plasma_virtual_desktop.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -46,6 +46,7 @@ void cleanup(); void testCreate(); + void testSetRows(); void testConnectNewClient(); void testDestroy(); void testActivate(); @@ -268,6 +269,18 @@ } } +void TestVirtualDesktop::testSetRows() +{ + //rebuild some desktops + testCreate(); + + QSignalSpy rowsChangedSpy(m_plasmaVirtualDesktopManagement, &PlasmaVirtualDesktopManagement::rowsChanged); + + m_plasmaVirtualDesktopManagementInterface->setRows(3); + QVERIFY(rowsChangedSpy.wait()); + QCOMPARE(m_plasmaVirtualDesktopManagement->rows(), 3); +} + void TestVirtualDesktop::testConnectNewClient() { //rebuild some desktops diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/autotests/client/test_wayland_shell.cpp new/kwayland-5.55.0/autotests/client/test_wayland_shell.cpp --- old/kwayland-5.54.0/autotests/client/test_wayland_shell.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/autotests/client/test_wayland_shell.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -606,7 +606,7 @@ QString testTitle = QStringLiteral("fooBar"); QVERIFY(serverSurface->title().isNull()); - wl_shell_surface_set_title(*(const KWayland::Client::ShellSurface *)surface, testTitle.toUtf8().constData()); + surface->setTitle(testTitle); QVERIFY(titleSpy.wait()); QCOMPARE(serverSurface->title(), testTitle); QCOMPARE(titleSpy.first().first().toString(), testTitle); @@ -631,13 +631,13 @@ QByteArray testClass = QByteArrayLiteral("fooBar"); QVERIFY(serverSurface->windowClass().isNull()); - wl_shell_surface_set_class(*surface, testClass.constData()); + surface->setWindowClass(testClass); QVERIFY(windowClassSpy.wait()); QCOMPARE(serverSurface->windowClass(), testClass); QCOMPARE(windowClassSpy.first().first().toByteArray(), testClass); // try setting it to same should not trigger the signal - wl_shell_surface_set_class(*surface, testClass.constData()); + surface->setWindowClass(testClass); QVERIFY(!windowClassSpy.wait(100)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/autotests/client/test_wayland_windowmanagement.cpp new/kwayland-5.55.0/autotests/client/test_wayland_windowmanagement.cpp --- old/kwayland-5.54.0/autotests/client/test_wayland_windowmanagement.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/autotests/client/test_wayland_windowmanagement.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -597,17 +597,21 @@ void TestWindowManagement::testIcon() { using namespace KWayland::Client; - QVERIFY(m_window); + + // initially, the server should send us an icon QSignalSpy iconChangedSpy(m_window, &PlasmaWindow::iconChanged); QVERIFY(iconChangedSpy.isValid()); - m_windowInterface->setIcon(QIcon()); - // first goes from themed name to empty QVERIFY(iconChangedSpy.wait()); + QCOMPARE(iconChangedSpy.count(), 1); if (!QIcon::hasThemeIcon(QStringLiteral("wayland"))) { QEXPECT_FAIL("", "no icon", Continue); } QCOMPARE(m_window->icon().name(), QStringLiteral("wayland")); + + // first goes from themed name to empty + m_windowInterface->setIcon(QIcon()); QVERIFY(iconChangedSpy.wait()); + QCOMPARE(iconChangedSpy.count(), 2); if (!QIcon::hasThemeIcon(QStringLiteral("wayland"))) { QEXPECT_FAIL("", "no icon", Continue); } @@ -618,11 +622,13 @@ p.fill(Qt::red); m_windowInterface->setIcon(p); QVERIFY(iconChangedSpy.wait()); + QCOMPARE(iconChangedSpy.count(), 3); QCOMPARE(m_window->icon().pixmap(32, 32), p); // let's set a themed icon m_windowInterface->setIcon(QIcon::fromTheme(QStringLiteral("xorg"))); QVERIFY(iconChangedSpy.wait()); + QCOMPARE(iconChangedSpy.count(), 4); if (!QIcon::hasThemeIcon(QStringLiteral("xorg"))) { QEXPECT_FAIL("", "no icon", Continue); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/autotests/server/test_display.cpp new/kwayland-5.55.0/autotests/server/test_display.cpp --- old/kwayland-5.54.0/autotests/server/test_display.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/autotests/server/test_display.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -43,6 +43,7 @@ void testClientConnection(); void testConnectNoSocket(); void testOutputManagement(); + void testAutoSocketName(); }; void TestWaylandServerDisplay::testSocketName() @@ -215,6 +216,29 @@ QVERIFY(kwin->isValid()); } +void TestWaylandServerDisplay::testAutoSocketName() +{ + QTemporaryDir runtimeDir; + QVERIFY(runtimeDir.isValid()); + QVERIFY(qputenv("XDG_RUNTIME_DIR", runtimeDir.path().toUtf8())); + + Display display0; + display0.setAutomaticSocketNaming(true); + QSignalSpy socketNameChangedSpy0(&display0, SIGNAL(socketNameChanged(QString))); + display0.start(); + QVERIFY(display0.isRunning()); + QCOMPARE(socketNameChangedSpy0.count(), 0); + QCOMPARE(display0.socketName(), QStringLiteral("wayland-0")); + + Display display1; + display1.setAutomaticSocketNaming(true); + QSignalSpy socketNameChangedSpy1(&display1, SIGNAL(socketNameChanged(QString))); + display1.start(); + QVERIFY(display1.isRunning()); + QCOMPARE(socketNameChangedSpy1.count(), 1); + QCOMPARE(display1.socketName(), QStringLiteral("wayland-1")); +} + QTEST_GUILESS_MAIN(TestWaylandServerDisplay) #include "test_display.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/client/plasmavirtualdesktop.cpp new/kwayland-5.55.0/src/client/plasmavirtualdesktop.cpp --- old/kwayland-5.54.0/src/client/plasmavirtualdesktop.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/client/plasmavirtualdesktop.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -41,6 +41,7 @@ WaylandPointer<org_kde_plasma_virtual_desktop_management, org_kde_plasma_virtual_desktop_management_destroy> plasmavirtualdesktopmanagement; EventQueue *queue = nullptr; + quint32 rows = 1; QList<PlasmaVirtualDesktop *> desktops; inline QList<PlasmaVirtualDesktop*>::const_iterator constFindDesktop(const QString &id); @@ -49,6 +50,7 @@ private: static void createdCallback(void *data, org_kde_plasma_virtual_desktop_management *org_kde_plasma_virtual_desktop_management, const char *id, uint32_t position); static void removedCallback(void *data, org_kde_plasma_virtual_desktop_management *org_kde_plasma_virtual_desktop_management, const char *id); + static void rowsCallback(void *data, org_kde_plasma_virtual_desktop_management *org_kde_plasma_virtual_desktop_management, uint32_t rows); static void doneCallback(void *data, org_kde_plasma_virtual_desktop_management *org_kde_plasma_virtual_desktop_management); PlasmaVirtualDesktopManagement *q; @@ -103,7 +105,8 @@ const org_kde_plasma_virtual_desktop_management_listener PlasmaVirtualDesktopManagement::Private::s_listener = { createdCallback, removedCallback, - doneCallback + doneCallback, + rowsCallback }; void PlasmaVirtualDesktopManagement::Private::createdCallback(void *data, org_kde_plasma_virtual_desktop_management *org_kde_plasma_virtual_desktop_management, const char *id, uint32_t position) @@ -136,6 +139,17 @@ emit p->q->desktopRemoved(stringId); } +void PlasmaVirtualDesktopManagement::Private::rowsCallback(void *data, org_kde_plasma_virtual_desktop_management *org_kde_plasma_virtual_desktop_management, uint32_t rows) +{ + auto p = reinterpret_cast<PlasmaVirtualDesktopManagement::Private*>(data); + Q_ASSERT(p->plasmavirtualdesktopmanagement == org_kde_plasma_virtual_desktop_management); + if (rows == 0) { + return; + } + p->rows = rows; + emit p->q->rowsChanged(rows); +} + void PlasmaVirtualDesktopManagement::Private::doneCallback(void *data, org_kde_plasma_virtual_desktop_management *org_kde_plasma_virtual_desktop_management) { auto p = reinterpret_cast<PlasmaVirtualDesktopManagement::Private*>(data); @@ -253,6 +267,11 @@ return d->desktops; } +quint32 PlasmaVirtualDesktopManagement::rows() const +{ + return d->rows; +} + const org_kde_plasma_virtual_desktop_listener PlasmaVirtualDesktop::Private::s_listener = { idCallback, nameCallback, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/client/plasmavirtualdesktop.h new/kwayland-5.55.0/src/client/plasmavirtualdesktop.h --- old/kwayland-5.54.0/src/client/plasmavirtualdesktop.h 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/client/plasmavirtualdesktop.h 2019-02-02 18:24:11.000000000 +0100 @@ -143,6 +143,12 @@ */ QList <PlasmaVirtualDesktop *> desktops() const; + /** + * @returns How many rows the virtual desktops should be laid out into + * @since 5.55 + */ + quint32 rows() const; + operator org_kde_plasma_virtual_desktop_management*(); operator org_kde_plasma_virtual_desktop_management*() const; @@ -160,6 +166,12 @@ void desktopRemoved(const QString &id); /** + * Emitted when the number of rows of virtual desktops has been changed by the server + * @since 5.55 + */ + void rowsChanged(quint32 rows); + + /** * This event is sent after all other properties has been * sent after binding to the desktop manager object and after any * other property changes done after that. This allows diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/client/protocols/plasma-virtual-desktop.xml new/kwayland-5.55.0/src/client/protocols/plasma-virtual-desktop.xml --- old/kwayland-5.54.0/src/client/protocols/plasma-virtual-desktop.xml 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/client/protocols/plasma-virtual-desktop.xml 2019-02-02 18:24:11.000000000 +0100 @@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. ]]></copyright> -<interface name="org_kde_plasma_virtual_desktop_management" version="1"> +<interface name="org_kde_plasma_virtual_desktop_management" version="2"> <request name="get_virtual_desktop"> <description summary="get the org_kde_plasma_virtual_desktop interface for a desktop"> Given the id of a particular virtual desktop, get the corresponding org_kde_plasma_virtual_desktop which represents only the desktop with that id; @@ -62,6 +62,10 @@ atomic, even if they happen via multiple events. </description> </event> + + <event name="rows" since="2"> + <arg name="rows" type="uint" summary="Number of rows the virtual desktops are laid out into."/> + </event> </interface> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/client/registry.cpp new/kwayland-5.55.0/src/client/registry.cpp --- old/kwayland-5.54.0/src/client/registry.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/client/registry.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -176,7 +176,7 @@ &Registry::plasmaShellRemoved }}, {Registry::Interface::PlasmaVirtualDesktopManagement, { - 1, + 2, QByteArrayLiteral("org_kde_plasma_virtual_desktop_management"), &org_kde_plasma_virtual_desktop_management_interface, &Registry::plasmaVirtualDesktopManagementAnnounced, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/client/shell.cpp new/kwayland-5.55.0/src/client/shell.cpp --- old/kwayland-5.54.0/src/client/shell.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/client/shell.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -363,6 +363,16 @@ wl_shell_surface_resize(d->surface, *seat, serial, wlEdge); } +void ShellSurface::setTitle(const QString &title) +{ + wl_shell_surface_set_title(d->surface, title.toUtf8().constData()); +} + +void ShellSurface::setWindowClass(const QByteArray &windowClass) +{ + wl_shell_surface_set_class(d->surface, windowClass.constData()); +} + QSize ShellSurface::size() const { return d->size; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/client/shell.h new/kwayland-5.55.0/src/client/shell.h --- old/kwayland-5.54.0/src/client/shell.h 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/client/shell.h 2019-02-02 18:24:11.000000000 +0100 @@ -289,6 +289,27 @@ void requestResize(Seat *seat, quint32 serial, Qt::Edges edges); /** + * Sets a short title for the surface. + * + * This string may be used to identify the surface in a task bar, window list, or other user + * interface elements provided by the compositor. + * + * @since 5.55 + **/ + void setTitle(const QString &title); + + /** + * Sets a window class for the surface. + * + * The surface class identifies the general class of applications to which the surface belongs. + * A common convention is to use the file name (or the full path if it is a non-standard location) + * of the application's .desktop file as the class. + * + * @since 5.55 + **/ + void setWindowClass(const QByteArray &windowClass); + + /** * Creates a ShellSurface for the given @p window. * This is an integration feature for QtWayland. On non-wayland platforms this method returns * @c nullptr as well as for not created QWindows. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/server/display.cpp new/kwayland-5.55.0/src/server/display.cpp --- old/kwayland-5.54.0/src/server/display.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/server/display.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -84,6 +84,7 @@ wl_event_loop *loop = nullptr; QString socketName = QStringLiteral("wayland-0"); bool running = false; + bool automaticSocketNaming = false; QList<OutputInterface*> outputs; QList<OutputDeviceInterface*> outputdevices; QVector<SeatInterface*> seats; @@ -161,13 +162,39 @@ return d->socketName; } +void Display::setAutomaticSocketNaming(bool automaticSocketNaming) +{ + if (d->automaticSocketNaming == automaticSocketNaming) { + return; + } + d->automaticSocketNaming = automaticSocketNaming; + emit automaticSocketNamingChanged(automaticSocketNaming); +} + +bool Display::automaticSocketNaming() const +{ + return d->automaticSocketNaming; +} + void Display::start(StartMode mode) { Q_ASSERT(!d->running); Q_ASSERT(!d->display); d->display = wl_display_create(); if (mode == StartMode::ConnectToSocket) { - if (wl_display_add_socket(d->display, qPrintable(d->socketName)) != 0) { + if (d->automaticSocketNaming) { + const char *socket = wl_display_add_socket_auto(d->display); + if (socket == nullptr) { + qCWarning(KWAYLAND_SERVER) << "Failed to create Wayland socket"; + return; + } + + const QString newEffectiveSocketName = QString::fromUtf8(socket); + if (d->socketName != newEffectiveSocketName) { + d->socketName = newEffectiveSocketName; + emit socketNameChanged(d->socketName); + } + } else if (wl_display_add_socket(d->display, qPrintable(d->socketName)) != 0) { qCWarning(KWAYLAND_SERVER) << "Failed to create Wayland socket"; return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/server/display.h new/kwayland-5.55.0/src/server/display.h --- old/kwayland-5.54.0/src/server/display.h 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/server/display.h 2019-02-02 18:24:11.000000000 +0100 @@ -100,14 +100,28 @@ { Q_OBJECT Q_PROPERTY(QString socketName READ socketName WRITE setSocketName NOTIFY socketNameChanged) + Q_PROPERTY(bool automaticSocketNaming READ automaticSocketNaming WRITE setAutomaticSocketNaming NOTIFY automaticSocketNamingChanged) Q_PROPERTY(bool running READ isRunning NOTIFY runningChanged) public: explicit Display(QObject *parent = nullptr); virtual ~Display(); + /** + * Sets the basename of the socket to @p name. If @p name is empty, it will use + * wl_display_add_socket_auto to get a free socket with a filename "wayland-%d". + **/ void setSocketName(const QString &name); QString socketName() const; + /** + * If automaticSocketNaming is true, the manually set socketName is ignored + * and it will use wl_display_add_socket_auto on start to get a free socket with + * a filename "wayland-%d" instead. The effective socket is written into socketName. + * @since 5.55 + **/ + void setAutomaticSocketNaming(bool automaticSocketNaming); + bool automaticSocketNaming() const; + quint32 serial(); quint32 nextSerial(); @@ -316,6 +330,7 @@ Q_SIGNALS: void socketNameChanged(const QString&); + void automaticSocketNamingChanged(bool); void runningChanged(bool); void aboutToTerminate(); void clientConnected(KWayland::Server::ClientConnection*); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/server/outputconfiguration_interface.cpp new/kwayland-5.55.0/src/server/outputconfiguration_interface.cpp --- old/kwayland-5.54.0/src/server/outputconfiguration_interface.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/server/outputconfiguration_interface.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -287,6 +287,9 @@ void OutputConfigurationInterface::Private::sendApplied() { + if (!resource) { + return; + } org_kde_kwin_outputconfiguration_send_applied(resource); } @@ -299,6 +302,9 @@ void OutputConfigurationInterface::Private::sendFailed() { + if (!resource) { + return; + } org_kde_kwin_outputconfiguration_send_failed(resource); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/server/plasmavirtualdesktop_interface.cpp new/kwayland-5.55.0/src/server/plasmavirtualdesktop_interface.cpp --- old/kwayland-5.54.0/src/server/plasmavirtualdesktop_interface.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/server/plasmavirtualdesktop_interface.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -91,7 +91,7 @@ static const quint32 s_version; }; -const quint32 PlasmaVirtualDesktopManagementInterface::Private::s_version = 1; +const quint32 PlasmaVirtualDesktopManagementInterface::Private::s_version = 2; #ifndef DOXYGEN_SHOULD_SKIP_THIS const struct org_kde_plasma_virtual_desktop_management_interface PlasmaVirtualDesktopManagementInterface::Private::s_interface = { @@ -165,6 +165,11 @@ for (auto it = desktops.constBegin(); it != desktops.constEnd(); ++it) { org_kde_plasma_virtual_desktop_management_send_desktop_created(resource, (*it)->id().toUtf8().constData(), i++); } + + if (wl_resource_get_version(resource) >= ORG_KDE_PLASMA_VIRTUAL_DESKTOP_MANAGEMENT_ROWS_SINCE_VERSION) { + org_kde_plasma_virtual_desktop_management_send_rows(resource, rows); + } + org_kde_plasma_virtual_desktop_management_send_done(resource); } @@ -190,6 +195,24 @@ return reinterpret_cast<Private*>(d.data()); } +void PlasmaVirtualDesktopManagementInterface::setRows(quint32 rows) +{ + Q_D(); + + if (rows == 0 || d->rows == rows) { + return; + } + + d->rows = rows; + + for (auto it = d->resources.constBegin(); it != d->resources.constEnd(); ++it) { + if (wl_resource_get_version(*it) < ORG_KDE_PLASMA_VIRTUAL_DESKTOP_MANAGEMENT_ROWS_SINCE_VERSION) { + continue; + } + org_kde_plasma_virtual_desktop_management_send_rows(*it, rows); + } +} + PlasmaVirtualDesktopInterface *PlasmaVirtualDesktopManagementInterface::desktop(const QString &id) { Q_D(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/server/plasmavirtualdesktop_interface.h new/kwayland-5.55.0/src/server/plasmavirtualdesktop_interface.h --- old/kwayland-5.54.0/src/server/plasmavirtualdesktop_interface.h 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/server/plasmavirtualdesktop_interface.h 2019-02-02 18:24:11.000000000 +0100 @@ -46,9 +46,10 @@ virtual ~PlasmaVirtualDesktopManagementInterface(); /** - * Sets a new layout for this desktop grid. + * Sets how many rows the virtual desktops should be laid into + * @since 5.55 */ - void setLayout(quint32 rows, quint32 columns); + void setRows(quint32 rows); /** * @returns A desktop identified uniquely by this id. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/src/server/seat_interface.cpp new/kwayland-5.55.0/src/server/seat_interface.cpp --- old/kwayland-5.54.0/src/server/seat_interface.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/src/server/seat_interface.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -1346,7 +1346,7 @@ qint32 SeatInterface::touchDown(const QPointF &globalPosition) { Q_D(); - const qint32 id = d->globalTouch.ids.isEmpty() ? 0 : d->globalTouch.ids.last() + 1; + const qint32 id = d->globalTouch.ids.isEmpty() ? 0 : d->globalTouch.ids.lastKey() + 1; const qint32 serial = display()->nextSerial(); const auto pos = globalPosition - d->globalTouch.focus.offset; for (auto it = d->globalTouch.focus.touchs.constBegin(), end = d->globalTouch.focus.touchs.constEnd(); it != end; ++it) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.54.0/tests/xdgtest.cpp new/kwayland-5.55.0/tests/xdgtest.cpp --- old/kwayland-5.54.0/tests/xdgtest.cpp 2019-01-04 22:44:52.000000000 +0100 +++ new/kwayland-5.55.0/tests/xdgtest.cpp 2019-02-02 18:24:11.000000000 +0100 @@ -121,8 +121,16 @@ Q_ASSERT(m_surface); m_xdgShellSurface = m_xdgShell->createSurface(m_surface, this); Q_ASSERT(m_xdgShellSurface); - connect(m_xdgShellSurface, &XdgShellSurface::sizeChanged, this, &XdgTest::render); - render(); + connect(m_xdgShellSurface, &XdgShellSurface::configureRequested, this, [this](const QSize &size, KWayland::Client::XdgShellSurface::States states, int serial) { + Q_UNUSED(size); + Q_UNUSED(states); + m_xdgShellSurface->ackConfigure(serial); + render(); + }); + + m_xdgShellSurface->setTitle(QStringLiteral("Test Window")); + + m_surface->commit(); } ); connect(registry, &Registry::seatAnnounced, this,
