--- xfwm4-4.0.4.orig/src/client.c 2004-03-07 10:08:09.000000000 +0100 +++ xfwm4-4.0.4/src/client.c 2004-04-03 16:27:06.929138760 +0200 @@ -3857,10 +3857,19 @@ static inline void clientShowSingle (Client * c, gboolean change_state) { + gboolean sticky = CLIENT_FLAG_TEST (c, CLIENT_FLAG_STICKY); g_return_if_fail (c != NULL); MyXGrabServer (); - if ((c->win_workspace == workspace) - || CLIENT_FLAG_TEST (c, CLIENT_FLAG_STICKY)) + + if (c->win_workspace != workspace && !sticky) + { + TRACE ("switching from workspace %i to workspace %i" + "to show client \"%s\" (0x%lx)", + workspace, c->win_workspace, + c->name, c->window); + workspaceSwitch (c->win_workspace, NULL); + } + if ((c->win_workspace == workspace) || sticky) { TRACE ("showing client \"%s\" (0x%lx)", c->name, c->window); CLIENT_FLAG_SET (c, CLIENT_FLAG_VISIBLE);