Commit ef78040a4e031d7806aa7e791e8750160b6f1e5f Parent: 2bfdee0aec288528ae72c44308bf490ee353f7a3 Author: mcol <mcol@posteo.net> Date: 2020-11-08 17:47:19 +0000 Committer: mcol <mcol@posteo.net> Committed: 2020-11-08 17:47:19 +0000 move views wl_lists for desks, thereby implementing workspaces
src/types.h Modified
@@ -28,7 +28,6 @@ struct wlr_xdg_shell *shell; struct wl_listener new_xdg_surface_listener; - struct wl_list views; struct wl_list desks; struct desk *current_desk; @@ -74,6 +73,7 @@ struct desk { struct wl_list link; struct server *server; + struct wl_list views; float background[4]; int x, y; int index;
src/shell.c Modified
@@ -34,7 +34,7 @@ struct wlr_keyboard *keyboard = wlr_seat_get_keyboard(seat); /* Move the view to the front */ wl_list_remove(&view->link); - wl_list_insert(&server->views, &view->link); + wl_list_insert(&server->current_desk->views, &view->link); /* Activate the new surface */ wlr_xdg_toplevel_set_activated(view->surface, true); wlr_seat_keyboard_notify_enter( @@ -124,7 +124,7 @@ view->request_resize_listener.notify = on_request_resize; wl_signal_add(&toplevel->events.request_resize, &view->request_resize_listener); - wl_list_insert(&server->views, &view->link); + wl_list_insert(&server->current_desk->views, &view->link); } @@ -135,6 +135,7 @@ struct desk *desk = calloc(1, sizeof(struct desk)); wl_list_insert(server->desks.prev, &desk->link); desk->server = server; + wl_list_init(&desk->views); assign_colour("#5D479D", desk->background); desk->index = num_desks; num_desks++; @@ -170,7 +171,6 @@ void set_up_shell(struct server *server) { - wl_list_init(&server->views); server->shell = wlr_xdg_shell_create(server->display); server->new_xdg_surface_listener.notify = on_new_xdg_surface; wl_signal_add(&server->shell->events.new_surface, &server->new_xdg_surface_listener);
src/output.c Modified
@@ -63,7 +63,7 @@ wlr_renderer_clear(renderer, output->server->current_desk->background); struct view *view; - wl_list_for_each_reverse(view, &output->server->views, link) { + wl_list_for_each_reverse(view, &output->server->current_desk->views, link) { struct render_data rdata = { .output = output->wlr_output, .view = view,
src/input.c Modified
@@ -87,7 +87,7 @@ double *sx, double *sy ) { struct view *view; - wl_list_for_each(view, &server->views, link) { + wl_list_for_each(view, &server->current_desk->views, link) { if (view_at(view, lx, ly, surface, sx, sy)) { return view; }