33 void data_offer_accept(Resource *resource, uint32_t serial,
const QString &mime_type)
override;
34 void data_offer_receive(Resource *resource,
const QString &mime_type, int32_t fd)
override;
88 & ~(QtWaylandServer::wl_data_device_manager::dnd_action_copy | QtWaylandServer::wl_data_device_manager::dnd_action_move
89 | QtWaylandServer::wl_data_device_manager::dnd_action_ask)) {
90 wl_resource_post_error(resource->handle, error_invalid_action_mask,
"Invalid action mask");
94 if (preferred_action != QtWaylandServer::wl_data_device_manager::dnd_action_copy
95 && preferred_action != QtWaylandServer::wl_data_device_manager::dnd_action_move
96 && preferred_action != QtWaylandServer::wl_data_device_manager::dnd_action_ask
97 && preferred_action != QtWaylandServer::wl_data_device_manager::dnd_action_none) {
98 wl_resource_post_error(resource->handle, error_invalid_action,
"Invalid preferred action");
102 DataDeviceManagerInterface::DnDActions supportedActions;
103 if (dnd_actions & QtWaylandServer::wl_data_device_manager::dnd_action_copy) {
104 supportedActions |= DataDeviceManagerInterface::DnDAction::Copy;
106 if (dnd_actions & QtWaylandServer::wl_data_device_manager::dnd_action_move) {
107 supportedActions |= DataDeviceManagerInterface::DnDAction::Move;
109 if (dnd_actions & QtWaylandServer::wl_data_device_manager::dnd_action_ask) {
110 supportedActions |= DataDeviceManagerInterface::DnDAction::Ask;
114 if (preferred_action == QtWaylandServer::wl_data_device_manager::dnd_action_copy) {
115 preferredAction = DataDeviceManagerInterface::DnDAction::Copy;
116 }
else if (preferred_action == QtWaylandServer::wl_data_device_manager::dnd_action_move) {
117 preferredAction = DataDeviceManagerInterface::DnDAction::Move;
118 }
else if (preferred_action == QtWaylandServer::wl_data_device_manager::dnd_action_ask) {
119 preferredAction = DataDeviceManagerInterface::DnDAction::Ask;
134 if (d->resource()->version() < WL_DATA_OFFER_SOURCE_ACTIONS_SINCE_VERSION) {
137 uint32_t wlActions = QtWaylandServer::wl_data_device_manager::dnd_action_none;
138 const auto actions = d->source->supportedDragAndDropActions();
139 if (actions.testFlag(DataDeviceManagerInterface::DnDAction::Copy)) {
140 wlActions |= QtWaylandServer::wl_data_device_manager::dnd_action_copy;
142 if (actions.testFlag(DataDeviceManagerInterface::DnDAction::Move)) {
143 wlActions |= QtWaylandServer::wl_data_device_manager::dnd_action_move;
145 if (actions.testFlag(DataDeviceManagerInterface::DnDAction::Ask)) {
146 wlActions |= QtWaylandServer::wl_data_device_manager::dnd_action_ask;
148 d->send_source_actions(wlActions);
192 if (d->resource()->version() < WL_DATA_OFFER_ACTION_SINCE_VERSION) {
195 uint32_t wlAction = QtWaylandServer::wl_data_device_manager::dnd_action_none;
196 if (action == DataDeviceManagerInterface::DnDAction::Copy) {
197 wlAction = QtWaylandServer::wl_data_device_manager::dnd_action_copy;
198 }
else if (action == DataDeviceManagerInterface::DnDAction::Move) {
199 wlAction = QtWaylandServer::wl_data_device_manager::dnd_action_move;
200 }
else if (action == DataDeviceManagerInterface::DnDAction::Ask) {
201 wlAction = QtWaylandServer::wl_data_device_manager::dnd_action_ask;
203 d->send_action(wlAction);