mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-23 10:29:49 +01:00
Merge pull request #1243 from emersion/layer-shell-suffix
layer-shell: add _v1 suffix
This commit is contained in:
commit
0210905eef
12 changed files with 115 additions and 115 deletions
|
@ -9,7 +9,7 @@
|
||||||
#include <wlr/types/wlr_idle_inhibit_v1.h>
|
#include <wlr/types/wlr_idle_inhibit_v1.h>
|
||||||
#include <wlr/types/wlr_idle.h>
|
#include <wlr/types/wlr_idle.h>
|
||||||
#include <wlr/types/wlr_input_inhibitor.h>
|
#include <wlr/types/wlr_input_inhibitor.h>
|
||||||
#include <wlr/types/wlr_layer_shell.h>
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||||
#include <wlr/types/wlr_list.h>
|
#include <wlr/types/wlr_list.h>
|
||||||
#include <wlr/types/wlr_output_layout.h>
|
#include <wlr/types/wlr_output_layout.h>
|
||||||
#include <wlr/types/wlr_output.h>
|
#include <wlr/types/wlr_output.h>
|
||||||
|
@ -52,7 +52,7 @@ struct roots_desktop {
|
||||||
struct wlr_idle *idle;
|
struct wlr_idle *idle;
|
||||||
struct wlr_idle_inhibit_manager_v1 *idle_inhibit;
|
struct wlr_idle_inhibit_manager_v1 *idle_inhibit;
|
||||||
struct wlr_input_inhibit_manager *input_inhibit;
|
struct wlr_input_inhibit_manager *input_inhibit;
|
||||||
struct wlr_layer_shell *layer_shell;
|
struct wlr_layer_shell_v1 *layer_shell;
|
||||||
struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard;
|
struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard;
|
||||||
struct wlr_screencopy_manager_v1 *screencopy;
|
struct wlr_screencopy_manager_v1 *screencopy;
|
||||||
struct wlr_tablet_manager_v2 *tablet_v2;
|
struct wlr_tablet_manager_v2 *tablet_v2;
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <wlr/types/wlr_box.h>
|
#include <wlr/types/wlr_box.h>
|
||||||
#include <wlr/types/wlr_surface.h>
|
#include <wlr/types/wlr_surface.h>
|
||||||
#include <wlr/types/wlr_layer_shell.h>
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||||
|
|
||||||
struct roots_layer_surface {
|
struct roots_layer_surface {
|
||||||
struct wlr_layer_surface *layer_surface;
|
struct wlr_layer_surface_v1 *layer_surface;
|
||||||
struct wl_list link;
|
struct wl_list link;
|
||||||
|
|
||||||
struct wl_listener destroy;
|
struct wl_listener destroy;
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct roots_seat {
|
||||||
double touch_x, touch_y;
|
double touch_x, touch_y;
|
||||||
|
|
||||||
// If the focused layer is set, views cannot receive keyboard focus
|
// If the focused layer is set, views cannot receive keyboard focus
|
||||||
struct wlr_layer_surface *focused_layer;
|
struct wlr_layer_surface_v1 *focused_layer;
|
||||||
|
|
||||||
// If non-null, only this client can receive input events
|
// If non-null, only this client can receive input events
|
||||||
struct wl_client *exclusive_client;
|
struct wl_client *exclusive_client;
|
||||||
|
@ -140,7 +140,7 @@ struct roots_view *roots_seat_get_focus(struct roots_seat *seat);
|
||||||
void roots_seat_set_focus(struct roots_seat *seat, struct roots_view *view);
|
void roots_seat_set_focus(struct roots_seat *seat, struct roots_view *view);
|
||||||
|
|
||||||
void roots_seat_set_focus_layer(struct roots_seat *seat,
|
void roots_seat_set_focus_layer(struct roots_seat *seat,
|
||||||
struct wlr_layer_surface *layer);
|
struct wlr_layer_surface_v1 *layer);
|
||||||
|
|
||||||
void roots_seat_cycle_focus(struct roots_seat *seat);
|
void roots_seat_cycle_focus(struct roots_seat *seat);
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ install_headers(
|
||||||
'wlr_input_device.h',
|
'wlr_input_device.h',
|
||||||
'wlr_input_inhibitor.h',
|
'wlr_input_inhibitor.h',
|
||||||
'wlr_keyboard.h',
|
'wlr_keyboard.h',
|
||||||
'wlr_layer_shell.h',
|
'wlr_layer_shell_v1.h',
|
||||||
'wlr_linux_dmabuf_v1.h',
|
'wlr_linux_dmabuf_v1.h',
|
||||||
'wlr_list.h',
|
'wlr_list.h',
|
||||||
'wlr_matrix.h',
|
'wlr_matrix.h',
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
|
#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef WLR_TYPES_WLR_LAYER_SHELL_H
|
#ifndef WLR_TYPES_WLR_LAYER_SHELL_V1_H
|
||||||
#define WLR_TYPES_WLR_LAYER_SHELL_H
|
#define WLR_TYPES_WLR_LAYER_SHELL_V1_H
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <wayland-server.h>
|
#include <wayland-server.h>
|
||||||
|
@ -16,26 +16,26 @@
|
||||||
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlr_layer_shell allows clients to arrange themselves in "layers" on the
|
* wlr_layer_shell_v1 allows clients to arrange themselves in "layers" on the
|
||||||
* desktop in accordance with the wlr-layer-shell protocol. When a client is
|
* desktop in accordance with the wlr-layer-shell protocol. When a client is
|
||||||
* added, the new_surface signal will be raised and passed a reference to our
|
* added, the new_surface signal will be raised and passed a reference to our
|
||||||
* wlr_layer_surface. At this time, the client will have configured the surface
|
* wlr_layer_surface_v1. At this time, the client will have configured the
|
||||||
* as it desires, including information like desired anchors and margins. The
|
* surface as it desires, including information like desired anchors and
|
||||||
* compositor should use this information to decide how to arrange the layer
|
* margins. The compositor should use this information to decide how to arrange
|
||||||
* on-screen, then determine the dimensions of the layer and call
|
* the layer on-screen, then determine the dimensions of the layer and call
|
||||||
* wlr_layer_surface_configure. The client will then attach a buffer and commit
|
* wlr_layer_surface_v1_configure. The client will then attach a buffer and
|
||||||
* the surface, at which point the wlr_layer_surface map signal is raised and
|
* commit the surface, at which point the wlr_layer_surface_v1 map signal is
|
||||||
* the compositor should begin rendering the surface.
|
* raised and the compositor should begin rendering the surface.
|
||||||
*/
|
*/
|
||||||
struct wlr_layer_shell {
|
struct wlr_layer_shell_v1 {
|
||||||
struct wl_global *global;
|
struct wl_global *global;
|
||||||
struct wl_list client_resources; // wl_resource
|
struct wl_list resources; // wl_resource
|
||||||
struct wl_list surfaces; // wl_layer_surface
|
struct wl_list surfaces; // wl_layer_surface
|
||||||
|
|
||||||
struct wl_listener display_destroy;
|
struct wl_listener display_destroy;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
// struct wlr_layer_surface *
|
// struct wlr_layer_surface_v1 *
|
||||||
// Note: the output may be NULL. In this case, it is your
|
// Note: the output may be NULL. In this case, it is your
|
||||||
// responsibility to assign an output before returning.
|
// responsibility to assign an output before returning.
|
||||||
struct wl_signal new_surface;
|
struct wl_signal new_surface;
|
||||||
|
@ -45,7 +45,7 @@ struct wlr_layer_shell {
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wlr_layer_surface_state {
|
struct wlr_layer_surface_v1_state {
|
||||||
uint32_t anchor;
|
uint32_t anchor;
|
||||||
int32_t exclusive_zone;
|
int32_t exclusive_zone;
|
||||||
struct {
|
struct {
|
||||||
|
@ -56,18 +56,18 @@ struct wlr_layer_surface_state {
|
||||||
uint32_t actual_width, actual_height;
|
uint32_t actual_width, actual_height;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wlr_layer_surface_configure {
|
struct wlr_layer_surface_v1_configure {
|
||||||
struct wl_list link; // wlr_layer_surface::configure_list
|
struct wl_list link; // wlr_layer_surface_v1::configure_list
|
||||||
uint32_t serial;
|
uint32_t serial;
|
||||||
struct wlr_layer_surface_state state;
|
struct wlr_layer_surface_v1_state state;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wlr_layer_surface {
|
struct wlr_layer_surface_v1 {
|
||||||
struct wl_list link; // wlr_layer_shell::surfaces
|
struct wl_list link; // wlr_layer_shell_v1::surfaces
|
||||||
struct wlr_surface *surface;
|
struct wlr_surface *surface;
|
||||||
struct wlr_output *output;
|
struct wlr_output *output;
|
||||||
struct wl_resource *resource;
|
struct wl_resource *resource;
|
||||||
struct wlr_layer_shell *shell;
|
struct wlr_layer_shell_v1 *shell;
|
||||||
struct wl_list popups; // wlr_xdg_popup::link
|
struct wl_list popups; // wlr_xdg_popup::link
|
||||||
|
|
||||||
char *namespace;
|
char *namespace;
|
||||||
|
@ -79,11 +79,11 @@ struct wlr_layer_surface {
|
||||||
uint32_t configure_next_serial;
|
uint32_t configure_next_serial;
|
||||||
struct wl_list configure_list;
|
struct wl_list configure_list;
|
||||||
|
|
||||||
struct wlr_layer_surface_configure *acked_configure;
|
struct wlr_layer_surface_v1_configure *acked_configure;
|
||||||
|
|
||||||
struct wlr_layer_surface_state client_pending;
|
struct wlr_layer_surface_v1_state client_pending;
|
||||||
struct wlr_layer_surface_state server_pending;
|
struct wlr_layer_surface_v1_state server_pending;
|
||||||
struct wlr_layer_surface_state current;
|
struct wlr_layer_surface_v1_state current;
|
||||||
|
|
||||||
struct wl_listener surface_destroy;
|
struct wl_listener surface_destroy;
|
||||||
|
|
||||||
|
@ -97,29 +97,29 @@ struct wlr_layer_surface {
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wlr_layer_shell *wlr_layer_shell_create(struct wl_display *display);
|
struct wlr_layer_shell_v1 *wlr_layer_shell_v1_create(struct wl_display *display);
|
||||||
void wlr_layer_shell_destroy(struct wlr_layer_shell *layer_shell);
|
void wlr_layer_shell_v1_destroy(struct wlr_layer_shell_v1 *layer_shell);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies the layer surface to configure itself with this width/height. The
|
* Notifies the layer surface to configure itself with this width/height. The
|
||||||
* layer_surface will signal its map event when the surface is ready to assume
|
* layer_surface will signal its map event when the surface is ready to assume
|
||||||
* this size.
|
* this size.
|
||||||
*/
|
*/
|
||||||
void wlr_layer_surface_configure(struct wlr_layer_surface *surface,
|
void wlr_layer_surface_v1_configure(struct wlr_layer_surface_v1 *surface,
|
||||||
uint32_t width, uint32_t height);
|
uint32_t width, uint32_t height);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unmaps this layer surface and notifies the client that it has been closed.
|
* Unmaps this layer surface and notifies the client that it has been closed.
|
||||||
*/
|
*/
|
||||||
void wlr_layer_surface_close(struct wlr_layer_surface *surface);
|
void wlr_layer_surface_v1_close(struct wlr_layer_surface_v1 *surface);
|
||||||
|
|
||||||
bool wlr_surface_is_layer_surface(struct wlr_surface *surface);
|
bool wlr_surface_is_layer_surface(struct wlr_surface *surface);
|
||||||
|
|
||||||
struct wlr_layer_surface *wlr_layer_surface_from_wlr_surface(
|
struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_wlr_surface(
|
||||||
struct wlr_surface *surface);
|
struct wlr_surface *surface);
|
||||||
|
|
||||||
/* Calls the iterator function for each sub-surface and popup of this surface */
|
/* Calls the iterator function for each sub-surface and popup of this surface */
|
||||||
void wlr_layer_surface_for_each_surface(struct wlr_layer_surface *surface,
|
void wlr_layer_surface_v1_for_each_surface(struct wlr_layer_surface_v1 *surface,
|
||||||
wlr_surface_iterator_func_t iterator, void *user_data);
|
wlr_surface_iterator_func_t iterator, void *user_data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -127,7 +127,8 @@ void wlr_layer_surface_for_each_surface(struct wlr_layer_surface *surface,
|
||||||
* coordinates. Returns the surface and coordinates in the leaf surface
|
* coordinates. Returns the surface and coordinates in the leaf surface
|
||||||
* coordinate system or NULL if no surface is found at that location.
|
* coordinate system or NULL if no surface is found at that location.
|
||||||
*/
|
*/
|
||||||
struct wlr_surface *wlr_layer_surface_surface_at(
|
struct wlr_surface *wlr_layer_surface_v1_surface_at(
|
||||||
struct wlr_layer_surface *surface, double sx, double sy,
|
struct wlr_layer_surface_v1 *surface, double sx, double sy,
|
||||||
double *sub_x, double *sub_y);
|
double *sub_x, double *sub_y);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -275,8 +275,8 @@ static void roots_cursor_press_button(struct roots_cursor *cursor,
|
||||||
roots_seat_set_focus(seat, view);
|
roots_seat_set_focus(seat, view);
|
||||||
}
|
}
|
||||||
if (surface && wlr_surface_is_layer_surface(surface)) {
|
if (surface && wlr_surface_is_layer_surface(surface)) {
|
||||||
struct wlr_layer_surface *layer =
|
struct wlr_layer_surface_v1 *layer =
|
||||||
wlr_layer_surface_from_wlr_surface(surface);
|
wlr_layer_surface_v1_from_wlr_surface(surface);
|
||||||
if (layer->current.keyboard_interactive) {
|
if (layer->current.keyboard_interactive) {
|
||||||
roots_seat_set_focus_layer(seat, layer);
|
roots_seat_set_focus_layer(seat, layer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include <wlr/types/wlr_idle_inhibit_v1.h>
|
#include <wlr/types/wlr_idle_inhibit_v1.h>
|
||||||
#include <wlr/types/wlr_idle.h>
|
#include <wlr/types/wlr_idle.h>
|
||||||
#include <wlr/types/wlr_input_inhibitor.h>
|
#include <wlr/types/wlr_input_inhibitor.h>
|
||||||
#include <wlr/types/wlr_layer_shell.h>
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||||
#include <wlr/types/wlr_output_layout.h>
|
#include <wlr/types/wlr_output_layout.h>
|
||||||
#include <wlr/types/wlr_primary_selection.h>
|
#include <wlr/types/wlr_primary_selection.h>
|
||||||
#include <wlr/types/wlr_server_decoration.h>
|
#include <wlr/types/wlr_server_decoration.h>
|
||||||
|
@ -667,7 +667,7 @@ static struct wlr_surface *layer_surface_at(struct roots_output *output,
|
||||||
double _sx = ox - roots_surface->geo.x;
|
double _sx = ox - roots_surface->geo.x;
|
||||||
double _sy = oy - roots_surface->geo.y;
|
double _sy = oy - roots_surface->geo.y;
|
||||||
|
|
||||||
struct wlr_surface *sub = wlr_layer_surface_surface_at(
|
struct wlr_surface *sub = wlr_layer_surface_v1_surface_at(
|
||||||
roots_surface->layer_surface, _sx, _sy, sx, sy);
|
roots_surface->layer_surface, _sx, _sy, sx, sy);
|
||||||
|
|
||||||
if (sub) {
|
if (sub) {
|
||||||
|
@ -817,7 +817,7 @@ struct roots_desktop *desktop_create(struct roots_server *server,
|
||||||
&desktop->wl_shell_surface);
|
&desktop->wl_shell_surface);
|
||||||
desktop->wl_shell_surface.notify = handle_wl_shell_surface;
|
desktop->wl_shell_surface.notify = handle_wl_shell_surface;
|
||||||
|
|
||||||
desktop->layer_shell = wlr_layer_shell_create(server->wl_display);
|
desktop->layer_shell = wlr_layer_shell_v1_create(server->wl_display);
|
||||||
wl_signal_add(&desktop->layer_shell->events.new_surface,
|
wl_signal_add(&desktop->layer_shell->events.new_surface,
|
||||||
&desktop->layer_shell_surface);
|
&desktop->layer_shell_surface);
|
||||||
desktop->layer_shell_surface.notify = handle_layer_shell_surface;
|
desktop->layer_shell_surface.notify = handle_layer_shell_surface;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <wayland-server.h>
|
#include <wayland-server.h>
|
||||||
#include <wlr/types/wlr_box.h>
|
#include <wlr/types/wlr_box.h>
|
||||||
#include <wlr/types/wlr_surface.h>
|
#include <wlr/types/wlr_surface.h>
|
||||||
#include <wlr/types/wlr_layer_shell.h>
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
#include "rootston/desktop.h"
|
#include "rootston/desktop.h"
|
||||||
#include "rootston/layers.h"
|
#include "rootston/layers.h"
|
||||||
|
@ -111,8 +111,8 @@ static void arrange_layer(struct wlr_output *output,
|
||||||
wlr_output_effective_resolution(output,
|
wlr_output_effective_resolution(output,
|
||||||
&full_area.width, &full_area.height);
|
&full_area.width, &full_area.height);
|
||||||
wl_list_for_each_reverse(roots_surface, list, link) {
|
wl_list_for_each_reverse(roots_surface, list, link) {
|
||||||
struct wlr_layer_surface *layer = roots_surface->layer_surface;
|
struct wlr_layer_surface_v1 *layer = roots_surface->layer_surface;
|
||||||
struct wlr_layer_surface_state *state = &layer->current;
|
struct wlr_layer_surface_v1_state *state = &layer->current;
|
||||||
if (exclusive != (state->exclusive_zone > 0)) {
|
if (exclusive != (state->exclusive_zone > 0)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -171,7 +171,7 @@ static void arrange_layer(struct wlr_output *output,
|
||||||
}
|
}
|
||||||
if (box.width < 0 || box.height < 0) {
|
if (box.width < 0 || box.height < 0) {
|
||||||
// TODO: Bubble up a protocol error?
|
// TODO: Bubble up a protocol error?
|
||||||
wlr_layer_surface_close(layer);
|
wlr_layer_surface_v1_close(layer);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ static void arrange_layer(struct wlr_output *output,
|
||||||
apply_exclusive(usable_area, state->anchor, state->exclusive_zone,
|
apply_exclusive(usable_area, state->anchor, state->exclusive_zone,
|
||||||
state->margin.top, state->margin.right,
|
state->margin.top, state->margin.right,
|
||||||
state->margin.bottom, state->margin.left);
|
state->margin.bottom, state->margin.left);
|
||||||
wlr_layer_surface_configure(layer, box.width, box.height);
|
wlr_layer_surface_v1_configure(layer, box.width, box.height);
|
||||||
|
|
||||||
// Having a cursor newly end up over the moved layer will not
|
// Having a cursor newly end up over the moved layer will not
|
||||||
// automatically send a motion event to the surface. The event needs to
|
// automatically send a motion event to the surface. The event needs to
|
||||||
|
@ -270,13 +270,13 @@ static void handle_output_destroy(struct wl_listener *listener, void *data) {
|
||||||
wl_container_of(listener, layer, output_destroy);
|
wl_container_of(listener, layer, output_destroy);
|
||||||
layer->layer_surface->output = NULL;
|
layer->layer_surface->output = NULL;
|
||||||
wl_list_remove(&layer->output_destroy.link);
|
wl_list_remove(&layer->output_destroy.link);
|
||||||
wlr_layer_surface_close(layer->layer_surface);
|
wlr_layer_surface_v1_close(layer->layer_surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_surface_commit(struct wl_listener *listener, void *data) {
|
static void handle_surface_commit(struct wl_listener *listener, void *data) {
|
||||||
struct roots_layer_surface *layer =
|
struct roots_layer_surface *layer =
|
||||||
wl_container_of(listener, layer, surface_commit);
|
wl_container_of(listener, layer, surface_commit);
|
||||||
struct wlr_layer_surface *layer_surface = layer->layer_surface;
|
struct wlr_layer_surface_v1 *layer_surface = layer->layer_surface;
|
||||||
struct wlr_output *wlr_output = layer_surface->output;
|
struct wlr_output *wlr_output = layer_surface->output;
|
||||||
if (wlr_output != NULL) {
|
if (wlr_output != NULL) {
|
||||||
struct roots_output *output = wlr_output->data;
|
struct roots_output *output = wlr_output->data;
|
||||||
|
@ -308,7 +308,7 @@ static void handle_surface_commit(struct wl_listener *listener, void *data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void unmap(struct wlr_layer_surface *layer_surface) {
|
static void unmap(struct wlr_layer_surface_v1 *layer_surface) {
|
||||||
struct roots_layer_surface *layer = layer_surface->data;
|
struct roots_layer_surface *layer = layer_surface->data;
|
||||||
struct wlr_output *wlr_output = layer_surface->output;
|
struct wlr_output *wlr_output = layer_surface->output;
|
||||||
if (wlr_output != NULL) {
|
if (wlr_output != NULL) {
|
||||||
|
@ -337,7 +337,7 @@ static void handle_destroy(struct wl_listener *listener, void *data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_map(struct wl_listener *listener, void *data) {
|
static void handle_map(struct wl_listener *listener, void *data) {
|
||||||
struct wlr_layer_surface *layer_surface = data;
|
struct wlr_layer_surface_v1 *layer_surface = data;
|
||||||
struct roots_layer_surface *layer = layer_surface->data;
|
struct roots_layer_surface *layer = layer_surface->data;
|
||||||
struct wlr_output *wlr_output = layer_surface->output;
|
struct wlr_output *wlr_output = layer_surface->output;
|
||||||
struct roots_output *output = wlr_output->data;
|
struct roots_output *output = wlr_output->data;
|
||||||
|
@ -430,7 +430,7 @@ static void handle_new_popup(struct wl_listener *listener, void *data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
||||||
struct wlr_layer_surface *layer_surface = data;
|
struct wlr_layer_surface_v1 *layer_surface = data;
|
||||||
struct roots_desktop *desktop =
|
struct roots_desktop *desktop =
|
||||||
wl_container_of(listener, desktop, layer_shell_surface);
|
wl_container_of(listener, desktop, layer_shell_surface);
|
||||||
wlr_log(WLR_DEBUG, "new layer surface: namespace %s layer %d anchor %d "
|
wlr_log(WLR_DEBUG, "new layer surface: namespace %s layer %d anchor %d "
|
||||||
|
@ -460,7 +460,7 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
||||||
if (output) {
|
if (output) {
|
||||||
layer_surface->output = output;
|
layer_surface->output = output;
|
||||||
} else {
|
} else {
|
||||||
wlr_layer_surface_close(layer_surface);
|
wlr_layer_surface_v1_close(layer_surface);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -497,7 +497,7 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
// Temporarily set the layer's current state to client_pending
|
// Temporarily set the layer's current state to client_pending
|
||||||
// So that we can easily arrange it
|
// So that we can easily arrange it
|
||||||
struct wlr_layer_surface_state old_state = layer_surface->current;
|
struct wlr_layer_surface_v1_state old_state = layer_surface->current;
|
||||||
layer_surface->current = layer_surface->client_pending;
|
layer_surface->current = layer_surface->client_pending;
|
||||||
|
|
||||||
arrange_layers(output);
|
arrange_layers(output);
|
||||||
|
|
|
@ -363,14 +363,14 @@ static void render_layer(struct roots_output *output,
|
||||||
struct wl_list *layer) {
|
struct wl_list *layer) {
|
||||||
struct roots_layer_surface *roots_surface;
|
struct roots_layer_surface *roots_surface;
|
||||||
wl_list_for_each(roots_surface, layer, link) {
|
wl_list_for_each(roots_surface, layer, link) {
|
||||||
struct wlr_layer_surface *layer = roots_surface->layer_surface;
|
struct wlr_layer_surface_v1 *layer = roots_surface->layer_surface;
|
||||||
|
|
||||||
surface_for_each_surface(layer->surface,
|
surface_for_each_surface(layer->surface,
|
||||||
roots_surface->geo.x + output_layout_box->x,
|
roots_surface->geo.x + output_layout_box->x,
|
||||||
roots_surface->geo.y + output_layout_box->y,
|
roots_surface->geo.y + output_layout_box->y,
|
||||||
0, &data->layout, render_surface, data);
|
0, &data->layout, render_surface, data);
|
||||||
|
|
||||||
wlr_layer_surface_for_each_surface(layer, render_surface, data);
|
wlr_layer_surface_v1_for_each_surface(layer, render_surface, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ static void layers_send_done(
|
||||||
for (size_t i = 0; i < len; ++i) {
|
for (size_t i = 0; i < len; ++i) {
|
||||||
struct roots_layer_surface *roots_surface;
|
struct roots_layer_surface *roots_surface;
|
||||||
wl_list_for_each(roots_surface, &output->layers[i], link) {
|
wl_list_for_each(roots_surface, &output->layers[i], link) {
|
||||||
struct wlr_layer_surface *layer = roots_surface->layer_surface;
|
struct wlr_layer_surface_v1 *layer = roots_surface->layer_surface;
|
||||||
wlr_surface_send_frame_done(layer->surface, when);
|
wlr_surface_send_frame_done(layer->surface, when);
|
||||||
struct wlr_xdg_popup *popup;
|
struct wlr_xdg_popup *popup;
|
||||||
wl_list_for_each(popup, &roots_surface->layer_surface->popups, link) {
|
wl_list_for_each(popup, &roots_surface->layer_surface->popups, link) {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <wlr/backend/libinput.h>
|
#include <wlr/backend/libinput.h>
|
||||||
#include <wlr/config.h>
|
#include <wlr/config.h>
|
||||||
#include <wlr/types/wlr_idle.h>
|
#include <wlr/types/wlr_idle.h>
|
||||||
#include <wlr/types/wlr_layer_shell.h>
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||||
#include <wlr/types/wlr_tablet_v2.h>
|
#include <wlr/types/wlr_tablet_v2.h>
|
||||||
#include <wlr/types/wlr_xcursor_manager.h>
|
#include <wlr/types/wlr_xcursor_manager.h>
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
|
@ -1194,7 +1194,7 @@ void roots_seat_set_focus(struct roots_seat *seat, struct roots_view *view) {
|
||||||
* You also cannot alt-tab between layer surfaces and shell surfaces.
|
* You also cannot alt-tab between layer surfaces and shell surfaces.
|
||||||
*/
|
*/
|
||||||
void roots_seat_set_focus_layer(struct roots_seat *seat,
|
void roots_seat_set_focus_layer(struct roots_seat *seat,
|
||||||
struct wlr_layer_surface *layer) {
|
struct wlr_layer_surface_v1 *layer) {
|
||||||
if (!layer) {
|
if (!layer) {
|
||||||
seat->focused_layer = NULL;
|
seat->focused_layer = NULL;
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -31,7 +31,7 @@ lib_wlr_types = static_library(
|
||||||
'wlr_input_device.c',
|
'wlr_input_device.c',
|
||||||
'wlr_input_inhibitor.c',
|
'wlr_input_inhibitor.c',
|
||||||
'wlr_keyboard.c',
|
'wlr_keyboard.c',
|
||||||
'wlr_layer_shell.c',
|
'wlr_layer_shell_v1.c',
|
||||||
'wlr_linux_dmabuf_v1.c',
|
'wlr_linux_dmabuf_v1.c',
|
||||||
'wlr_list.c',
|
'wlr_list.c',
|
||||||
'wlr_matrix.c',
|
'wlr_matrix.c',
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <wayland-server.h>
|
#include <wayland-server.h>
|
||||||
#include <wlr/types/wlr_layer_shell.h>
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
||||||
#include <wlr/types/wlr_output.h>
|
#include <wlr/types/wlr_output.h>
|
||||||
#include <wlr/types/wlr_surface.h>
|
#include <wlr/types/wlr_surface.h>
|
||||||
#include <wlr/types/wlr_xdg_shell.h>
|
#include <wlr/types/wlr_xdg_shell.h>
|
||||||
|
@ -19,14 +19,14 @@ static void resource_handle_destroy(struct wl_client *client,
|
||||||
static const struct zwlr_layer_shell_v1_interface layer_shell_implementation;
|
static const struct zwlr_layer_shell_v1_interface layer_shell_implementation;
|
||||||
static const struct zwlr_layer_surface_v1_interface layer_surface_implementation;
|
static const struct zwlr_layer_surface_v1_interface layer_surface_implementation;
|
||||||
|
|
||||||
static struct wlr_layer_shell *layer_shell_from_resource(
|
static struct wlr_layer_shell_v1 *layer_shell_from_resource(
|
||||||
struct wl_resource *resource) {
|
struct wl_resource *resource) {
|
||||||
assert(wl_resource_instance_of(resource, &zwlr_layer_shell_v1_interface,
|
assert(wl_resource_instance_of(resource, &zwlr_layer_shell_v1_interface,
|
||||||
&layer_shell_implementation));
|
&layer_shell_implementation));
|
||||||
return wl_resource_get_user_data(resource);
|
return wl_resource_get_user_data(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct wlr_layer_surface *layer_surface_from_resource(
|
static struct wlr_layer_surface_v1 *layer_surface_from_resource(
|
||||||
struct wl_resource *resource) {
|
struct wl_resource *resource) {
|
||||||
assert(wl_resource_instance_of(resource, &zwlr_layer_surface_v1_interface,
|
assert(wl_resource_instance_of(resource, &zwlr_layer_surface_v1_interface,
|
||||||
&layer_surface_implementation));
|
&layer_surface_implementation));
|
||||||
|
@ -39,14 +39,14 @@ bool wlr_surface_is_layer_surface(struct wlr_surface *surface) {
|
||||||
return surface->role == &layer_surface_role;
|
return surface->role == &layer_surface_role;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wlr_layer_surface *wlr_layer_surface_from_wlr_surface(
|
struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_wlr_surface(
|
||||||
struct wlr_surface *surface) {
|
struct wlr_surface *surface) {
|
||||||
assert(wlr_surface_is_layer_surface(surface));
|
assert(wlr_surface_is_layer_surface(surface));
|
||||||
return (struct wlr_layer_surface *)surface->role_data;
|
return (struct wlr_layer_surface_v1 *)surface->role_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void layer_surface_configure_destroy(
|
static void layer_surface_configure_destroy(
|
||||||
struct wlr_layer_surface_configure *configure) {
|
struct wlr_layer_surface_v1_configure *configure) {
|
||||||
if (configure == NULL) {
|
if (configure == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -56,10 +56,10 @@ static void layer_surface_configure_destroy(
|
||||||
|
|
||||||
static void layer_surface_handle_ack_configure(struct wl_client *client,
|
static void layer_surface_handle_ack_configure(struct wl_client *client,
|
||||||
struct wl_resource *resource, uint32_t serial) {
|
struct wl_resource *resource, uint32_t serial) {
|
||||||
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
|
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
|
||||||
|
|
||||||
bool found = false;
|
bool found = false;
|
||||||
struct wlr_layer_surface_configure *configure, *tmp;
|
struct wlr_layer_surface_v1_configure *configure, *tmp;
|
||||||
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
|
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
|
||||||
if (configure->serial < serial) {
|
if (configure->serial < serial) {
|
||||||
layer_surface_configure_destroy(configure);
|
layer_surface_configure_destroy(configure);
|
||||||
|
@ -87,7 +87,7 @@ static void layer_surface_handle_ack_configure(struct wl_client *client,
|
||||||
|
|
||||||
static void layer_surface_handle_set_size(struct wl_client *client,
|
static void layer_surface_handle_set_size(struct wl_client *client,
|
||||||
struct wl_resource *resource, uint32_t width, uint32_t height) {
|
struct wl_resource *resource, uint32_t width, uint32_t height) {
|
||||||
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
|
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
|
||||||
surface->client_pending.desired_width = width;
|
surface->client_pending.desired_width = width;
|
||||||
surface->client_pending.desired_height = height;
|
surface->client_pending.desired_height = height;
|
||||||
}
|
}
|
||||||
|
@ -104,20 +104,20 @@ static void layer_surface_handle_set_anchor(struct wl_client *client,
|
||||||
ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR,
|
ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR,
|
||||||
"invalid anchor %d", anchor);
|
"invalid anchor %d", anchor);
|
||||||
}
|
}
|
||||||
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
|
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
|
||||||
surface->client_pending.anchor = anchor;
|
surface->client_pending.anchor = anchor;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void layer_surface_handle_set_exclusive_zone(struct wl_client *client,
|
static void layer_surface_handle_set_exclusive_zone(struct wl_client *client,
|
||||||
struct wl_resource *resource, int32_t zone) {
|
struct wl_resource *resource, int32_t zone) {
|
||||||
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
|
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
|
||||||
surface->client_pending.exclusive_zone = zone;
|
surface->client_pending.exclusive_zone = zone;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void layer_surface_handle_set_margin(
|
static void layer_surface_handle_set_margin(
|
||||||
struct wl_client *client, struct wl_resource *resource,
|
struct wl_client *client, struct wl_resource *resource,
|
||||||
int32_t top, int32_t right, int32_t bottom, int32_t left) {
|
int32_t top, int32_t right, int32_t bottom, int32_t left) {
|
||||||
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
|
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
|
||||||
surface->client_pending.margin.top = top;
|
surface->client_pending.margin.top = top;
|
||||||
surface->client_pending.margin.right = right;
|
surface->client_pending.margin.right = right;
|
||||||
surface->client_pending.margin.bottom = bottom;
|
surface->client_pending.margin.bottom = bottom;
|
||||||
|
@ -127,14 +127,14 @@ static void layer_surface_handle_set_margin(
|
||||||
static void layer_surface_handle_set_keyboard_interactivity(
|
static void layer_surface_handle_set_keyboard_interactivity(
|
||||||
struct wl_client *client, struct wl_resource *resource,
|
struct wl_client *client, struct wl_resource *resource,
|
||||||
uint32_t interactive) {
|
uint32_t interactive) {
|
||||||
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
|
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
|
||||||
surface->client_pending.keyboard_interactive = !!interactive;
|
surface->client_pending.keyboard_interactive = !!interactive;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void layer_surface_handle_get_popup(struct wl_client *client,
|
static void layer_surface_handle_get_popup(struct wl_client *client,
|
||||||
struct wl_resource *layer_resource,
|
struct wl_resource *layer_resource,
|
||||||
struct wl_resource *popup_resource) {
|
struct wl_resource *popup_resource) {
|
||||||
struct wlr_layer_surface *parent =
|
struct wlr_layer_surface_v1 *parent =
|
||||||
layer_surface_from_resource(layer_resource);
|
layer_surface_from_resource(layer_resource);
|
||||||
struct wlr_xdg_surface *popup_surface =
|
struct wlr_xdg_surface *popup_surface =
|
||||||
wlr_xdg_surface_from_popup_resource(popup_resource);
|
wlr_xdg_surface_from_popup_resource(popup_resource);
|
||||||
|
@ -157,11 +157,11 @@ static const struct zwlr_layer_surface_v1_interface layer_surface_implementation
|
||||||
.get_popup = layer_surface_handle_get_popup,
|
.get_popup = layer_surface_handle_get_popup,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void layer_surface_unmap(struct wlr_layer_surface *surface) {
|
static void layer_surface_unmap(struct wlr_layer_surface_v1 *surface) {
|
||||||
// TODO: probably need to ungrab before this event
|
// TODO: probably need to ungrab before this event
|
||||||
wlr_signal_emit_safe(&surface->events.unmap, surface);
|
wlr_signal_emit_safe(&surface->events.unmap, surface);
|
||||||
|
|
||||||
struct wlr_layer_surface_configure *configure, *tmp;
|
struct wlr_layer_surface_v1_configure *configure, *tmp;
|
||||||
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
|
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
|
||||||
layer_surface_configure_destroy(configure);
|
layer_surface_configure_destroy(configure);
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,7 @@ static void layer_surface_unmap(struct wlr_layer_surface *surface) {
|
||||||
surface->configure_next_serial = 0;
|
surface->configure_next_serial = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void layer_surface_destroy(struct wlr_layer_surface *surface) {
|
static void layer_surface_destroy(struct wlr_layer_surface_v1 *surface) {
|
||||||
if (surface->configured && surface->mapped) {
|
if (surface->configured && surface->mapped) {
|
||||||
layer_surface_unmap(surface);
|
layer_surface_unmap(surface);
|
||||||
}
|
}
|
||||||
|
@ -189,15 +189,15 @@ static void layer_surface_destroy(struct wlr_layer_surface *surface) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void layer_surface_resource_destroy(struct wl_resource *resource) {
|
static void layer_surface_resource_destroy(struct wl_resource *resource) {
|
||||||
struct wlr_layer_surface *surface =
|
struct wlr_layer_surface_v1 *surface =
|
||||||
layer_surface_from_resource(resource);
|
layer_surface_from_resource(resource);
|
||||||
if (surface != NULL) {
|
if (surface != NULL) {
|
||||||
layer_surface_destroy(surface);
|
layer_surface_destroy(surface);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool layer_surface_state_changed(struct wlr_layer_surface *surface) {
|
static bool layer_surface_state_changed(struct wlr_layer_surface_v1 *surface) {
|
||||||
struct wlr_layer_surface_state *state;
|
struct wlr_layer_surface_v1_state *state;
|
||||||
if (wl_list_empty(&surface->configure_list)) {
|
if (wl_list_empty(&surface->configure_list)) {
|
||||||
if (surface->acked_configure) {
|
if (surface->acked_configure) {
|
||||||
state = &surface->acked_configure->state;
|
state = &surface->acked_configure->state;
|
||||||
|
@ -207,7 +207,7 @@ static bool layer_surface_state_changed(struct wlr_layer_surface *surface) {
|
||||||
state = &surface->current;
|
state = &surface->current;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
struct wlr_layer_surface_configure *configure =
|
struct wlr_layer_surface_v1_configure *configure =
|
||||||
wl_container_of(surface->configure_list.prev, configure, link);
|
wl_container_of(surface->configure_list.prev, configure, link);
|
||||||
state = &configure->state;
|
state = &configure->state;
|
||||||
}
|
}
|
||||||
|
@ -217,15 +217,15 @@ static bool layer_surface_state_changed(struct wlr_layer_surface *surface) {
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_layer_surface_configure(struct wlr_layer_surface *surface,
|
void wlr_layer_surface_v1_configure(struct wlr_layer_surface_v1 *surface,
|
||||||
uint32_t width, uint32_t height) {
|
uint32_t width, uint32_t height) {
|
||||||
surface->server_pending.actual_width = width;
|
surface->server_pending.actual_width = width;
|
||||||
surface->server_pending.actual_height = height;
|
surface->server_pending.actual_height = height;
|
||||||
if (layer_surface_state_changed(surface)) {
|
if (layer_surface_state_changed(surface)) {
|
||||||
struct wl_display *display =
|
struct wl_display *display =
|
||||||
wl_client_get_display(wl_resource_get_client(surface->resource));
|
wl_client_get_display(wl_resource_get_client(surface->resource));
|
||||||
struct wlr_layer_surface_configure *configure =
|
struct wlr_layer_surface_v1_configure *configure =
|
||||||
calloc(1, sizeof(struct wlr_layer_surface_configure));
|
calloc(1, sizeof(struct wlr_layer_surface_v1_configure));
|
||||||
if (configure == NULL) {
|
if (configure == NULL) {
|
||||||
wl_client_post_no_memory(wl_resource_get_client(surface->resource));
|
wl_client_post_no_memory(wl_resource_get_client(surface->resource));
|
||||||
return;
|
return;
|
||||||
|
@ -241,7 +241,7 @@ void wlr_layer_surface_configure(struct wlr_layer_surface *surface,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_layer_surface_close(struct wlr_layer_surface *surface) {
|
void wlr_layer_surface_v1_close(struct wlr_layer_surface_v1 *surface) {
|
||||||
if (surface->closed) {
|
if (surface->closed) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -251,8 +251,8 @@ void wlr_layer_surface_close(struct wlr_layer_surface *surface) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void layer_surface_role_commit(struct wlr_surface *wlr_surface) {
|
static void layer_surface_role_commit(struct wlr_surface *wlr_surface) {
|
||||||
struct wlr_layer_surface *surface =
|
struct wlr_layer_surface_v1 *surface =
|
||||||
wlr_layer_surface_from_wlr_surface(wlr_surface);
|
wlr_layer_surface_v1_from_wlr_surface(wlr_surface);
|
||||||
if (surface == NULL) {
|
if (surface == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -263,7 +263,7 @@ static void layer_surface_role_commit(struct wlr_surface *wlr_surface) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (surface->acked_configure) {
|
if (surface->acked_configure) {
|
||||||
struct wlr_layer_surface_configure *configure =
|
struct wlr_layer_surface_v1_configure *configure =
|
||||||
surface->acked_configure;
|
surface->acked_configure;
|
||||||
surface->configured = true;
|
surface->configured = true;
|
||||||
surface->configure_serial = configure->serial;
|
surface->configure_serial = configure->serial;
|
||||||
|
@ -314,7 +314,7 @@ static const struct wlr_surface_role layer_surface_role = {
|
||||||
|
|
||||||
static void handle_surface_destroyed(struct wl_listener *listener,
|
static void handle_surface_destroyed(struct wl_listener *listener,
|
||||||
void *data) {
|
void *data) {
|
||||||
struct wlr_layer_surface *layer_surface =
|
struct wlr_layer_surface_v1 *layer_surface =
|
||||||
wl_container_of(listener, layer_surface, surface_destroy);
|
wl_container_of(listener, layer_surface, surface_destroy);
|
||||||
layer_surface_destroy(layer_surface);
|
layer_surface_destroy(layer_surface);
|
||||||
}
|
}
|
||||||
|
@ -324,13 +324,13 @@ static void layer_shell_handle_get_layer_surface(struct wl_client *wl_client,
|
||||||
struct wl_resource *surface_resource,
|
struct wl_resource *surface_resource,
|
||||||
struct wl_resource *output_resource,
|
struct wl_resource *output_resource,
|
||||||
uint32_t layer, const char *namespace) {
|
uint32_t layer, const char *namespace) {
|
||||||
struct wlr_layer_shell *shell =
|
struct wlr_layer_shell_v1 *shell =
|
||||||
layer_shell_from_resource(client_resource);
|
layer_shell_from_resource(client_resource);
|
||||||
struct wlr_surface *wlr_surface =
|
struct wlr_surface *wlr_surface =
|
||||||
wlr_surface_from_resource(surface_resource);
|
wlr_surface_from_resource(surface_resource);
|
||||||
|
|
||||||
struct wlr_layer_surface *surface =
|
struct wlr_layer_surface_v1 *surface =
|
||||||
calloc(1, sizeof(struct wlr_layer_surface));
|
calloc(1, sizeof(struct wlr_layer_surface_v1));
|
||||||
if (surface == NULL) {
|
if (surface == NULL) {
|
||||||
wl_client_post_no_memory(wl_client);
|
wl_client_post_no_memory(wl_client);
|
||||||
return;
|
return;
|
||||||
|
@ -397,8 +397,8 @@ static const struct zwlr_layer_shell_v1_interface layer_shell_implementation = {
|
||||||
|
|
||||||
static void client_handle_destroy(struct wl_resource *resource) {
|
static void client_handle_destroy(struct wl_resource *resource) {
|
||||||
struct wl_client *client = wl_resource_get_client(resource);
|
struct wl_client *client = wl_resource_get_client(resource);
|
||||||
struct wlr_layer_shell *shell = layer_shell_from_resource(resource);
|
struct wlr_layer_shell_v1 *shell = layer_shell_from_resource(resource);
|
||||||
struct wlr_layer_surface *surface, *tmp = NULL;
|
struct wlr_layer_surface_v1 *surface, *tmp = NULL;
|
||||||
wl_list_for_each_safe(surface, tmp, &shell->surfaces, link) {
|
wl_list_for_each_safe(surface, tmp, &shell->surfaces, link) {
|
||||||
if (wl_resource_get_client(surface->resource) == client) {
|
if (wl_resource_get_client(surface->resource) == client) {
|
||||||
layer_surface_destroy(surface);
|
layer_surface_destroy(surface);
|
||||||
|
@ -409,7 +409,7 @@ static void client_handle_destroy(struct wl_resource *resource) {
|
||||||
|
|
||||||
static void layer_shell_bind(struct wl_client *wl_client, void *data,
|
static void layer_shell_bind(struct wl_client *wl_client, void *data,
|
||||||
uint32_t version, uint32_t id) {
|
uint32_t version, uint32_t id) {
|
||||||
struct wlr_layer_shell *layer_shell = data;
|
struct wlr_layer_shell_v1 *layer_shell = data;
|
||||||
assert(wl_client && layer_shell);
|
assert(wl_client && layer_shell);
|
||||||
|
|
||||||
struct wl_resource *resource = wl_resource_create(
|
struct wl_resource *resource = wl_resource_create(
|
||||||
|
@ -420,24 +420,23 @@ static void layer_shell_bind(struct wl_client *wl_client, void *data,
|
||||||
}
|
}
|
||||||
wl_resource_set_implementation(resource,
|
wl_resource_set_implementation(resource,
|
||||||
&layer_shell_implementation, layer_shell, client_handle_destroy);
|
&layer_shell_implementation, layer_shell, client_handle_destroy);
|
||||||
wl_list_insert(&layer_shell->client_resources,
|
wl_list_insert(&layer_shell->resources, wl_resource_get_link(resource));
|
||||||
wl_resource_get_link(resource));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_display_destroy(struct wl_listener *listener, void *data) {
|
static void handle_display_destroy(struct wl_listener *listener, void *data) {
|
||||||
struct wlr_layer_shell *layer_shell =
|
struct wlr_layer_shell_v1 *layer_shell =
|
||||||
wl_container_of(listener, layer_shell, display_destroy);
|
wl_container_of(listener, layer_shell, display_destroy);
|
||||||
wlr_layer_shell_destroy(layer_shell);
|
wlr_layer_shell_v1_destroy(layer_shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wlr_layer_shell *wlr_layer_shell_create(struct wl_display *display) {
|
struct wlr_layer_shell_v1 *wlr_layer_shell_v1_create(struct wl_display *display) {
|
||||||
struct wlr_layer_shell *layer_shell =
|
struct wlr_layer_shell_v1 *layer_shell =
|
||||||
calloc(1, sizeof(struct wlr_layer_shell));
|
calloc(1, sizeof(struct wlr_layer_shell_v1));
|
||||||
if (!layer_shell) {
|
if (!layer_shell) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wl_list_init(&layer_shell->client_resources);
|
wl_list_init(&layer_shell->resources);
|
||||||
wl_list_init(&layer_shell->surfaces);
|
wl_list_init(&layer_shell->surfaces);
|
||||||
|
|
||||||
struct wl_global *global = wl_global_create(display,
|
struct wl_global *global = wl_global_create(display,
|
||||||
|
@ -457,13 +456,13 @@ struct wlr_layer_shell *wlr_layer_shell_create(struct wl_display *display) {
|
||||||
return layer_shell;
|
return layer_shell;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_layer_shell_destroy(struct wlr_layer_shell *layer_shell) {
|
void wlr_layer_shell_v1_destroy(struct wlr_layer_shell_v1 *layer_shell) {
|
||||||
if (!layer_shell) {
|
if (!layer_shell) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
struct wl_resource *client, *tmp;
|
struct wl_resource *resource, *tmp;
|
||||||
wl_resource_for_each_safe(client, tmp, &layer_shell->client_resources) {
|
wl_resource_for_each_safe(resource, tmp, &layer_shell->resources) {
|
||||||
wl_resource_destroy(client);
|
wl_resource_destroy(resource);
|
||||||
}
|
}
|
||||||
wlr_signal_emit_safe(&layer_shell->events.destroy, layer_shell);
|
wlr_signal_emit_safe(&layer_shell->events.destroy, layer_shell);
|
||||||
wl_list_remove(&layer_shell->display_destroy.link);
|
wl_list_remove(&layer_shell->display_destroy.link);
|
||||||
|
@ -511,7 +510,7 @@ static void xdg_surface_for_each_surface(struct wlr_xdg_surface *surface,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void layer_surface_for_each_surface(struct wlr_layer_surface *surface,
|
static void layer_surface_for_each_surface(struct wlr_layer_surface_v1 *surface,
|
||||||
int x, int y, wlr_surface_iterator_func_t iterator, void *user_data) {
|
int x, int y, wlr_surface_iterator_func_t iterator, void *user_data) {
|
||||||
struct layer_surface_iterator_data data = {
|
struct layer_surface_iterator_data data = {
|
||||||
.user_iterator = iterator,
|
.user_iterator = iterator,
|
||||||
|
@ -537,13 +536,13 @@ static void layer_surface_for_each_surface(struct wlr_layer_surface *surface,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wlr_layer_surface_for_each_surface(struct wlr_layer_surface *surface,
|
void wlr_layer_surface_v1_for_each_surface(struct wlr_layer_surface_v1 *surface,
|
||||||
wlr_surface_iterator_func_t iterator, void *user_data) {
|
wlr_surface_iterator_func_t iterator, void *user_data) {
|
||||||
layer_surface_for_each_surface(surface, 0, 0, iterator, user_data);
|
layer_surface_for_each_surface(surface, 0, 0, iterator, user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wlr_surface *wlr_layer_surface_surface_at(
|
struct wlr_surface *wlr_layer_surface_v1_surface_at(
|
||||||
struct wlr_layer_surface *surface, double sx, double sy,
|
struct wlr_layer_surface_v1 *surface, double sx, double sy,
|
||||||
double *sub_x, double *sub_y) {
|
double *sub_x, double *sub_y) {
|
||||||
struct wlr_xdg_popup *popup_state;
|
struct wlr_xdg_popup *popup_state;
|
||||||
wl_list_for_each(popup_state, &surface->popups, link) {
|
wl_list_for_each(popup_state, &surface->popups, link) {
|
Loading…
Reference in a new issue