Files
absinthe/src/layer-surface.c
T

54 lines
1.6 KiB
C
Raw Normal View History

2026-05-16 21:59:36 +07:00
#include <wlr/types/wlr_layer_shell_v1.h>
#include "focus.h"
#include "layer.h"
2026-05-06 21:46:54 +07:00
#include "types.h"
2026-05-14 18:16:40 +07:00
void layer_surface_map(struct wl_listener *listener, void *data)
{
2026-05-14 18:16:40 +07:00
UNUSED(listener);
UNUSED(data);
}
2026-05-06 21:46:54 +07:00
2026-05-14 18:16:40 +07:00
void layer_surface_unmap(struct wl_listener *listener, void *data)
{
2026-05-14 18:16:40 +07:00
UNUSED(data);
2026-05-16 21:59:36 +07:00
absn_layer_surface *layer_surface = wl_container_of(listener, layer_surface, unmap);
if (layer_surface->wlr->surface == layer_surface->server->seat->keyboard_state.focused_surface)
focus_toplevel(focus_get_topmost(layer_surface->server));
}
2026-05-06 21:46:54 +07:00
2026-05-14 18:16:40 +07:00
void layer_surface_commit(struct wl_listener *listener, void *data)
{
2026-05-14 18:16:40 +07:00
UNUSED(data);
2026-05-16 21:59:36 +07:00
absn_layer_surface *layer_surface = wl_container_of(listener, layer_surface, commit);
struct wlr_layer_surface_v1 *surface = layer_surface->wlr;
wlr_layer_surface_v1_configure(surface, surface->pending.desired_width, surface->pending.desired_height);
layer_arrange(layer_surface->output);
}
2026-05-06 21:46:54 +07:00
2026-05-14 18:16:40 +07:00
void layer_surface_new_popup(struct wl_listener *listener, void *data)
{
2026-05-14 18:16:40 +07:00
UNUSED(listener);
UNUSED(data);
}
2026-05-10 20:06:05 +07:00
2026-05-14 18:16:40 +07:00
void layer_surface_destroy(struct wl_listener *listener, void *data)
2026-05-10 20:06:05 +07:00
{
2026-05-14 18:16:40 +07:00
UNUSED(data);
absn_layer_surface *layer_surface = wl_container_of(listener, layer_surface, destroy);
2026-05-10 20:06:05 +07:00
2026-05-14 18:16:40 +07:00
wl_list_remove(&layer_surface->link);
wl_list_remove(&layer_surface->map.link);
wl_list_remove(&layer_surface->unmap.link);
wl_list_remove(&layer_surface->commit.link);
wl_list_remove(&layer_surface->new_popup.link);
wl_list_remove(&layer_surface->destroy.link);
wlr_scene_node_destroy(&layer_surface->scene_tree->node);
2026-05-10 20:06:05 +07:00
2026-05-14 18:16:40 +07:00
free(layer_surface);
2026-05-10 20:06:05 +07:00
}