input: Activate view no matter the keyboard focus

Activate a view even though it effectively may already be active.
Without this, in later patches, it won't be possibe to track what view
was activated by clicking last, as a view which surface already had
keyboard focus, won't be activated.

To keep avoiding sending xdg_surface.configure events, only change the
keyboard focus if the focus actually changed.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
This commit is contained in:
Jonas Ådahl 2016-03-15 20:28:51 +08:00
parent a884024eea
commit ef8e1c31e3
2 changed files with 1 additions and 9 deletions

View File

@ -5223,7 +5223,6 @@ 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;
@ -5236,13 +5235,6 @@ 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);
}

View File

@ -2762,7 +2762,7 @@ weston_seat_set_keyboard_focus(struct weston_seat *seat,
struct weston_compositor *compositor = seat->compositor;
struct weston_keyboard *keyboard = weston_seat_get_keyboard(seat);
if (keyboard) {
if (keyboard && keyboard->focus != surface) {
weston_keyboard_set_focus(keyboard, surface);
wl_data_device_set_keyboard_focus(seat);
}