Commit 35f1062e42ee5ba57b2e91bf932cb422581379ab Parent: 04f47ac77b7cb1e6dde281eb18693841e0a95fb6 Author: mcol <mcol@posteo.net> Date: 2021-01-20 20:52:15 +0000 Committer: mcol <mcol@posteo.net> Committed: 2021-01-20 20:52:15 +0000 Complete fullscreen implementation
src/shell.h Modified
@@ -7,7 +7,7 @@ void map_view(struct view *view); void focus_view(struct view *view, struct wlr_surface *surface); void fullscreen_xdg_surface( - struct server *server, struct wlr_xdg_surface *xdg_surface, struct wlr_output *output + struct view *view, struct wlr_xdg_surface *xdg_surface, struct wlr_output *output ); void set_up_shell(struct server *server);
src/shell.c Modified
@@ -44,16 +44,17 @@ void fullscreen_xdg_surface( - struct server *server, struct wlr_xdg_surface *xdg_surface, struct wlr_output *output + struct view *view, struct wlr_xdg_surface *xdg_surface, struct wlr_output *output ) { + struct server *server = view->server; + struct wlr_box *saved_geo = &server->current_desk->fullscreened_saved_geo; + struct wlr_xdg_surface *prev_surface = server->current_desk->fullscreened; if (prev_surface) { wlr_xdg_toplevel_set_fullscreen(prev_surface, false); - wlr_xdg_toplevel_set_size( - prev_surface, - server->current_desk->fullscreened_saved_geo.width, - server->current_desk->fullscreened_saved_geo.height - ); + wlr_xdg_toplevel_set_size(prev_surface, saved_geo->width, saved_geo->height); + view->x = saved_geo->x; + view->y = saved_geo->y; } if (prev_surface == xdg_surface) { @@ -73,8 +74,11 @@ } server->current_desk->fullscreened = xdg_surface; - server->current_desk->fullscreened_saved_geo.width = xdg_surface->geometry.width; - server->current_desk->fullscreened_saved_geo.height = xdg_surface->geometry.height; + saved_geo->x = view->x; + saved_geo->y = view->y; + view->x = view->y = 0; + saved_geo->width = xdg_surface->geometry.width; + saved_geo->height = xdg_surface->geometry.height; wlr_xdg_toplevel_set_fullscreen(xdg_surface, true); wlr_xdg_toplevel_set_size(xdg_surface, output->width, output->height); } @@ -144,7 +148,7 @@ void on_request_fullscreen(struct wl_listener *listener, void *data) { struct wlr_xdg_toplevel_set_fullscreen_event *event = data; struct view *view = wl_container_of(listener, view, request_fullscreen_listener); - fullscreen_xdg_surface(view->server, event->surface, event->output); + fullscreen_xdg_surface(view, event->surface, event->output); }
src/action.c Modified
@@ -197,5 +197,6 @@ if (!surface) return; struct wlr_xdg_surface *xdg_surface = wlr_xdg_surface_from_wlr_surface(surface); - fullscreen_xdg_surface(server, xdg_surface, NULL); + struct view *view = wl_container_of(server->current_desk->views.next, view, link); + fullscreen_xdg_surface(view, xdg_surface, NULL); }
readme.rst Modified
@@ -18,6 +18,5 @@ - xdg-decoration protocol - functions to shift focus - functions to shift desk view - - handle fullscreening - pinch gestures for desk zooming - draw rect with mouse when zoomed out to set new view