Clean up container title functions

* Add and use lenient_strcat and lenient_strncat functions
* Rename `concatenate_child_titles` function as that's no longer what it
does
* Rename `container_notify_child_title_changed` because we only need to
notify that the tree structure has changed, not titles
* Don't notify parents when a child changes its title
* Update ancestor titles when changing a container's layout
	* Eg. create nested tabs and change the inner container to stacking
* No need to store tree presentation in both container->name and
formatted_title
This commit is contained in:
Ryan Dwyer 2018-05-25 21:07:59 +10:00
parent 3c77f066a5
commit db38b9bbf3
7 changed files with 79 additions and 83 deletions

View file

@ -149,7 +149,7 @@ struct sway_container *container_remove_child(struct sway_container *child) {
}
}
child->parent = NULL;
container_notify_child_title_changed(parent);
container_notify_subtree_changed(parent);
return parent;
}
@ -184,8 +184,8 @@ void container_move_to(struct sway_container *container,
container_sort_workspaces(new_parent);
seat_set_focus(seat, new_parent);
}
container_notify_child_title_changed(old_parent);
container_notify_child_title_changed(new_parent);
container_notify_subtree_changed(old_parent);
container_notify_subtree_changed(new_parent);
if (old_parent) {
if (old_parent->type == C_OUTPUT) {
arrange_output(old_parent);
@ -497,8 +497,8 @@ void container_move(struct sway_container *container,
}
}
container_notify_child_title_changed(old_parent);
container_notify_child_title_changed(container->parent);
container_notify_subtree_changed(old_parent);
container_notify_subtree_changed(container->parent);
if (old_parent) {
seat_set_focus(config->handler_context.seat, old_parent);
@ -847,7 +847,7 @@ struct sway_container *container_split(struct sway_container *child,
container_add_child(cont, child);
}
container_notify_child_title_changed(cont);
container_notify_subtree_changed(cont);
return cont;
}