layer_surface instead of wlr_layer_surface
and scene_layer whenever a wlr_scene_tree is related to layer surfaces
RLFTJX3XEX5I2N5JDVBBYRN4INKH7MQGKC5SNJ4QFR243TRYKDXQC OY5A3YOGYG5YL6N6TN23MX2FUNNO37NPC3EVHI5ZIVWU7PEJ4GZQC FDYFRVFUHGSJGJADBI2ZYK3Z267B743K3ECC2YLDAJHLL6JSDCPAC WUDWDK2NHZOCYXL47W4MVORSJGSFFDTX77GGUI6ZUKTANMXO4NDQC KBUAWXU4LRZ6KIJBCQTB323GIM5FUMFF6EZBEHM7S6TN47NOYQPAC E7Z3BN6ENCQFHULDS2A4YRPPKIFKJFUKK7FHYSQCYBBNCZC6HT2QC M7QE4HK3R5GUCJO64CHIRXFGNATUF4O2DSTZYS6UI4U23CQFU2UQC 65Z3JJ5JKJELZEI3CKQ7Q3TIQVSSH66CJJQUJUZIQYPSJ67ETHJQC VCNLR5X75OAXVKPZQHF5RUZ7BONBUC6RPGO2NZEUD3FZ7TEVL66AC DADSQJFKYX6U5JOHSHJWWDSUFC7ZWSZVHFMEKPZEXKPELMEQBL2QC 7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC 3C2GQZEGV3UP22LMLNH4RBI5MXXTV447DBIOVMBPE7T6QZKINYXQC T65KVJWUY3RYRWBFG5DP4V4NID4VO3MM6IOFYPM2IJKR6NCD7YDQC VAB2INZYCWFZNUZFYFTVJAPBORPDF3XS47YVOKZIJA23WDHVAVGQC BFWKVWAIUKHCZVRA62GW6QZUEUKQLW365HUWIVKTEIPJNJSOZBAQC A7352YC3UYSPZMWFOCK6ZBWS3D5LLBKXAKZBWATPYIYA27COQWJQC 7ATQKTE47BQ5QI66Z5VS2BSPGBQFUN3ZJUDC6NLMH7WCZAH437HAC OOK6V7XAN2JATIPAI4YNE7PUSA5NTJYEYFTAVQ5Q2BBDBTHE6UCQC DW7VJBQRTDYTT5YCBH2MUZYMNXZOM7H4PU7HQBTMDFM3RFVKAOQAC GBPNNVSTRYC5VBC46GLT5YXUTF5BVIBHORH2EIJFZJ7E6D6SUDDAC JTZBFGPCDJDJWECXH2LLXY3SUAQNCP45HLJQKG3V7XGTPLD634WAC 2MNEWEUDXLYJSIGGRQF55ZYEJCOC7TQ7IHV3SJC5A7NAQ5X5NA7AC TOFCZFUYVBVEBHMKVG6G5MKCAEF2QCQ4GKMKGQUSJRLGLDZEJF4QC CFF6MYUDSO3VVMMCGJR7RPDBSLKDVR3AROFY5ZE33VG52ER2WYWAC WRXZXFDNBE3RXUV7VRWD54QHRWMSVHPKE4NKDOIFQLD6WZ73MQPAC NWKV3CJZDJGETIBG7P2QHOQVHSEK5J2YZAYKL4OVWZEIWHK6LINAC 24ZMBWYLMODPBAVLT4XNOSETHQXVLXNASYXUIGG2435IT7WIZC5AC 3HPB5ODTWGOTRGDML5LCC4AZVICLRBRBTTPUAWMNU5NBMQ76P5QAC YEHKNAGHE3ETYE5A25SSFTEM565LOM3BX3TN3QDQLLTVQMAJJ5XQC 5CZ5FAO42JN4HNYZZBFI7DOE7GQDSLLFDNJNYAZVYS7YMTT3HEYAC BZ3O64R2O6IPKBT2U3OIJFSNNHG2PEASPL7AFOTBHRIWA57U4E5AC MJZ6RCUUOK7R2RMXPXMLRWBAEM6234D2IS7RGPHAE5UN2S64GLGAC FYDLLRIKT6KKP7RO33MOK6PUO25JQZIRP7WKVNLVHFX2KPOHQKYAC 7IMYSKQFQPSZFD4KEJYCBTBZOBHNYLFYGXIKEX2EKA5HQCGT6M3AC FBQVZZRREDB25JOCCUYA26ZRGBQWFEIK4SU4EXLC5TVFFBBSFJOAC 34TOMU43GSVTGKBSPBPRFLQYCJZ35HV2BNHKUAJ6CPE4XZLADCLQC 65EUVCVN2KFRX4U6SASDU6GMUT2TKDQUGQQAE6V7OQKFERN3RSEQC EQRGODLKSVSPFSUZU7BV5ER72U4QS4ATSBKV544XXQVKKTOSC7EAC RYEGK6T65T2JERD364BNLAFJO2KERYHN52HB6EKRPOY3G6VCJSEQC SD5WQI5HDQYZKW67M2QOHKLEDL23WIQN22MAABS2ORQDLIJS5GWQC wl_list_for_each(layersurface, list, link) {struct wlr_layer_surface_v1 *wlr_layer_surface = layersurface->layer_surface;struct wlr_layer_surface_v1_state *state = &wlr_layer_surface->current;
wl_list_for_each(l, list, link) {struct wlr_layer_surface_v1 *layer_surface = l->layer_surface;struct wlr_layer_surface_v1_state *state = &layer_surface->current;
wlr_scene_layer_surface_v1_configure(layersurface->scene_layer, &full_area, usable_area);wlr_scene_node_set_position(&layersurface->popups->node,layersurface->scene->node.x, layersurface->scene->node.y);layersurface->geom.x = layersurface->scene->node.x;layersurface->geom.y = layersurface->scene->node.y;
wlr_scene_layer_surface_v1_configure(l->scene_layer, &full_area, usable_area);wlr_scene_node_set_position(&l->popups->node, l->scene->node.x, l->scene->node.y);l->geom.x = l->scene->node.x;l->geom.y = l->scene->node.y;
wl_list_for_each_reverse(layersurface,&m->layers[layers_above_shell[i]], link) {if (!locked && layersurface->layer_surface->current.keyboard_interactive&& layersurface->mapped) {
wl_list_for_each_reverse(l, &m->layers[layers_above_shell[i]], link) {if (!locked && l->layer_surface->current.keyboard_interactive && l->mapped) {
LayerSurface *layersurface = wl_container_of(listener, layersurface, surface_commit);struct wlr_layer_surface_v1 *wlr_layer_surface = layersurface->layer_surface;struct wlr_scene_tree *layer = layers[layermap[wlr_layer_surface->current.layer]];
LayerSurface *l = wl_container_of(listener, l, surface_commit);struct wlr_layer_surface_v1 *layer_surface = l->layer_surface;struct wlr_scene_tree *scene_layer = layers[layermap[layer_surface->current.layer]];
if (layer != layersurface->scene->node.parent) {wlr_scene_node_reparent(&layersurface->scene->node, layer);wl_list_remove(&layersurface->link);wl_list_insert(&layersurface->mon->layers[wlr_layer_surface->current.layer],&layersurface->link);wlr_scene_node_reparent(&layersurface->popups->node, (wlr_layer_surface->current.layer< ZWLR_LAYER_SHELL_V1_LAYER_TOP ? layers[LyrTop] : layer));
if (scene_layer != l->scene->node.parent) {wlr_scene_node_reparent(&l->scene->node, scene_layer);wl_list_remove(&l->link);wl_list_insert(&l->mon->layers[layer_surface->current.layer], &l->link);wlr_scene_node_reparent(&l->popups->node, (layer_surface->current.layer< ZWLR_LAYER_SHELL_V1_LAYER_TOP ? layers[LyrTop] : scene_layer));
struct wlr_layer_surface_v1 *wlr_layer_surface = data;LayerSurface *layersurface;
struct wlr_layer_surface_v1 *layer_surface = data;LayerSurface *l;struct wlr_surface *surface = layer_surface->surface;struct wlr_scene_tree *scene_layer = layers[layermap[layer_surface->pending.layer]];
if (!wlr_layer_surface->output&& !(wlr_layer_surface->output = selmon ? selmon->wlr_output : NULL)) {wlr_layer_surface_v1_destroy(wlr_layer_surface);
if (!layer_surface->output&& !(layer_surface->output = selmon ? selmon->wlr_output : NULL)) {wlr_layer_surface_v1_destroy(layer_surface);
layersurface = wlr_layer_surface->data = ecalloc(1, sizeof(*layersurface));layersurface->type = LayerShell;LISTEN(&wlr_layer_surface->surface->events.commit,&layersurface->surface_commit, commitlayersurfacenotify);LISTEN(&wlr_layer_surface->events.destroy, &layersurface->destroy,destroylayersurfacenotify);LISTEN(&wlr_layer_surface->surface->events.map, &layersurface->map,maplayersurfacenotify);LISTEN(&wlr_layer_surface->surface->events.unmap, &layersurface->unmap,unmaplayersurfacenotify);
l = layer_surface->data = ecalloc(1, sizeof(*l));l->type = LayerShell;LISTEN(&surface->events.commit, &l->surface_commit, commitlayersurfacenotify);LISTEN(&surface->events.map, &l->map, maplayersurfacenotify);LISTEN(&surface->events.unmap, &l->unmap, unmaplayersurfacenotify);LISTEN(&layer_surface->events.destroy, &l->destroy, destroylayersurfacenotify);
layersurface->layer_surface = wlr_layer_surface;layersurface->mon = wlr_layer_surface->output->data;layersurface->scene_layer = wlr_scene_layer_surface_v1_create(l, wlr_layer_surface);layersurface->scene = layersurface->scene_layer->tree;layersurface->popups = wlr_layer_surface->surface->data = wlr_scene_tree_create(l);
l->layer_surface = layer_surface;l->mon = layer_surface->output->data;l->scene_layer = wlr_scene_layer_surface_v1_create(scene_layer, layer_surface);l->scene = l->scene_layer->tree;l->popups = surface->data = wlr_scene_tree_create(scene_layer);l->scene->node.data = l;
wl_list_insert(&layersurface->mon->layers[wlr_layer_surface->pending.layer],&layersurface->link);wlr_surface_send_enter(wlr_layer_surface->surface, wlr_layer_surface->output);
wl_list_insert(&l->mon->layers[layer_surface->pending.layer],&l->link);wlr_surface_send_enter(surface, layer_surface->output);
old_state = wlr_layer_surface->current;wlr_layer_surface->current = wlr_layer_surface->pending;layersurface->mapped = 1;arrangelayers(layersurface->mon);wlr_layer_surface->current = old_state;
old_state = layer_surface->current;layer_surface->current = layer_surface->pending;l->mapped = 1;arrangelayers(l->mon);layer_surface->current = old_state;
wl_list_remove(&layersurface->link);wl_list_remove(&layersurface->destroy.link);wl_list_remove(&layersurface->map.link);wl_list_remove(&layersurface->unmap.link);wl_list_remove(&layersurface->surface_commit.link);wlr_scene_node_destroy(&layersurface->scene->node);wlr_scene_node_destroy(&layersurface->popups->node);free(layersurface);
wl_list_remove(&l->link);wl_list_remove(&l->destroy.link);wl_list_remove(&l->map.link);wl_list_remove(&l->unmap.link);wl_list_remove(&l->surface_commit.link);wlr_scene_node_destroy(&l->scene->node);wlr_scene_node_destroy(&l->popups->node);free(l);
if (layersurface->layer_surface->output&& (layersurface->mon = layersurface->layer_surface->output->data))arrangelayers(layersurface->mon);if (layersurface->layer_surface->surface ==seat->keyboard_state.focused_surface)
if (l->layer_surface->output && (l->mon = l->layer_surface->output->data))arrangelayers(l->mon);if (l->layer_surface->surface == seat->keyboard_state.focused_surface)