mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
Use the following logic: - Exclusive: Grant regardless of layer (previously it was only given if in top or overlay layers) AND grant if in the same or higher layer (nearer overlay) compared with other clients with exclusive interactivity. - On-demand: Grant only if no other layer-shell client has exclusive keyboard interactivity. Previously it was treated the same as exclusive. - None: Unset focus if the commit associated with the 'none' came from the currently focused layer. Previously it was just unset regardless.
43 lines
1 KiB
C
43 lines
1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
#ifndef LABWC_LAYERS_H
|
|
#define LABWC_LAYERS_H
|
|
#include <wayland-server.h>
|
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
|
|
|
struct server;
|
|
struct output;
|
|
struct seat;
|
|
|
|
struct lab_layer_surface {
|
|
struct wlr_scene_layer_surface_v1 *scene_layer_surface;
|
|
struct server *server;
|
|
|
|
bool mapped;
|
|
|
|
struct wl_listener map;
|
|
struct wl_listener unmap;
|
|
struct wl_listener surface_commit;
|
|
struct wl_listener output_destroy;
|
|
struct wl_listener node_destroy;
|
|
struct wl_listener new_popup;
|
|
};
|
|
|
|
struct lab_layer_popup {
|
|
struct wlr_xdg_popup *wlr_popup;
|
|
struct wlr_scene_tree *scene_tree;
|
|
|
|
/* To simplify moving popup nodes from the bottom to the top layer */
|
|
struct wlr_box output_toplevel_sx_box;
|
|
|
|
struct wl_listener commit;
|
|
struct wl_listener destroy;
|
|
struct wl_listener new_popup;
|
|
};
|
|
|
|
void layers_init(struct server *server);
|
|
|
|
void layers_arrange(struct output *output);
|
|
void layer_try_set_focus(struct seat *seat,
|
|
struct wlr_layer_surface_v1 *layer_surface);
|
|
|
|
#endif /* LABWC_LAYERS_H */
|