[PATCH weston v4 04/20] desktop-shell: Make activate() take a view instead of surface

Jonas Ådahl jadahl at gmail.com
Tue Nov 17 02:10:50 PST 2015


In preparation for further refactorings.

Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
---
 desktop-shell/exposay.c |  6 +++---
 desktop-shell/shell.c   | 20 +++++++++++---------
 desktop-shell/shell.h   |  2 +-
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/desktop-shell/exposay.c b/desktop-shell/exposay.c
index 8bd55fb..1e43240 100644
--- a/desktop-shell/exposay.c
+++ b/desktop-shell/exposay.c
@@ -162,7 +162,7 @@ exposay_highlight_surface(struct desktop_shell *shell,
 	shell->exposay.column_current = esurface->column;
 	shell->exposay.cur_output = esurface->eoutput;
 
-	activate(shell, view->surface, shell->exposay.seat, false);
+	activate(shell, view, shell->exposay.seat, false);
 	shell->exposay.focus_current = view;
 }
 
@@ -558,10 +558,10 @@ exposay_transition_inactive(struct desktop_shell *shell, int switch_focus)
 	 * animating back the old state and then immediately transitioning
 	 * to the new. */
 	if (switch_focus && shell->exposay.focus_current)
-		activate(shell, shell->exposay.focus_current->surface,
+		activate(shell, shell->exposay.focus_current,
 		         shell->exposay.seat, true);
 	else if (shell->exposay.focus_prev)
-		activate(shell, shell->exposay.focus_prev->surface,
+		activate(shell, shell->exposay.focus_prev,
 		         shell->exposay.seat, true);
 
 	wl_list_for_each(esurface, &shell->exposay.surface_list, link)
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 0f473f8..1c84a88 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -807,7 +807,8 @@ focus_state_surface_destroy(struct wl_listener *listener, void *data)
 						 struct focus_state,
 						 surface_destroy_listener);
 	struct desktop_shell *shell;
-	struct weston_surface *main_surface, *next;
+	struct weston_surface *main_surface;
+	struct weston_view *next;
 	struct weston_view *view;
 
 	main_surface = weston_surface_get_main_surface(state->keyboard_focus);
@@ -820,13 +821,13 @@ focus_state_surface_destroy(struct wl_listener *listener, void *data)
 		if (is_focus_view(view))
 			continue;
 
-		next = view->surface;
+		next = view;
 		break;
 	}
 
 	/* if the focus was a sub-surface, activate its main surface */
 	if (main_surface != state->keyboard_focus)
-		next = main_surface;
+		next = get_default_view(main_surface);
 
 	shell = state->seat->compositor->shell_interface.shell;
 	if (next) {
@@ -1988,10 +1989,10 @@ busy_cursor_grab_button(struct weston_pointer_grab *base,
 	struct weston_seat *seat = pointer->seat;
 
 	if (shsurf && button == BTN_LEFT && state) {
-		activate(shsurf->shell, shsurf->surface, seat, true);
+		activate(shsurf->shell, shsurf->view, seat, true);
 		surface_move(shsurf, pointer, false);
 	} else if (shsurf && button == BTN_RIGHT && state) {
-		activate(shsurf->shell, shsurf->surface, seat, true);
+		activate(shsurf->shell, shsurf->view, seat, true);
 		surface_rotate(shsurf, pointer);
 	}
 }
@@ -5033,9 +5034,10 @@ lower_fullscreen_layer(struct desktop_shell *shell,
 }
 
 void
-activate(struct desktop_shell *shell, struct weston_surface *es,
+activate(struct desktop_shell *shell, struct weston_view *view,
 	 struct weston_seat *seat, bool configure)
 {
+	struct weston_surface *es = view->surface;
 	struct weston_surface *main_surface;
 	struct focus_state *state;
 	struct workspace *ws;
@@ -5111,7 +5113,7 @@ activate_binding(struct weston_seat *seat,
 	if (get_shell_surface_type(main_surface) == SHELL_SURFACE_NONE)
 		return;
 
-	activate(shell, focus_view->surface, seat, true);
+	activate(shell, focus_view, seat, true);
 }
 
 static void
@@ -5561,7 +5563,7 @@ map(struct desktop_shell *shell, struct shell_surface *shsurf,
 		if (shell->locked)
 			break;
 		wl_list_for_each(seat, &compositor->seat_list, link)
-			activate(shell, shsurf->surface, seat, true);
+			activate(shell, shsurf->view, seat, true);
 		break;
 	case SHELL_SURFACE_POPUP:
 	case SHELL_SURFACE_NONE:
@@ -5970,7 +5972,7 @@ switcher_destroy(struct switcher *switcher)
 	}
 
 	if (switcher->current)
-		activate(switcher->shell, switcher->current->surface,
+		activate(switcher->shell, switcher->current,
 			 keyboard->seat, true);
 	wl_list_remove(&switcher->listener.link);
 	weston_keyboard_end_grab(keyboard);
diff --git a/desktop-shell/shell.h b/desktop-shell/shell.h
index 2ef23f4..153ede5 100644
--- a/desktop-shell/shell.h
+++ b/desktop-shell/shell.h
@@ -226,7 +226,7 @@ lower_fullscreen_layer(struct desktop_shell *shell,
 		       struct weston_output *lowering_output);
 
 void
-activate(struct desktop_shell *shell, struct weston_surface *es,
+activate(struct desktop_shell *shell, struct weston_view *view,
 	 struct weston_seat *seat, bool configure);
 
 void
-- 
2.4.3



More information about the wayland-devel mailing list