diff -Nur xfwm4-4.6.1.orig/src/focus.c xfwm4-4.6.1/src/focus.c
--- xfwm4-4.6.1.orig/src/focus.c 2009-04-15 01:58:59.000000000 -0600
+++ xfwm4-4.6.1/src/focus.c 2009-07-28 19:31:44.000000000 -0600
@@ -214,7 +214,12 @@
{
Client *c2 = clientGetFocus();
- if ((c2 != NULL) && (c2->win_layer == c->win_layer))
+ /*
+ * Place windows under the currently focused only if focus
+ * stealing prevention had prevented the focus transition,
+ * otherwise, leave the unfocused window on top.
+ */
+ if ((c2 != NULL) && (c2->win_layer == c->win_layer) && prevented)
{
clientSortRing(c);
clientLower (c, c2->frame);