[weston,v2,03/21] desktop-shell: Add surface_keyboard_focus_lost helper

Submitted by Jonas Ådahl on May 13, 2015, 10:26 a.m.

Details

Message ID 1431512802-6194-4-git-send-email-jadahl@gmail.com
State Accepted
Delegated to: Daniel Stone
Headers show

Not browsing as part of any series.

Commit Message

Jonas Ådahl May 13, 2015, 10:26 a.m.
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
---
 desktop-shell/shell.c | 37 ++++++++++++++++++-------------------
 1 file changed, 18 insertions(+), 19 deletions(-)

Patch hide | download patch | download mbox

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);

Comments

This seems like a simple refactor has merit independently, and could
probably land any time...

Reviewed-By: Derek Foreman <derekf@osg.samsung.com>

On 13/05/15 05:26 AM, Jonas Ådahl wrote:
> Signed-off-by: Jonas Ådahl <jadahl@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);
>