]> git.sur5r.net Git - i3/i3/commit
Simplify tree_close_internal 3342/head
authorOrestis Floros <orestisf1993@gmail.com>
Sun, 29 Jul 2018 22:56:51 +0000 (01:56 +0300)
committerOrestis Floros <orestisf1993@gmail.com>
Mon, 30 Jul 2018 16:41:24 +0000 (19:41 +0300)
commitf9084033765793b6ed04a75e8b3e5e425df6c783
tree9ab2fb9fa8748a33db9b6f99aa0d65a5c962f5e8
parent715cea61af33b3600d2fc1e921126359a5629932
Simplify tree_close_internal

This commit makes multiple changes in tree_close_internal. I didn't
split them because they are not completely independent.

- Remove force_set_focus parameter
This parameter was always set to `false` throughout the code base except
for one case where it was set to `(con == focused)`, when killing a
floating con's parent (the one with type CT_FLOATING_CON). But this case
is not needed anymore since the special handling of CT_FLOATING_CONs in
con_next_focused was removed in #2941.
- Assume that con_next_focused does not returned a container of type
CT_DOCKAREA. This is reasonable since con_next_focused uses the
focus_head stack and has special handling of CT_DOCKAREA containers.
- Remove is_mapped
This variable was only used in the if block towards the end of
tree_close_internal. Ignoring the, now removed, dockarea code and the
use of force_set_focus this block performed only one useful action:
focus the `next` container when `con == focused`. `con == focused` was a
necessary and sufficient condition for the con_activate call:
if `con != focused` we could reach the inner if blocks because of the
other conditions but would never focus another container. If `con ==
focused` then all other conditions would be irrelevant.
- Remove special handling of floating containers
Since the `next` focused container is calculated through the parent for
floating containers, I moved this code to con_next_focused.
Also, because of the removal of force_set_focus, it appears that we can
call con_on_remove_child for floating containers as well.
include/tree.h
src/con.c
src/floating.c
src/handlers.c
src/randr.c
src/tree.c
src/workspace.c