window.c: Always set cursor after pointer enter

If the cursor didn't change since last time we had pointer focus we just
wouldn't change it.  But whoever had pointer focus in the mean time could
have changed it, so make sure we always set the cursor after pointer enter.
Kristian Høgsberg 12 years ago
parent 1ce6a2a2b3
commit 11f600d82e
  1. 5
      clients/window.c

@ -194,6 +194,7 @@ struct input {
struct wl_surface *pointer_surface; struct wl_surface *pointer_surface;
uint32_t modifiers; uint32_t modifiers;
uint32_t pointer_enter_serial; uint32_t pointer_enter_serial;
uint32_t cursor_serial;
float sx, sy; float sx, sy;
struct wl_list link; struct wl_list link;
@ -2439,10 +2440,12 @@ static const struct wl_callback_listener pointer_surface_listener = {
void void
input_set_pointer_image(struct input *input, int pointer) input_set_pointer_image(struct input *input, int pointer)
{ {
if (pointer == input->current_cursor) if (pointer == input->current_cursor &&
input->pointer_enter_serial == input->cursor_serial)
return; return;
input->current_cursor = pointer; input->current_cursor = pointer;
input->cursor_serial = input->pointer_enter_serial;
if (!input->cursor_frame_cb) if (!input->cursor_frame_cb)
pointer_surface_frame_callback(input, NULL, 0); pointer_surface_frame_callback(input, NULL, 0);
} }

Loading…
Cancel
Save