Don't hardcode offered dnd types in window.c
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 30 Nov 2010 19:01:07 +0000 (14:01 -0500)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 30 Nov 2010 19:01:07 +0000 (14:01 -0500)
clients/dnd.c
clients/window.c
clients/window.h

index dedf353..d0f2081 100644 (file)
@@ -477,6 +477,7 @@ dnd_button_handler(struct window *window,
        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);
@@ -497,8 +498,11 @@ dnd_button_handler(struct window *window,
                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);
        }
 }
 
index f720bf8..a3874e1 100644 (file)
@@ -988,20 +988,18 @@ input_get_input_device(struct input *input)
 }
 
 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
index 7b96704..74e95b6 100644 (file)
@@ -222,9 +222,11 @@ display_set_drag_offer_handler(struct display *display,
                               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);