It's easier to just store them together, since the same group of
information is needed for parsed window rules, and for window rendering.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Because wm_tree tracks the entire window tree, it's able to replace
several old data structures we used to track windows: the window hash
table, the window stack, and the subwin table. So we got rid of those,
and fully switched to wm_tree.
Fixes window rules for window managers that don't put client window
directly under toplevel windows. This includes, according to people's
reports, at least i3 and KDE.
Fixed a couple small bugs:
* dbus was returning window ID as a boolean.
* window frame extents not cleared after its client window disappears.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
The idea is to allow backend plugins to override backend functions by
modifying this table. Right now, when they do this they are actually
changing a global variable and their change will persist after backend
resets (!). Store the table inside backend_base solves this problem.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
We want to change the backend interface as little as possible once we
release it as a public interface, so while we still can, we should try
to give it maximum flexibility.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>