400dd31db6
An AbstractDragTarget is introduced. This contains either the DataDevice we are dragging to or an Xwl bridge. We set this on Seat along with the active surface. In future this also allows getting rid of the move filter.
66 lines
1.2 KiB
C++
66 lines
1.2 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_XWAYLAND_INTERFACE
|
|
#define KWIN_XWL_XWAYLAND_INTERFACE
|
|
|
|
#include <kwinglobals.h>
|
|
|
|
#include <QObject>
|
|
#include <QPoint>
|
|
|
|
class QProcess;
|
|
|
|
namespace KWaylandServer
|
|
{
|
|
class AbstractDropHandler;
|
|
}
|
|
|
|
namespace KWin
|
|
{
|
|
class Toplevel;
|
|
|
|
namespace Xwl
|
|
{
|
|
enum class DragEventReply {
|
|
// event should be ignored by the filter
|
|
Ignore,
|
|
// event is filtered out
|
|
Take,
|
|
// event should be handled as a Wayland native one
|
|
Wayland,
|
|
};
|
|
} // namespace Xwl
|
|
|
|
class KWIN_EXPORT XwaylandInterface : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
static XwaylandInterface *self();
|
|
|
|
virtual Xwl::DragEventReply dragMoveFilter(Toplevel *target, const QPoint &pos) = 0;
|
|
virtual QProcess *process() const = 0;
|
|
virtual KWaylandServer::AbstractDropHandler *xwlDropHandler() = 0;
|
|
|
|
protected:
|
|
explicit XwaylandInterface(QObject *parent = nullptr);
|
|
~XwaylandInterface() override;
|
|
|
|
private:
|
|
Q_DISABLE_COPY(XwaylandInterface)
|
|
};
|
|
|
|
inline XwaylandInterface *xwayland()
|
|
{
|
|
return XwaylandInterface::self();
|
|
}
|
|
|
|
} // namespace KWin
|
|
|
|
#endif
|