This seems like a simple refactor has merit independently, and could probably land any time...
Reviewed-By: Derek Foreman <der...@osg.samsung.com> On 13/05/15 05:26 AM, Jonas Ådahl wrote: > Signed-off-by: Jonas Ådahl <jad...@gmail.com> > --- > desktop-shell/shell.c | 37 ++++++++++++++++++------------------- > 1 file changed, 18 insertions(+), 19 deletions(-) > > diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c > index c66a976..ff17b04 100644 > --- a/desktop-shell/shell.c > +++ b/desktop-shell/shell.c > @@ -1393,14 +1393,28 @@ workspace_has_only(struct workspace *ws, struct > weston_surface *surface) > } > > static void > +surface_keyboard_focus_lost(struct weston_surface *surface) > +{ > + struct weston_compositor *compositor = surface->compositor; > + struct weston_seat *seat; > + struct weston_surface *focus; > + > + wl_list_for_each(seat, &compositor->seat_list, link) { > + if (!seat->keyboard) > + continue; > + focus = weston_surface_get_main_surface(seat->keyboard->focus); > + if (focus == surface) > + weston_keyboard_set_focus(seat->keyboard, NULL); > + } > +} > + > +static void > move_surface_to_workspace(struct desktop_shell *shell, > struct shell_surface *shsurf, > uint32_t workspace) > { > struct workspace *from; > struct workspace *to; > - struct weston_seat *seat; > - struct weston_surface *focus; > struct weston_view *view; > > if (workspace == shell->workspaces.current) > @@ -1424,14 +1438,7 @@ move_surface_to_workspace(struct desktop_shell *shell, > shell_surface_update_child_surface_layers(shsurf); > > drop_focus_state(shell, from, view->surface); > - wl_list_for_each(seat, &shell->compositor->seat_list, link) { > - if (!seat->keyboard) > - continue; > - > - focus = weston_surface_get_main_surface(seat->keyboard->focus); > - if (focus == view->surface) > - weston_keyboard_set_focus(seat->keyboard, NULL); > - } > + surface_keyboard_focus_lost(view->surface); > > weston_view_damage_below(view); > } > @@ -2665,8 +2672,6 @@ set_minimized(struct weston_surface *surface) > { > struct shell_surface *shsurf; > struct workspace *current_ws; > - struct weston_seat *seat; > - struct weston_surface *focus; > struct weston_view *view; > > view = get_default_view(surface); > @@ -2682,13 +2687,7 @@ set_minimized(struct weston_surface *surface) > weston_layer_entry_insert(&shsurf->shell->minimized_layer.view_list, > &view->layer_link); > > drop_focus_state(shsurf->shell, current_ws, view->surface); > - wl_list_for_each(seat, &shsurf->shell->compositor->seat_list, link) { > - if (!seat->keyboard) > - continue; > - focus = weston_surface_get_main_surface(seat->keyboard->focus); > - if (focus == view->surface) > - weston_keyboard_set_focus(seat->keyboard, NULL); > - } > + surface_keyboard_focus_lost(surface); > > shell_surface_update_child_surface_layers(shsurf); > weston_view_damage_below(view); > _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel