aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2018-07-15 15:20:21 +1000
committerFurkan Sahin <furkan-dev@proton.me>2018-07-15 15:20:21 +1000
commitbabfa0da0ca624eb621216d06a25688b88f33fe9 (patch)
tree87a568ff97fc94ca82b9ceb4abacb02ea86a9f71 /include
parentdd34861609a5aca24a1cfb0912ff1523e94aa92a (diff)
Make focus part of transactions
Rather than maintain copies of the entire focus stack, this PR transactionises the focus by introducing two new properties to the container state and using those when rendering. * `bool focused` means this container has actual focus. Only one container should have this equalling true in its current state. * `struct sway_container *focus_inactive_child` points to the immediate child that was most recently focused (eg. for tabbed and stacked containers).
Diffstat (limited to 'include')
-rw-r--r--include/sway/input/seat.h11
-rw-r--r--include/sway/tree/container.h3
2 files changed, 3 insertions, 11 deletions
diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h
index 0e440701..1f7792ba 100644
--- a/include/sway/input/seat.h
+++ b/include/sway/input/seat.h
@@ -119,17 +119,6 @@ struct sway_container *seat_get_active_child(struct sway_seat *seat,
struct sway_container *container);
/**
- * Return the immediate child of container which was most recently focused, with
- * fallback to selecting the child in the parent's `current` (rendered) children
- * list.
- *
- * This is useful for when a tabbed container and its children are destroyed but
- * still being rendered, and we have to render an appropriate child.
- */
-struct sway_container *seat_get_active_current_child(struct sway_seat *seat,
- struct sway_container *container);
-
-/**
* Iterate over the focus-inactive children of the container calling the
* function on each.
*/
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h
index 11780916..04e50fc6 100644
--- a/include/sway/tree/container.h
+++ b/include/sway/tree/container.h
@@ -68,6 +68,9 @@ struct sway_container_state {
struct sway_container *parent;
list_t *children;
+ struct sway_container *focused_inactive_child;
+ bool focused;
+
// View properties
double view_x, view_y;
double view_width, view_height;