From 679f716088845c54fff3e0c9a9d318a3e9e94e2e Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Tue, 27 Mar 2012 16:44:57 -0400 Subject: dnd: Damage surface after attaching new buffer --- clients/dnd.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/clients/dnd.c b/clients/dnd.c index 2b0faaa..91a7365 100644 --- a/clients/dnd.c +++ b/clients/dnd.c @@ -53,6 +53,7 @@ struct dnd_drag { uint32_t time; struct item *item; int x_offset, y_offset; + int width, height; const char *mime_type; struct wl_surface *drag_surface; @@ -256,6 +257,8 @@ data_source_target(void *data, buffer = display_get_buffer_for_surface(dnd->display, surface); wl_surface_attach(dnd_drag->drag_surface, buffer, 0, 0); + wl_surface_damage(dnd_drag->drag_surface, 0, 0, + dnd_drag->width, dnd_drag->height); } static void @@ -347,6 +350,8 @@ create_drag_cursor(struct dnd_drag *dnd_drag, dnd_drag->hotspot_x = pointer_width + x - item->x; dnd_drag->hotspot_y = pointer_height + y - item->y; + dnd_drag->width = rectangle.width; + dnd_drag->height = rectangle.height; return surface; } @@ -418,6 +423,8 @@ dnd_button_handler(struct widget *widget, buffer = display_get_buffer_for_surface(dnd->display, dnd_drag->translucent); wl_surface_attach(dnd_drag->drag_surface, buffer, -dnd_drag->hotspot_x, -dnd_drag->hotspot_y); + wl_surface_damage(dnd_drag->drag_surface, 0, 0, + dnd_drag->width, dnd_drag->height); window_schedule_redraw(dnd->window); } -- cgit v1.2.3