@ -1518,10 +1518,10 @@ send_enter_to_resource_list(struct wl_list *list,
struct wl_resource * resource ;
struct wl_resource * resource ;
wl_resource_for_each ( resource , list ) {
wl_resource_for_each ( resource , list ) {
send_modifiers_to_resource ( keyboard , resource , serial ) ;
wl_keyboard_send_enter ( resource , serial ,
wl_keyboard_send_enter ( resource , serial ,
surface - > resource ,
surface - > resource ,
& keyboard - > keys ) ;
& keyboard - > keys ) ;
send_modifiers_to_resource ( keyboard , resource , serial ) ;
}
}
}
}
@ -2848,28 +2848,6 @@ static const struct wl_keyboard_interface keyboard_interface = {
keyboard_release
keyboard_release
} ;
} ;
static bool
should_send_modifiers_to_client ( struct weston_seat * seat ,
struct wl_client * client )
{
struct weston_keyboard * keyboard = weston_seat_get_keyboard ( seat ) ;
struct weston_pointer * pointer = weston_seat_get_pointer ( seat ) ;
if ( keyboard & &
keyboard - > focus & &
keyboard - > focus - > resource & &
wl_resource_get_client ( keyboard - > focus - > resource ) = = client )
return true ;
if ( pointer & &
pointer - > focus & &
pointer - > focus - > surface - > resource & &
wl_resource_get_client ( pointer - > focus - > surface - > resource ) = = client )
return true ;
return false ;
}
static void
static void
seat_get_keyboard ( struct wl_client * client , struct wl_resource * resource ,
seat_get_keyboard ( struct wl_client * client , struct wl_resource * resource ,
uint32_t id )
uint32_t id )
@ -2915,12 +2893,6 @@ seat_get_keyboard(struct wl_client *client, struct wl_resource *resource,
weston_keyboard_send_keymap ( keyboard , cr ) ;
weston_keyboard_send_keymap ( keyboard , cr ) ;
if ( should_send_modifiers_to_client ( seat , client ) ) {
send_modifiers_to_resource ( keyboard ,
cr ,
keyboard - > focus_serial ) ;
}
if ( keyboard - > focus & & keyboard - > focus - > resource & &
if ( keyboard - > focus & & keyboard - > focus - > resource & &
wl_resource_get_client ( keyboard - > focus - > resource ) = = client ) {
wl_resource_get_client ( keyboard - > focus - > resource ) = = client ) {
struct weston_surface * surface =
struct weston_surface * surface =
@ -2934,6 +2906,10 @@ seat_get_keyboard(struct wl_client *client, struct wl_resource *resource,
surface - > resource ,
surface - > resource ,
& keyboard - > keys ) ;
& keyboard - > keys ) ;
send_modifiers_to_resource ( keyboard ,
cr ,
keyboard - > focus_serial ) ;
/* If this is the first keyboard resource for this
/* If this is the first keyboard resource for this
* client . . . */
* client . . . */
if ( keyboard - > focus_resource_list . prev = =
if ( keyboard - > focus_resource_list . prev = =