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 <der...@osg.samsung.com> --- Difference from v1: only shortcut the click handler, don't change the activate() function that's called on other binds (like alt-tab) desktop-shell/shell.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index 780902d..c8c441f 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -5101,6 +5101,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; @@ -5113,6 +5114,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); } -- 2.6.3 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel