From: Jonatan L. <th...@ho...> - 2005-08-06 13:46:29
|
On Sat, 6 Aug 2005 04:03:43 +0200 Guido Schimmels <__g...@we...> wrote: > On Fri, 5 Aug 2005 18:54:51 +0200 > Jonatan Liljedahl <th...@ho...> wrote: > > > On Wed, 3 Aug 2005 15:57:41 +0200 > > Jonatan Liljedahl <th...@ho...> wrote: > > > Another way to induce the bug is this: > > Open some window on a clean workspace. > > Open a Edit window. > > Do some changes and exit Edit, which will bring up the Save dialog. > > Press discard, now both the save dialog and Edit will be closed at > > the same time, and the one window left on the workspace will NOT be > > drawn as focused, while it actually IS focused. > > > > So, it's apparently something with two windows closing at the "same > > time". > > I tried this, but here it works. But I can see how this could happen. > The question is what event is sent when a window is closed? > We act on DestroyNotify, but I thought this was sent for a window to > be *asked* to be destroyed, not after it actually happens. You could > try and insert > > if (get_input_focus() == None) > focus_workspace(); > > at the top of handleDestroyNotify(): > > inline static void handleDestroyNotify(XDestroyWindowEvent * ev) > { > if (get_input_focus() == None) > focus_workspace(); > > Client *c = client_of_window(ev->window); > > if (!c) return; > > ...and see if that helps. > You could try the same with handleUnmapNotify(). Tried both, it didn't help. > Any other idea? Note that the focus isn't lost, it's only not reflected on the titlebar. If you force the titlebar to be redrawn by shading the window, it's redrawed correctly (with active-* pixmaps instead of inactive-*). PS. Sometimes I get this in my message log: ** (process:8882): CRITICAL **: file /Users/lijon/Apps/OroboROX-0.9.7.4/src/frame.c: line 700 (frameDraw): assertion `client_exists(c)' failed Not when the above bug happens though. /Jonatan -=( http://kymatica.com )=- |