layers: support popups

This commit is contained in:
Johan Malm 2021-10-20 22:32:46 +01:00
parent 08a54bd3f5
commit 174e82a608
3 changed files with 345 additions and 15 deletions

View file

@ -1,13 +1,18 @@
#ifndef __LABWC_LAYERS_H
#define __LABWC_LAYERS_H
#include <wayland-server.h>
#include <wlr/types/wlr_surface.h>
#include <wlr/types/wlr_layer_shell_v1.h>
struct server;
enum layer_parent {
LAYER_PARENT_LAYER,
LAYER_PARENT_POPUP,
};
struct lab_layer_surface {
struct wlr_layer_surface_v1 *layer_surface;
struct server *server;
struct wl_list link;
struct wl_listener destroy;
@ -15,9 +20,37 @@ struct lab_layer_surface {
struct wl_listener unmap;
struct wl_listener surface_commit;
struct wl_listener output_destroy;
struct wl_listener new_popup;
struct wl_listener new_subsurface;
struct wlr_box geo;
bool mapped;
/* TODO: add extent and layer */
struct server *server;
};
struct lab_layer_popup {
struct wlr_xdg_popup *wlr_popup;
enum layer_parent parent_type;
union {
struct lab_layer_surface *parent_layer;
struct lab_layer_popup *parent_popup;
};
struct wl_listener map;
struct wl_listener unmap;
struct wl_listener destroy;
struct wl_listener commit;
struct wl_listener new_popup;
};
struct lab_layer_subsurface {
struct wlr_subsurface *wlr_subsurface;
struct lab_layer_surface *layer_surface;
struct wl_listener map;
struct wl_listener unmap;
struct wl_listener destroy;
struct wl_listener commit;
};
void layers_init(struct server *server);