Read-only mirror of https://gitlab.gnome.org/GNOME/mutter
ae292c856b
GTK+ focuses its own windows with RevertToParent, which means that when a GTK+ CSD window is destroyed, the X server will set the focus back to the root window. The event stream that we is an UnmapNotify followed by a FocusOut event. Our own UnmapNotify-handling code unmanages the window and forcibly changes the focus to the next default window in the stack. Since UnmapNotify events don't come with timestamps, we query for one, and set the window focus using that. But there's *still* a FocusOut event in the stack, with an older timestamp and serial than our own focusing. We see this, throw it out since it's older than the most recent focus, but then our own code that notices the root has been focused kicks in and tries to focus the default window... using a timestamp older than our most recent focusing. meta_display_sanity_check_timestamps notices this, and (rightly so) puts a warning in our face, telling something is awry. Only let our workarounds kick in when the event is new enough, otherwise our code will get confused over old events. This stops the: Window manager warning: last_focus_time (367917173) is greater than comparison timestamp (367917170). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW. Trying to work around... warning spam when closing a CSD window. |
||
---|---|---|
data | ||
doc | ||
po | ||
src | ||
tools | ||
.gitignore | ||
autogen.sh | ||
configure.ac | ||
COPYING | ||
Makefile.am | ||
mutter.doap | ||
NEWS |