static const int item_padding = 16;
static const char flower_mime_type[] = "application/x-wayland-dnd-flower";
+static const char text_mime_type[] = "text/plain;charset=utf-8";
static struct item *
item_create(struct display *display, int x, int y, int seed)
{
struct dnd_flower_message dnd_flower_message;
struct dnd_drag *dnd_drag = data;
-
- dnd_flower_message.seed = dnd_drag->item->seed;
- dnd_flower_message.x_offset = dnd_drag->x_offset;
- dnd_flower_message.y_offset = dnd_drag->y_offset;
-
- if (write(fd, &dnd_flower_message, sizeof dnd_flower_message) < 0)
- abort();
+ char buffer[128];
+ int n;
+
+ if (strcmp(mime_type, flower_mime_type) == 0) {
+ dnd_flower_message.seed = dnd_drag->item->seed;
+ dnd_flower_message.x_offset = dnd_drag->x_offset;
+ dnd_flower_message.y_offset = dnd_drag->y_offset;
+
+ if (write(fd, &dnd_flower_message,
+ sizeof dnd_flower_message) < 0)
+ abort();
+ } else if (strcmp(mime_type, text_mime_type) == 0) {
+ n = snprintf(buffer, sizeof buffer, "seed=%d x=%d y=%d\n",
+ dnd_drag->item->seed,
+ dnd_drag->x_offset,
+ dnd_drag->y_offset);
+
+ if (write(fd, buffer, n) < 0)
+ abort();
+ }
close(fd);
}
&data_source_listener,
dnd_drag);
wl_data_source_offer(dnd_drag->data_source,
- "application/x-wayland-dnd-flower");
+ flower_mime_type);
wl_data_source_offer(dnd_drag->data_source,
- "text/plain; charset=utf-8");
+ text_mime_type);
}
wl_data_device_start_drag(input_get_data_device(input),