shell: set the popup grab button as pressed only if it actually is

This ensures the popup_grab.initial_up field isn't reset to 0
if the popup was not opened because of a mouse press but because
of moving the mouse with a popup already open. Not doing so will
make the first click outside the client area go ignored.
dev
Giulio Camuffo 12 years ago committed by Kristian Høgsberg
parent 5085a75dee
commit 1b4b61ace3
  1. 6
      src/shell.c

@ -2008,7 +2008,11 @@ add_popup_grab(struct shell_surface *shsurf, struct shell_seat *shseat)
if (wl_list_empty(&shseat->popup_grab.surfaces_list)) {
shseat->popup_grab.client = shsurf->surface->surface.resource.client;
shseat->popup_grab.grab.interface = &popup_grab_interface;
shseat->popup_grab.initial_up = 0;
/* We must make sure here that this popup was opened after
* a mouse press, and not just by moving around with other
* popups already open. */
if (shseat->seat->pointer.button_count > 0)
shseat->popup_grab.initial_up = 0;
wl_pointer_start_grab(seat->pointer, &shseat->popup_grab.grab);
}

Loading…
Cancel
Save