summaryrefslogtreecommitdiff
path: root/lib/sway/node.vala
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sway/node.vala')
-rw-r--r--lib/sway/node.vala39
1 files changed, 38 insertions, 1 deletions
diff --git a/lib/sway/node.vala b/lib/sway/node.vala
index 1243854..da91e02 100644
--- a/lib/sway/node.vala
+++ b/lib/sway/node.vala
@@ -40,6 +40,18 @@ namespace AstalSway {
public weak Node parent;
public List<weak Node> nodes;
+ public List<weak Window> windows { owned get {
+ var arr = new List<weak Window> ();
+ foreach (var node in nodes) {
+ if (node.node_type == NodeType.WINDOW) {
+ arr.append(node as Window);
+ } else {
+ arr.concat(node.windows);
+ }
+ }
+
+ return arr;
+ }}
protected Json.Object data;
@@ -56,7 +68,15 @@ namespace AstalSway {
case "workspace":
var ws = new Workspace();
return ws as Node;
-
+ case "con":
+ case "floating_con":
+ if (obj.get_member("pid") != null) {
+ var win = new Window();
+ return win as Node;
+ } else {
+ var con = new Container();
+ return con as Node;
+ }
default:
var node = new Node();
return node;
@@ -115,6 +135,7 @@ namespace AstalSway {
node = Node.build(obj);
}
+ node.parent = this;
new_nodes.append(node);
_temp_nodes.insert(id, node);
node.sync(obj);
@@ -122,5 +143,21 @@ namespace AstalSway {
nodes = (owned) new_nodes;
}
+
+ public virtual void focus() {
+
+ }
+
+ public bool contain(Node node) {
+ parent = node.parent;
+ while (parent != null) {
+ if (id == parent.id) {
+ return true;
+ }
+ parent = parent.parent;
+ }
+
+ return false;
+ }
}
}