struct item *item;
struct rectangle rectangle;
struct dnd_drag *dnd_drag;
+ struct wl_drag *drag;
window_get_child_rectangle(dnd->window, &rectangle);
input_get_position(input, &x, &y);
dnd_drag->translucent =
create_drag_cursor(dnd_drag, item, x, y, 0.2);
- window_start_drag(window, input, time,
- &drag_listener, dnd_drag);
+ drag = window_create_drag(window);
+ wl_drag_offer(drag, "text/plain");
+ wl_drag_offer(drag, "text/html");
+ window_activate_drag(drag, window, input, time);
+ wl_drag_add_listener(drag, &drag_listener, dnd_drag);
}
}
}
struct wl_drag *
-window_start_drag(struct window *window, struct input *input, uint32_t time,
- const struct wl_drag_listener *listener, void *data)
+window_create_drag(struct window *window)
{
- struct wl_drag *drag;
-
cairo_device_flush (window->display->device);
- drag = wl_shell_create_drag(window->display->shell);
- wl_drag_offer(drag, "text/plain");
- wl_drag_offer(drag, "text/html");
- wl_drag_activate(drag, window->surface, input->input_device, time);
- wl_drag_add_listener(drag, listener, data);
+ return wl_shell_create_drag(window->display->shell);
+}
- return drag;
+void
+window_activate_drag(struct wl_drag *drag, struct window *window,
+ struct input *input, uint32_t time)
+{
+ wl_drag_activate(drag, window->surface, input->input_device, time);
}
static void
display_drag_offer_handler_t handler);
struct wl_drag *
-window_start_drag(struct window *window, struct input *input, uint32_t time,
- const struct wl_drag_listener *listener, void *data);
+window_create_drag(struct window *window);
+void
+window_activate_drag(struct wl_drag *drag, struct window *window,
+ struct input *input, uint32_t time);
void
input_get_position(struct input *input, int32_t *x, int32_t *y);