Use qt prefix variant of toplevel drag protocol

As this is what Qt now implements
This commit is contained in:
David Redondo 2023-08-17 15:58:58 +02:00 committed by David Edmundson
parent b336691b3e
commit 216a268a43
3 changed files with 29 additions and 29 deletions

View file

@ -218,8 +218,8 @@ ecm_add_qtwayland_server_protocol_kde(WaylandProtocols_xml
)
ecm_add_qtwayland_server_protocol_kde(WaylandProtocols_xml
PROTOCOL protocols/xdg-toplevel-drag-v1.xml
BASENAME xdg-toplevel-drag-v1
PROTOCOL protocols/qt-toplevel-drag-v1.xml
BASENAME qt-toplevel-drag-v1
)
target_sources(kwin PRIVATE

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<protocol name="xdg_toplevel_drag_v1">
<protocol name="qt_toplevel_drag_v1">
<copyright>
Copyright 2023 David Redondo &lt;kde@david-redondo.de&gt;
@ -24,7 +24,7 @@
DEALINGS IN THE SOFTWARE.
</copyright>
<interface name="xdg_toplevel_drag_manager_v1" version="1">
<interface name="qt_toplevel_drag_manager_v1" version="1">
<description summary="Move a window during a drag">
This protocol enhances normal drag and drop with the ability to move a
window at the same time. This allows having detachable parts of a window
@ -33,16 +33,16 @@
A typical workflow would be when the user starts dragging on top of a
detachable part of a window, the client would create a wl_data_source and
a xdg_toplevel_drag_v1 object and start the drag as normal via
a qt_toplevel_drag_v1 object and start the drag as normal via
wl_data_device.start_drag. Once the client determines that the detachable
window contents should be detached from the originating window, it creates
a new xdg_toplevel with these contents and issues a
xdg_toplevel_drag_v1.attach request. From now on the new window is moved
qt_toplevel_drag_v1.attach request. From now on the new window is moved
by the compositor during the drag as if the client called
xdg_toplevel.move.
Dragging an existing window is similar. The client creates a
xdg_toplevel_drag_v1 object and attaches the existing toplevel before
qt_toplevel_drag_v1 object and attaches the existing toplevel before
starting the drag.
Clients use the existing drag and drop mechanism to detect when a window
@ -60,9 +60,9 @@
only be done by creating a new major version of the extension.
</description>
<request name="get_xdg_toplevel_drag">
<description summary="get an xdg_toplevel_drag for a wl_data_source">
Create an xdg_toplevel_drag for a drag and drop operation that is going
<request name="get_qt_toplevel_drag">
<description summary="get an qt_toplevel_drag for a wl_data_source">
Create an qt_toplevel_drag for a drag and drop operation that is going
to be started with data_source.
This request can only be made on sources used in drag-and-drop, so it
@ -71,17 +71,17 @@
wl_data_device.set_selection will raise an invalid_source error.
Destroying data_source while a toplevel is attached to the
xdg_toplevel_drag is undefined.
qt_toplevel_drag is undefined.
</description>
<arg name="id" type="new_id" interface="xdg_toplevel_drag_v1"/>
<arg name="id" type="new_id" interface="qt_toplevel_drag_v1"/>
<arg name="data_source" type="object" interface="wl_data_source"/>
</request>
<request name="destroy" type="destructor">
<description summary="destroy the xdg_toplevel_drag_manager_v1 object">
Destroy this xdg_toplevel_drag_manager_v1 object. Other objects,
including xdg_toplevel_drag_v1 objects created by this factory, are not
<description summary="destroy the qt_toplevel_drag_manager_v1 object">
Destroy this qt_toplevel_drag_manager_v1 object. Other objects,
including qt_toplevel_drag_v1 objects created by this factory, are not
affected by this request.
</description>
</request>
@ -92,7 +92,7 @@
</enum>
</interface>
<interface name="xdg_toplevel_drag_v1" version="1">
<interface name="qt_toplevel_drag_v1" version="1">
<description summary="Object representing a toplevel move during a drag">
</description>
@ -119,8 +119,8 @@
</request>
<request name="destroy" type="destructor">
<description summary="destroy an xdg_toplevel_drag_v1 object">
Destroy this xdg_toplevel_drag_v1 object. This request must only be
<description summary="destroy an qt_toplevel_drag_v1 object">
Destroy this qt_toplevel_drag_v1 object. This request must only be
called after the underlying wl_data_source drag has ended, as indicated
by the dnd_drop_performed or cancelled events. In any other case an
ongoing_drag error is raised.

View file

@ -6,7 +6,7 @@
#include "xdgtopleveldrag_v1_interface.h"
#include <qwayland-server-xdg-toplevel-drag-v1.h>
#include <qwayland-server-qt-toplevel-drag-v1.h>
#include "dataoffer_interface.h"
#include "datasource_interface.h"
@ -25,11 +25,11 @@ namespace KWaylandServer
{
constexpr int version = 1;
class XdgToplevelDragV1InterfacePrivate : public QtWaylandServer::xdg_toplevel_drag_v1
class XdgToplevelDragV1InterfacePrivate : public QtWaylandServer::qt_toplevel_drag_v1
{
public:
XdgToplevelDragV1InterfacePrivate(wl_resource *resource, XdgToplevelDragV1Interface *q)
: xdg_toplevel_drag_v1(resource)
: qt_toplevel_drag_v1(resource)
, q(q)
{
}
@ -39,7 +39,7 @@ public:
QPoint pos;
private:
void xdg_toplevel_drag_v1_attach(Resource *resource, wl_resource *toplevelResource, int32_t x_offset, int32_t y_offset) override
void toplevel_drag_v1_attach(Resource *resource, wl_resource *toplevelResource, int32_t x_offset, int32_t y_offset) override
{
if (toplevel) {
wl_resource_post_error(resource->handle, error_toplevel_attached, "Valid toplevel already attached");
@ -53,11 +53,11 @@ private:
Q_EMIT q->toplevelChanged();
}
void xdg_toplevel_drag_v1_destroy_resource(Resource *resource) override
void toplevel_drag_v1_destroy_resource(Resource *resource) override
{
delete q;
}
void xdg_toplevel_drag_v1_destroy(Resource *resource) override
void toplevel_drag_v1_destroy(Resource *resource) override
{
if (!dataSource || dataSource->isDndCancelled() || dataSource->isDropPerformed()) {
wl_resource_destroy(resource->handle);
@ -91,26 +91,26 @@ QPoint XdgToplevelDragV1Interface::offset() const
return d->pos;
}
class XdgToplevelDragManagerV1InterfacePrivate : public QtWaylandServer::xdg_toplevel_drag_manager_v1
class XdgToplevelDragManagerV1InterfacePrivate : public QtWaylandServer::qt_toplevel_drag_manager_v1
{
public:
XdgToplevelDragManagerV1InterfacePrivate(XdgToplevelDragManagerV1Interface *q, Display *display)
: xdg_toplevel_drag_manager_v1(*display, version)
: qt_toplevel_drag_manager_v1(*display, version)
, q(q)
{
}
protected:
void xdg_toplevel_drag_manager_v1_destroy(Resource *resource) override
void toplevel_drag_manager_v1_destroy(Resource *resource) override
{
wl_resource_destroy(resource->handle);
}
void xdg_toplevel_drag_manager_v1_get_xdg_toplevel_drag(Resource *resource, uint32_t id, wl_resource *data_source) override
void toplevel_drag_manager_v1_get_qt_toplevel_drag(Resource *resource, uint32_t id, wl_resource *data_source) override
{
auto dataSource = DataSourceInterface::get(data_source);
wl_resource *xdg_toplevel_drag = wl_resource_create(resource->client(), &xdg_toplevel_drag_v1_interface, resource->version(), id);
wl_resource *xdg_toplevel_drag = wl_resource_create(resource->client(), &qt_toplevel_drag_v1_interface, resource->version(), id);
if (!xdg_toplevel_drag) {
wl_resource_post_no_memory(resource->handle);
return;