aboutsummaryrefslogtreecommitdiff
path: root/sway/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'sway/desktop')
-rw-r--r--sway/desktop/layer_shell.c14
-rw-r--r--sway/desktop/transaction.c10
2 files changed, 13 insertions, 11 deletions
diff --git a/sway/desktop/layer_shell.c b/sway/desktop/layer_shell.c
index 9a35ef95..769d3a86 100644
--- a/sway/desktop/layer_shell.c
+++ b/sway/desktop/layer_shell.c
@@ -122,6 +122,16 @@ static struct sway_layer_surface *sway_layer_surface_create(
return NULL;
}
+ surface->desc.relative = &scene->tree->node;
+
+ if (!scene_descriptor_assign(&popups->node,
+ SWAY_SCENE_DESC_POPUP, &surface->desc)) {
+ sway_log(SWAY_ERROR, "Failed to allocate a popup scene descriptor");
+ wlr_scene_node_destroy(&popups->node);
+ free(surface);
+ return NULL;
+ }
+
surface->tree = scene->tree;
surface->scene = scene;
surface->layer_surface = scene->layer_surface;
@@ -224,10 +234,6 @@ static void handle_surface_commit(struct wl_listener *listener, void *data) {
arrange_layers(surface->output);
transaction_commit_dirty();
}
-
- int lx, ly;
- wlr_scene_node_coords(&surface->scene->tree->node, &lx, &ly);
- wlr_scene_node_set_position(&surface->popups->node, lx, ly);
}
static void handle_map(struct wl_listener *listener, void *data) {
diff --git a/sway/desktop/transaction.c b/sway/desktop/transaction.c
index e3196e3a..fd1c3d3a 100644
--- a/sway/desktop/transaction.c
+++ b/sway/desktop/transaction.c
@@ -612,13 +612,9 @@ void arrange_popups(struct wlr_scene_tree *popups) {
struct sway_popup_desc *popup = scene_descriptor_try_get(node,
SWAY_SCENE_DESC_POPUP);
- // the popup layer may have popups from layer_shell surfaces, in this
- // case those don't have a scene descriptor, so lets skip those here.
- if (popup) {
- int lx, ly;
- wlr_scene_node_coords(popup->relative, &lx, &ly);
- wlr_scene_node_set_position(node, lx, ly);
- }
+ int lx, ly;
+ wlr_scene_node_coords(popup->relative, &lx, &ly);
+ wlr_scene_node_set_position(node, lx, ly);
}
}