This commit should fix most input focus bugs (especially those related to
floating windows). The actual settings of input focus are delayed to exclude
redundant event. Dead code since this commit is removed.
This commit also fixes a bug for non-floating windows converted form floating
state. The workaround for `ido-mode` is also improved to properly handle
`exwm-mode` buffers.
This commit makes a floating window centered to its leading window if it has
a valid WM_TRANSIENT_FOR property set. Other it's placed at the center of the
screen.
Remove `exwm--with-current-id`, which was introduced to as a wrapper to
`with-current-buffer` to do extra checks. Note that in functions run as hooks,
the validation of window ID is still required as they are not synchronized with
events.
With the introduction of ch11ng/xelb@6a7bccc, many weird behaviors should
disappear. These include by not limit to
* race conditions when managing a window (a workaround is provided in @14628a9)
* race conditions when unmanaging a window
This commit removes some corresponding code.
* Make sure `exwm-manage--manage-window-queue` is cleaned
* Improve input focus handling after unmanaging a window
* Remove a redundant call to `exwm-layout--show`
Since it takes some time for EXWM to create a buffer for a window (to do some
checking for example), the window may send several MapRequest events before
it's mapped. This commit should fix such issue.
* Correct ConfigureNotify events sent to fullscreen windows.
* Exit fullscreen mode before switching workspace.
* Temporarily treat `xcb:Atom:_NET_WM_STATE_ABOVE` as
`xcb:Atom:_NET_WM_STATE_FULLSCREEN` since
a) "plugin-container" (Flash Player) seems only set this, and
b) it's not normally used by applications.
This makes fullscreen videos working in e.g. iceweasel.