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.
This commit is contained in:
parent
5085a75dee
commit
1b4b61ace3
|
@ -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…
Reference in New Issue