blob: 8da60ddd48ee67d58c94426cee5146ead94d805b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#pragma once
#include "../protocols/types/DataDevice.hpp"
#include <wayland-server-protocol.h>
#define XDND_VERSION 5
class CXWaylandSurface;
class CX11DataOffer : public IDataOffer {
public:
CX11DataOffer() = default;
~CX11DataOffer() = default;
virtual eDataSourceType type();
virtual SP<CWLDataOfferResource> getWayland();
virtual SP<CX11DataOffer> getX11();
virtual SP<IDataSource> getSource();
virtual void markDead();
WP<IDataSource> source;
WP<CX11DataOffer> self;
WP<CXWaylandSurface> xwaylandSurface;
bool dead = false;
bool accepted = false;
bool recvd = false;
uint32_t actions = 0;
};
class CX11DataSource : public IDataSource {
public:
CX11DataSource() = default;
~CX11DataSource() = default;
virtual std::vector<std::string> mimes();
virtual void send(const std::string& mime, uint32_t fd);
virtual void accepted(const std::string& mime);
virtual void cancelled();
virtual bool hasDnd();
virtual bool dndDone();
virtual void error(uint32_t code, const std::string& msg);
virtual void sendDndFinished();
virtual uint32_t actions(); // wl_data_device_manager.dnd_action
virtual eDataSourceType type();
virtual void sendDndDropPerformed();
virtual void sendDndAction(wl_data_device_manager_dnd_action a);
bool used = false;
bool dnd = true;
bool dndSuccess = false;
bool dropped = false;
WP<CX11DataSource> self;
std::vector<std::string> mimeTypes;
uint32_t supportedActions = 0;
};
class CX11DataDevice : public IDataDevice {
public:
CX11DataDevice() = default;
virtual SP<CWLDataDeviceResource> getWayland();
virtual SP<CX11DataDevice> getX11();
virtual void sendDataOffer(SP<IDataOffer> offer);
virtual void sendEnter(uint32_t serial, SP<CWLSurfaceResource> surf, const Vector2D& local, SP<IDataOffer> offer);
virtual void sendLeave();
virtual void sendMotion(uint32_t timeMs, const Vector2D& local);
virtual void sendDrop();
virtual void sendSelection(SP<IDataOffer> offer);
virtual eDataSourceType type();
WP<CX11DataDevice> self;
private:
WP<CXWaylandSurface> lastSurface;
WP<IDataOffer> lastOffer;
Vector2D lastSurfaceCoords;
uint32_t lastTime = 0;
};
|