Do all animations with clones, hiding window actors. When animations are
complete we toggle back to window actors if the window isn't stacked.
We put the clones in their own Space specific container in Main.uiGroup. Above
the BackgroundGroup (moved to the bottom of the uiGroup) and below the
window_group.
Also remove the then obsolete stackWindow.
Resizing happens asynchronously on wayland, and running a second resize will
override any preceding commands apparently. This meant running ensure
synchronously in eg. `cycleWindowWidth` would fail to actually resize wayland
windows.
Instead we actually fix the underlying problem by running ensure when
`size-changed` happens.
As an added benefit there's no reason to handle fullscreen toggling separately.
Some technical notes:
- We need to connect `size-changed` after initial positioning is done, this is
currently done on the actor's first `show` signal.
- ensure will itself resize windows, maximizing their height. This doesn't
create an infinite loop as long as the window settles into a stable height.
`'in-fullscreen-changed'` only works for a single fullscreen window per
workspace. Meaning it's useless for our purposes.
This also makes neighbouring windows responsive to fullscreen changes.
Attaching and detaching windows could be somewhat disorienting. Eg. making the
focused window hidden by other floating windows when attaching the current
window to the tiling.
This is useful in the case of nothing changing between a disable and enable. For
instance when locking the screen. Having windows move around in that case is
pretty bad.
We do create a new spaces however as we want to support editing the `Space`
definition and getting the changes when we do a reload (this should work as long
as `Space` is an Array).
It doesn't make much sense to show the scratch layer when previewing. In
addition if using `super+escape` as the binding this makes it impossible to
abort the preview.
In the long run it's probably better to make a whitelist of bindings that's
appropriate to execute while a preview is active.
Pressing <meta>-ESC will now abort workspace changes the same way window changes
are aborted
Probably fixes#37 too (untested since <super>-TAB is restricted to active workspace
atm.)
Since `add_filter` will filter out «stuck» windows the heuristic wasn't run on
any possible scratch windows (since most floating scratch windows are «stuck»).