aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac Freund <mail@isaacfreund.com>2023-12-04 23:46:14 +0100
committerIsaac Freund <mail@isaacfreund.com>2023-12-05 00:27:22 +0100
commit6bfaf62cef0061782e9a6dc6fb7072226f44be4e (patch)
treef799b092732cdcfa96c24e578d162c93a11bdd0d
parent7ee6c79b6b5dd926497959cf80d1283749e30b5e (diff)
downloadriver-6bfaf62cef0061782e9a6dc6fb7072226f44be4e.tar.gz
river-6bfaf62cef0061782e9a6dc6fb7072226f44be4e.tar.xz
SceneNodeData: fix fromNode()
This currently fails to check the node passed and skips directly to the parent.
-rw-r--r--river/SceneNodeData.zig12
1 files changed, 8 insertions, 4 deletions
diff --git a/river/SceneNodeData.zig b/river/SceneNodeData.zig
index 536a714..fa079c1 100644
--- a/river/SceneNodeData.zig
+++ b/river/SceneNodeData.zig
@@ -51,13 +51,17 @@ pub fn attach(node: *wlr.SceneNode, data: Data) error{OutOfMemory}!void {
}
pub fn fromNode(node: *wlr.SceneNode) ?*SceneNodeData {
- var it: ?*wlr.SceneTree = node.parent;
- while (it) |tree| : (it = tree.node.parent) {
- if (@as(?*SceneNodeData, @ptrFromInt(tree.node.data))) |scene_node_data| {
+ var n = node;
+ while (true) {
+ if (@as(?*SceneNodeData, @ptrFromInt(n.data))) |scene_node_data| {
return scene_node_data;
}
+ if (n.parent) |parent_tree| {
+ n = &parent_tree.node;
+ } else {
+ return null;
+ }
}
- return null;
}
pub fn fromSurface(surface: *wlr.Surface) ?*SceneNodeData {