dnd: Damage surface after attaching new buffer

dev
Kristian Høgsberg 13 years ago
parent a8ae8a9135
commit 679f716088
  1. 7
      clients/dnd.c

@ -53,6 +53,7 @@ struct dnd_drag {
uint32_t time; uint32_t time;
struct item *item; struct item *item;
int x_offset, y_offset; int x_offset, y_offset;
int width, height;
const char *mime_type; const char *mime_type;
struct wl_surface *drag_surface; struct wl_surface *drag_surface;
@ -256,6 +257,8 @@ data_source_target(void *data,
buffer = display_get_buffer_for_surface(dnd->display, surface); buffer = display_get_buffer_for_surface(dnd->display, surface);
wl_surface_attach(dnd_drag->drag_surface, buffer, 0, 0); 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 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_x = pointer_width + x - item->x;
dnd_drag->hotspot_y = pointer_height + y - item->y; dnd_drag->hotspot_y = pointer_height + y - item->y;
dnd_drag->width = rectangle.width;
dnd_drag->height = rectangle.height;
return surface; return surface;
} }
@ -418,6 +423,8 @@ dnd_button_handler(struct widget *widget,
buffer = display_get_buffer_for_surface(dnd->display, dnd_drag->translucent); buffer = display_get_buffer_for_surface(dnd->display, dnd_drag->translucent);
wl_surface_attach(dnd_drag->drag_surface, buffer, wl_surface_attach(dnd_drag->drag_surface, buffer,
-dnd_drag->hotspot_x, -dnd_drag->hotspot_y); -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); window_schedule_redraw(dnd->window);
} }

Loading…
Cancel
Save