diff --git a/compositor/shell.c b/compositor/shell.c index ec7df877..e32e8bcd 100644 --- a/compositor/shell.c +++ b/compositor/shell.c @@ -360,6 +360,13 @@ shell_surface_set_transient(struct wl_client *client, shsurf->type = SHELL_SURFACE_TRANSIENT; } +static struct wlsc_output * +get_default_output(struct wlsc_compositor *compositor) +{ + return container_of(compositor->output_list.next, + struct wlsc_output, link); +} + static void shell_surface_set_fullscreen(struct wl_client *client, struct wl_resource *resource) @@ -374,8 +381,7 @@ shell_surface_set_fullscreen(struct wl_client *client, /* FIXME: Fullscreen on first output */ /* FIXME: Handle output going away */ - output = container_of(es->compositor->output_list.next, - struct wlsc_output, link); + output = get_default_output(es->compositor); es->output = output; shsurf->saved_x = es->x; @@ -946,6 +952,9 @@ map(struct wlsc_shell *base, case SHELL_SURFACE_FULLSCREEN: center_on_output(surface, surface->fullscreen_output); break; + case SHELL_SURFACE_LOCK: + center_on_output(surface, get_default_output(compositor)); + break; default: ; }