/* * dnd.h * Copyright (C) 2026 Kovid Goyal * * Distributed under terms of the GPL3 license. */ #pragma once #include "state.h" void dnd_query(Window *w, uint32_t client_id); void drop_register_window(Window *w, const uint8_t *payload, size_t payload_sz, bool on, uint32_t client_id, bool more); void drop_register_machine_id(Window *w, const uint8_t *machine_id, size_t sz); void drop_move_on_child(Window *w, const char **mimes, size_t num_mimes, bool is_drop); void drop_left_child(Window *w); void drop_free_data(Window *w); void drop_send_einval(Window *w, const char *desc); void drop_handle_dir_request(Window *w, uint32_t handle_id, int32_t entry_num); void drop_enqueue_request(Window *w, int32_t cell_x, int32_t cell_y, int32_t pixel_y, uint32_t operation); void drop_set_status(Window *w, int operation, const char *payload, size_t payload_sz, bool more); size_t drop_update_mimes(Window *w, const char **allowed_mimes, size_t allowed_mimes_count); void drop_dispatch_data(Window *w, const char *mime_type, const char *data, ssize_t sz); void drop_finish(Window *w); typedef enum { DRAG_NOTIFY_ACCEPTED, DRAG_NOTIFY_ACTION_CHANGED, DRAG_NOTIFY_DROPPED, DRAG_NOTIFY_FINISHED } DragNotifyType; void drag_free_offer(Window *w, bool remove_remote_items); void drag_add_mimes(Window *w, int allowed_operations, uint32_t client_id, const char *data, size_t sz, bool has_more); void drag_add_pre_sent_data(Window *w, unsigned idx, const uint8_t *payload, size_t sz); void drag_add_image(Window *w, unsigned idx_, int fmt, int width, int height, int opacity, const uint8_t *payload, size_t sz); void drag_change_image(Window *w, unsigned idx); void drag_start(Window *w); void drag_notify(Window *w, DragNotifyType type); int drag_free_data(Window *w, const char *mime_type, const char* data, size_t sz); const char* drag_get_data(Window *w, const char *mime_type, size_t *sz, int *err_code); void drag_process_item_data(Window *w, size_t idx, int has_more, const uint8_t *payload, size_t payload_sz); void drag_remote_file_data(Window *w, int32_t x, int32_t y, int32_t X, int32_t Y, bool has_more, const uint8_t *payload, size_t payload_sz); void drag_start_offerring(Window *w, const char *client_machine_id, size_t sz); void drag_stop_offerring(Window *w); void drag_offer_start_to_child(Window *w, int32_t cell_x, int32_t cell_y, int32_t pixel_x, int32_t pixel_y);