--- xfwm4-4.4.0/src/client.c.orig 2007-01-20 19:20:18.000000000 +0100 +++ xfwm4-4.4.0/src/client.c 2007-03-04 21:56:14.000000000 +0100 @@ -2543,11 +2543,19 @@ TRACE ("entering clientActivate \"%s\" (0x%lx)", c->name, c->window); screen_info = c->screen_info; - clientSetWorkspace (c, screen_info->current_ws, TRUE); - clientShow (c, TRUE); - clientClearAllShowDesktop (screen_info); - clientSetFocus (screen_info, c, timestamp, NO_FOCUS_FLAG); - clientRaise (c, None); + if ((screen_info->current_ws == c->win_workspace)) + { + clientShow (c, TRUE); + clientClearAllShowDesktop (screen_info); + clientSetFocus (screen_info, c, timestamp, NO_FOCUS_FLAG); + clientRaise (c, None); + } + else + { + TRACE ("Setting WM_STATE_DEMANDS_ATTENTION flag on \"%s\" (0x%lx)", c->name, c->window); + FLAG_SET (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION); + clientSetNetState (c); + } } void