kwin/src/xwl/drag.h
2021-06-03 09:04:26 +00:00

53 lines
956 B
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 <QPoint>
#include <QObject>
#include <xcb/xcb.h>
namespace KWin
{
class Toplevel;
namespace Xwl
{
enum class DragEventReply;
/**
* 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);
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