aboutsummaryrefslogtreecommitdiff
path: root/sway/input
diff options
context:
space:
mode:
authorAlexander Orzechowski <alex@ozal.ski>2023-12-06 14:28:59 -0500
committerKirill Primak <vyivel@eclair.cafe>2024-01-18 18:36:54 +0300
commitb38ed8b4792928dca3e1580e8160792ea41e25c4 (patch)
treeb080710c7a3f37de868ff4d5d96e6971f7105675 /sway/input
parent08c484f46f130aa7e590ef4bcb39d2ceed7160f6 (diff)
scene_graph: Port xdg_shell
Diffstat (limited to 'sway/input')
-rw-r--r--sway/input/cursor.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sway/input/cursor.c b/sway/input/cursor.c
index 30df76f4..fd8f50d4 100644
--- a/sway/input/cursor.c
+++ b/sway/input/cursor.c
@@ -80,6 +80,7 @@ struct sway_node *node_at_coords(
while (true) {
struct sway_container *con = scene_descriptor_try_get(current,
SWAY_SCENE_DESC_CONTAINER);
+
if (!con) {
struct sway_view *view = scene_descriptor_try_get(current,
SWAY_SCENE_DESC_VIEW);
@@ -88,12 +89,18 @@ struct sway_node *node_at_coords(
}
}
- if (con) {
- if (!con->view || con->view->surface) {
- return &con->node;
+ if (!con) {
+ struct sway_xdg_popup *popup =
+ scene_descriptor_try_get(current, SWAY_SCENE_DESC_POPUP);
+ if (popup) {
+ con = popup->view->container;
}
}
+ if (con && (!con->view || con->view->surface)) {
+ return &con->node;
+ }
+
if (scene_descriptor_try_get(current, SWAY_SCENE_DESC_LAYER_SHELL)) {
// We don't want to feed through the current workspace on
// layer shells