Bug fix: --use-ewmh-active-win causes wrong focus state in Awesome

- Fix a bug that causes wrong focus detection result in Awesome and
  maybe other window managers, when --use-ewmh-active-win is enabled and
  _NET_ACTIVE_WINDOW changes before the newly-focused window is mapped.

- Fix a typo that causes more than one window to stay focused after a
  window destruction with --use-ewmh-active-win.

- Fix a bug that find_clientwin() incorrectly returns a window when
  window ID 0 is passed to it.

- Check for window ID 0 in update_ewmh_active_win().
This commit is contained in:
Richard Grenville
2012-11-27 00:02:18 +08:00
parent 9ca20e7e32
commit 0f851b17a2
2 changed files with 16 additions and 4 deletions

View File

@ -378,8 +378,11 @@ typedef struct {
// === Window related ===
/// Linked list of all windows.
struct _win *list;
/// Current active window. Used by EWMH _NET_ACTIVE_WINDOW focus
/// detection.
/// Pointer to <code>win</code> of current active window. Used by
/// EWMH <code>_NET_ACTIVE_WINDOW</code> focus detection. In theory,
/// it's more reliable to store the window ID directly here, just in
/// case the WM does something extraordinary, but caching the pointer
/// means another layer of complexity.
struct _win *active_win;
// === Shadow/dimming related ===