Allow animation to blend in saved window image before it was refresh.
Window images are refreshed when, for example, the window's size
changed. With this, animations can blend the window before and after the
size change to have a smoother transition.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
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>