shell: Don't send extra configure events on click

The click_to_activate handler fires on every mouse click for a surface
so let's be a little quicker to early return if you're clicking on the
surface that already has activation.

This prevents (among other side effects) the sending of two xdg_configure
events for every mouse click.

This should also make having two seats with keyboards behave in the same
way as a single seat.  Previously the second seat could have a keyboard
focus on the surface and prevent some of the extra processing (including
the extra configure events) from taking place.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
This commit is contained in:
Derek Foreman 2015-12-10 13:08:01 -06:00 committed by Bryce Harrington
parent f6c854ef80
commit bbde643ecd

View file

@ -5156,6 +5156,7 @@ activate_binding(struct weston_seat *seat,
struct desktop_shell *shell,
struct weston_view *focus_view)
{
struct focus_state *state;
struct weston_surface *focus;
struct weston_surface *main_surface;
@ -5168,6 +5169,13 @@ activate_binding(struct weston_seat *seat,
if (get_shell_surface_type(main_surface) == SHELL_SURFACE_NONE)
return;
state = ensure_focus_state(shell, seat);
if (state == NULL)
return;
if (state->keyboard_focus == focus)
return;
activate(shell, focus, seat, true);
}