desktop-shell: Make activate() take a view instead of surface

In preparation for further refactorings.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
dev
Jonas Ådahl 11 years ago
parent 90c90b205f
commit 1fa6dedb82
  1. 6
      desktop-shell/exposay.c
  2. 20
      desktop-shell/shell.c
  3. 2
      desktop-shell/shell.h

@ -162,7 +162,7 @@ exposay_highlight_surface(struct desktop_shell *shell,
shell->exposay.column_current = esurface->column; shell->exposay.column_current = esurface->column;
shell->exposay.cur_output = esurface->eoutput; 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; shell->exposay.focus_current = view;
} }
@ -570,10 +570,10 @@ exposay_transition_inactive(struct desktop_shell *shell, int switch_focus)
* animating back the old state and then immediately transitioning * animating back the old state and then immediately transitioning
* to the new. */ * to the new. */
if (switch_focus && shell->exposay.focus_current) if (switch_focus && shell->exposay.focus_current)
activate(shell, shell->exposay.focus_current->surface, activate(shell, shell->exposay.focus_current,
shell->exposay.seat, true); shell->exposay.seat, true);
else if (shell->exposay.focus_prev) else if (shell->exposay.focus_prev)
activate(shell, shell->exposay.focus_prev->surface, activate(shell, shell->exposay.focus_prev,
shell->exposay.seat, true); shell->exposay.seat, true);
wl_list_for_each(esurface, &shell->exposay.surface_list, link) wl_list_for_each(esurface, &shell->exposay.surface_list, link)

@ -817,7 +817,8 @@ focus_state_surface_destroy(struct wl_listener *listener, void *data)
struct focus_state, struct focus_state,
surface_destroy_listener); surface_destroy_listener);
struct desktop_shell *shell; struct desktop_shell *shell;
struct weston_surface *main_surface, *next; struct weston_surface *main_surface;
struct weston_view *next;
struct weston_view *view; struct weston_view *view;
main_surface = weston_surface_get_main_surface(state->keyboard_focus); main_surface = weston_surface_get_main_surface(state->keyboard_focus);
@ -830,13 +831,13 @@ focus_state_surface_destroy(struct wl_listener *listener, void *data)
if (is_focus_view(view)) if (is_focus_view(view))
continue; continue;
next = view->surface; next = view;
break; break;
} }
/* if the focus was a sub-surface, activate its main surface */ /* if the focus was a sub-surface, activate its main surface */
if (main_surface != state->keyboard_focus) if (main_surface != state->keyboard_focus)
next = main_surface; next = get_default_view(main_surface);
shell = state->seat->compositor->shell_interface.shell; shell = state->seat->compositor->shell_interface.shell;
if (next) { if (next) {
@ -2014,10 +2015,10 @@ busy_cursor_grab_button(struct weston_pointer_grab *base,
struct weston_seat *seat = pointer->seat; struct weston_seat *seat = pointer->seat;
if (shsurf && button == BTN_LEFT && state) { 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); surface_move(shsurf, pointer, false);
} else if (shsurf && button == BTN_RIGHT && state) { } 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); surface_rotate(shsurf, pointer);
} }
} }
@ -5161,9 +5162,10 @@ lower_fullscreen_layer(struct desktop_shell *shell,
} }
void 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_seat *seat, bool configure)
{ {
struct weston_surface *es = view->surface;
struct weston_surface *main_surface; struct weston_surface *main_surface;
struct focus_state *state; struct focus_state *state;
struct workspace *ws; struct workspace *ws;
@ -5239,7 +5241,7 @@ 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;
activate(shell, focus_view->surface, seat, true); activate(shell, focus_view, seat, true);
} }
static void static void
@ -5713,7 +5715,7 @@ map(struct desktop_shell *shell, struct shell_surface *shsurf,
if (shell->locked) if (shell->locked)
break; break;
wl_list_for_each(seat, &compositor->seat_list, link) wl_list_for_each(seat, &compositor->seat_list, link)
activate(shell, shsurf->surface, seat, true); activate(shell, shsurf->view, seat, true);
break; break;
case SHELL_SURFACE_POPUP: case SHELL_SURFACE_POPUP:
case SHELL_SURFACE_NONE: case SHELL_SURFACE_NONE:
@ -6129,7 +6131,7 @@ switcher_destroy(struct switcher *switcher)
} }
if (switcher->current) if (switcher->current)
activate(switcher->shell, switcher->current->surface, activate(switcher->shell, switcher->current,
keyboard->seat, true); keyboard->seat, true);
wl_list_remove(&switcher->listener.link); wl_list_remove(&switcher->listener.link);
weston_keyboard_end_grab(keyboard); weston_keyboard_end_grab(keyboard);

@ -235,7 +235,7 @@ lower_fullscreen_layer(struct desktop_shell *shell,
struct weston_output *lowering_output); struct weston_output *lowering_output);
void 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_seat *seat, bool configure);
void void

Loading…
Cancel
Save