1*4882a593SmuzhiyunFrom b9389e19424edf3f44f1f1c886377c61b612e850 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Tue, 12 May 2020 15:35:40 +0800
4*4882a593SmuzhiyunSubject: [PATCH 24/93] input: Fix losing focus during re-attaching keyboard
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunCall notify_keyboard_focus_out() when releasing the last keyboard to
7*4882a593Smuzhiyunpair with the notify_keyboard_focus_in().
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun libweston/input.c | 7 +++++--
12*4882a593Smuzhiyun 1 file changed, 5 insertions(+), 2 deletions(-)
13*4882a593Smuzhiyun
14*4882a593Smuzhiyundiff --git a/libweston/input.c b/libweston/input.c
15*4882a593Smuzhiyunindex 8c9cabc..352aab6 100644
16*4882a593Smuzhiyun--- a/libweston/input.c
17*4882a593Smuzhiyun+++ b/libweston/input.c
18*4882a593Smuzhiyun@@ -3400,8 +3400,11 @@ weston_seat_release_keyboard(struct weston_seat *seat)
19*4882a593Smuzhiyun 	seat->keyboard_device_count--;
20*4882a593Smuzhiyun 	assert(seat->keyboard_device_count >= 0);
21*4882a593Smuzhiyun 	if (seat->keyboard_device_count == 0) {
22*4882a593Smuzhiyun-		weston_keyboard_set_focus(seat->keyboard_state, NULL);
23*4882a593Smuzhiyun-		weston_keyboard_cancel_grab(seat->keyboard_state);
24*4882a593Smuzhiyun+		/* Pair with notify_keyboard_focus_in() */
25*4882a593Smuzhiyun+		seat->keyboard_device_count = 1;
26*4882a593Smuzhiyun+		notify_keyboard_focus_out(seat);
27*4882a593Smuzhiyun+		seat->keyboard_device_count = 0;
28*4882a593Smuzhiyun+
29*4882a593Smuzhiyun 		weston_keyboard_reset_state(seat->keyboard_state);
30*4882a593Smuzhiyun 		seat_send_updated_caps(seat);
31*4882a593Smuzhiyun 	}
32*4882a593Smuzhiyun--
33*4882a593Smuzhiyun2.20.1
34*4882a593Smuzhiyun
35