if (!input) return;
- if ((input->grab) && (input->grab_button))
+ if ((input->grab) && (input->grab_button) && (input->grab_count))
_ecore_wl_input_mouse_up_send(input, input->grab, 0, input->grab_button,
input->grab_timestamp);
input->grab = NULL;
input->grab_button = 0;
+ input->grab_count = 0;
}
/* NB: This function should be called just before shell move and shell resize
_ecore_wl_input_mouse_up_send(input, input->pointer_focus,
0, button, timestamp);
- input->grab_count--;
+ if (input->grab_count) input->grab_count--;
if ((input->grab) && (input->grab_button == button) &&
(!state) && (!input->grab_count))
ecore_wl_input_ungrab(input);
input->display->serial = serial;
_ecore_wl_input_mouse_up_send(input, input->touch_focus, id, BTN_LEFT, timestamp);
- input->grab_count--;
+ if (input->grab_count) input->grab_count--;
if ((input->grab) && (input->grab_button == BTN_LEFT) &&
(!input->grab_count))
ecore_wl_input_ungrab(input);