view: add always-on-top signal

This commit is contained in:
Consolatis 2026-03-12 13:24:55 +01:00
parent a3646721bc
commit 52790ab9f7
2 changed files with 5 additions and 0 deletions

View file

@ -280,6 +280,7 @@ struct view {
struct wl_signal minimized; struct wl_signal minimized;
struct wl_signal fullscreened; struct wl_signal fullscreened;
struct wl_signal activated; /* bool *activated */ struct wl_signal activated; /* bool *activated */
struct wl_signal always_on_top;
/* /*
* This is emitted when app_id, or icon set via xdg_toplevel_icon * This is emitted when app_id, or icon set via xdg_toplevel_icon
* is updated. This is listened by scaled_icon_buffer. * is updated. This is listened by scaled_icon_buffer.

View file

@ -1546,6 +1546,8 @@ view_set_layer(struct view *view, enum view_layer layer)
view->layer = layer; view->layer = layer;
wlr_scene_node_reparent(&view->scene_tree->node, wlr_scene_node_reparent(&view->scene_tree->node,
view->workspace->view_trees[layer]); view->workspace->view_trees[layer]);
wl_signal_emit_mutable(&view->events.always_on_top, NULL);
} }
void void
@ -2473,6 +2475,7 @@ view_init(struct view *view)
wl_signal_init(&view->events.minimized); wl_signal_init(&view->events.minimized);
wl_signal_init(&view->events.fullscreened); wl_signal_init(&view->events.fullscreened);
wl_signal_init(&view->events.activated); wl_signal_init(&view->events.activated);
wl_signal_init(&view->events.always_on_top);
wl_signal_init(&view->events.set_icon); wl_signal_init(&view->events.set_icon);
wl_signal_init(&view->events.destroy); wl_signal_init(&view->events.destroy);
@ -2552,6 +2555,7 @@ view_destroy(struct view *view)
assert(wl_list_empty(&view->events.minimized.listener_list)); assert(wl_list_empty(&view->events.minimized.listener_list));
assert(wl_list_empty(&view->events.fullscreened.listener_list)); assert(wl_list_empty(&view->events.fullscreened.listener_list));
assert(wl_list_empty(&view->events.activated.listener_list)); assert(wl_list_empty(&view->events.activated.listener_list));
assert(wl_list_empty(&view->events.always_on_top.listener_list));
assert(wl_list_empty(&view->events.set_icon.listener_list)); assert(wl_list_empty(&view->events.set_icon.listener_list));
assert(wl_list_empty(&view->events.destroy.listener_list)); assert(wl_list_empty(&view->events.destroy.listener_list));