kwin/xwl/drag.h
Vlad Zahorodnii 1fb9f6f13a Switch to SPDX license markers
The main advantage of SPDX license identifiers over the traditional
license headers is that it's more difficult to overlook inappropriate
licenses for kwin, for example GPL 3. We also don't have to copy a
lot of boilerplate text.

In order to create this change, I ran licensedigger -r -c from the
toplevel source directory.
2020-08-07 19:57:56 +00:00

58 lines
1.3 KiB
C++

/********************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
SPDX-FileCopyrightText: 2019 Roman Gilg <subdiff@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*********************************************************************/
#ifndef KWIN_XWL_DRAG
#define KWIN_XWL_DRAG
#include <KWayland/Client/datadevicemanager.h>
#include <QPoint>
#include <xcb/xcb.h>
namespace KWin
{
class Toplevel;
namespace Xwl
{
enum class DragEventReply;
using DnDAction = KWayland::Client::DataDeviceManager::DnDAction;
/**
* An ongoing drag operation.
*/
class Drag : public QObject
{
Q_OBJECT
public:
explicit Drag(QObject *parent = nullptr);
~Drag() override;
static void sendClientMessage(xcb_window_t target, xcb_atom_t type, xcb_client_message_data_t *data);
static DnDAction atomToClientAction(xcb_atom_t atom);
static xcb_atom_t clientActionToAtom(DnDAction action);
virtual bool handleClientMessage(xcb_client_message_event_t *event) = 0;
virtual DragEventReply moveFilter(Toplevel *target, const QPoint &pos) = 0;
virtual bool end() = 0;
Q_SIGNALS:
void finish(Drag *self);
private:
Q_DISABLE_COPY(Drag)
};
} // namespace Xwl
} // namespace KWin
#endif