From ef8e1c31e3ceed7d88819801aa29f96c370b53b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 15 Mar 2016 20:28:51 +0800 Subject: [PATCH] input: Activate view no matter the keyboard focus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Derek Foreman --- desktop-shell/shell.c | 8 -------- libweston/input.c | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index c72f801c..a1ef7dba 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -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); } diff --git a/libweston/input.c b/libweston/input.c index 396267d8..b9c79d49 100644 --- a/libweston/input.c +++ b/libweston/input.c @@ -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); }