diff -r 72e52c5333ef config.def.h
--- a/config.def.h	Wed Nov 25 13:56:17 2009 +0000
+++ b/config.def.h	Sun Mar 21 00:38:45 2010 +0100
@@ -12,6 +12,7 @@
 static const unsigned int snap      = 32;       /* snap pixel */
 static const Bool showbar           = True;     /* False means no bar */
 static const Bool topbar            = True;     /* False means bottom bar */
+static const Bool focusonclick      = True;     /* Change focus only on click */
 
 /* tagging */
 static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
diff -r 72e52c5333ef dwm.c
--- a/dwm.c	Wed Nov 25 13:56:17 2009 +0000
+++ b/dwm.c	Sun Mar 21 00:38:45 2010 +0100
@@ -791,14 +791,16 @@
 
 	if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root)
 		return;
-	if((m = wintomon(ev->window)) && m != selmon) {
-		unfocus(selmon->sel);
-		selmon = m;
+	if (!focusonclick) {
+		if((m = wintomon(ev->window)) && m != selmon) {
+			unfocus(selmon->sel, False);
+			selmon = m;
+		}
+		if((c = wintoclient(ev->window)))
+			focus(c);
+		else
+			focus(NULL);
 	}
-	if((c = wintoclient(ev->window)))
-		focus(c);
-	else
-		focus(NULL);
 }
 
 void

