From: Jonatan L. <th...@ho...> - 2005-08-10 21:51:26
|
On Wed, 10 Aug 2005 16:11:47 +0200 Jonatan Liljedahl <th...@ho...> wrote: > On Wed, 10 Aug 2005 14:51:35 +0200 > Guido Schimmels <__g...@we...> wrote: > > > On Wed, 10 Aug 2005 13:30:05 +0200 > > Jonatan Liljedahl <th...@ho...> wrote: > > > > > On Wed, 10 Aug 2005 09:49:38 +0800 > > > Lars Hansson <la...@un...> wrote: > > > > > > > Every time I switch workspace OroboROX focus cycles all the > > > > Windows on the new workspace. Is this intentional? > > > > > > I see this too, and the redraws is strange, it seems slow and > > > flickery somehow. Could OroboROX somehow show all windows at once, > > > something like drawing them into invisible X-windows and then make > > > them all visible?(Don't know how it works...) > > > > Frankly, I don't know what's going on. > > This is what's going on: > As each client on the new workspace in goto_workspace() is mapped it > triggers handleMapNotify() which calls apply_focus_policy() on the > client, which calls set_input_focus() on it. > > each window should NOT do apply_focus_policy() when goto_workspace() > maps them. > > apply_focus_policy() should actually quit if the client isn't on this > workspace, but we can't check that becouse the events get queued and > when handleMapNotify() calls apply_focus_policy() after a > goto_workspace(), workspace is already set to the new so we can't > compare c->win_workspace and workspace becouse they will be the same. > > But, why do we call apply_focus_policy() in handleMapNotify() at all? > I just tried and removed it, and the above problem went away and > everything else seems to be working! This also fixes the focus policy > behaviour at workspace switch, if focus follows mouse the client under > the mouse is focused, else (or if no client under mouse) the last > focused client on this ws is focused. Works great! > > PS. found one quirk, in clientShow() after the call to > unshow_desktop() we must call update_focus() to get the frames drawn > right (or else both the showed client and the last focused client is > drawn as focused though only the newly showed client actually is)... More stuff to fix: when a window is moved to another workspace where some other window was drawn focused before, that window is still drawn as focused but it is not... /Jonatan -=( http://kymatica.com )=- |