shell: Don't send extra configure events on click
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 <derekf@osg.samsung.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
This commit is contained in:
committed by
Bryce Harrington
parent
f6c854ef80
commit
bbde643ecd
@@ -5156,6 +5156,7 @@ activate_binding(struct weston_seat *seat,
|
|||||||
struct desktop_shell *shell,
|
struct desktop_shell *shell,
|
||||||
struct weston_view *focus_view)
|
struct weston_view *focus_view)
|
||||||
{
|
{
|
||||||
|
struct focus_state *state;
|
||||||
struct weston_surface *focus;
|
struct weston_surface *focus;
|
||||||
struct weston_surface *main_surface;
|
struct weston_surface *main_surface;
|
||||||
|
|
||||||
@@ -5168,6 +5169,13 @@ activate_binding(struct weston_seat *seat,
|
|||||||
if (get_shell_surface_type(main_surface) == SHELL_SURFACE_NONE)
|
if (get_shell_surface_type(main_surface) == SHELL_SURFACE_NONE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
state = ensure_focus_state(shell, seat);
|
||||||
|
if (state == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (state->keyboard_focus == focus)
|
||||||
|
return;
|
||||||
|
|
||||||
activate(shell, focus, seat, true);
|
activate(shell, focus, seat, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user