diff --git a/src/cmd/rio/dat.h b/src/cmd/rio/dat.h
index b2b74ee..aa08fcf 100644
--- a/src/cmd/rio/dat.h
+++ b/src/cmd/rio/dat.h
@@ -150,6 +150,7 @@
 extern int			solidsweep;
 extern int			numvirtuals;
 extern int			scrolling;
+extern int			ffm;	/* focus follows mouse */
 
 extern Atom		exit_rio;
 extern Atom		restart_rio;
diff --git a/src/cmd/rio/event.c b/src/cmd/rio/event.c
index 4564277..457153d 100644
--- a/src/cmd/rio/event.c
+++ b/src/cmd/rio/event.c
@@ -282,6 +282,7 @@
 void
 destroy(Window w)
 {
+	int i;
 	Client *c;
 
 	curtime = CurrentTime;
@@ -289,6 +290,11 @@
 	if(c == 0)
 		return;
 
+	if(numvirtuals > 1)
+		for(i=0; i<numvirtuals; i++)
+			if(currents[i] == c)
+				currents[i] = 0;
+
 	rmclient(c);
 
 	/* flush any errors generated by the window's sudden demise */
@@ -470,12 +476,14 @@
 	Client *c;
 
 	curtime = e->time;
+	if(!ffm)
 	if(e->mode != NotifyGrab || e->detail != NotifyNonlinearVirtual)
 		return;
 	c = getclient(e->window, 0);
 	if(c != 0 && c != current){
 		/* someone grabbed the pointer; make them current */
-		XMapRaised(dpy, c->parent);
+		if(!ffm)
+			XMapRaised(dpy, c->parent);
 		top(c);
 		active(c);
 	}
diff --git a/src/cmd/rio/main.c b/src/cmd/rio/main.c
index bc43a99..d20c3a0 100644
--- a/src/cmd/rio/main.c
+++ b/src/cmd/rio/main.c
@@ -40,6 +40,7 @@
 int 			num_screens;
 int			solidsweep = 0;
 int			numvirtuals = 0;
+int			ffm = 0;
 
 Atom		exit_rio;
 Atom		restart_rio;
@@ -95,6 +96,10 @@
 			background = 1;
 		else if(strcmp(argv[i], "-debug") == 0)
 			debug++;
+	/*
+		else if(strcmp(argv[i], "-ffm") == 0)
+			ffm++;
+	*/
 		else if(strcmp(argv[i], "-font") == 0 && i+1<argc){
 			i++;
 			fname = argv[i];
@@ -335,8 +340,8 @@
 	attr.cursor = s->arrow;
 	attr.event_mask = SubstructureRedirectMask
 		| SubstructureNotifyMask | ColormapChangeMask
-		| ButtonPressMask | ButtonReleaseMask | PropertyChangeMask |
-		KeyPressMask;
+		| ButtonPressMask | ButtonReleaseMask | PropertyChangeMask 
+		| KeyPressMask | EnterWindowMask;
 	mask = CWCursor|CWEventMask;
 	XChangeWindowAttributes(dpy, s->root, mask, &attr);
 	XSync(dpy, False);
diff --git a/src/cmd/rio/menu.c b/src/cmd/rio/menu.c
index 21195d2..eb92b74 100644
--- a/src/cmd/rio/menu.c
+++ b/src/cmd/rio/menu.c
@@ -319,7 +319,7 @@
 	}
 
 	numhidden--;
-	for(i = n; i < numhidden; i ++){
+	for(i = n; i < numhidden; i++){
 		hiddenc[i] = hiddenc[i+1];
 		b3items[B3FIXED+i] = b3items[B3FIXED+i+1];
 	}
@@ -368,8 +368,11 @@
 void
 switch_to_c(int n, Client *c)
 {
-	if(c && c->next)
-		switch_to_c(n,c->next);
+	if(c == 0)
+		return;
+
+	if(c->next)
+		switch_to_c(n, c->next);
 
 	if(c->parent == DefaultRootWindow(dpy))
 		return;
@@ -384,8 +387,8 @@
 		int i;
 
 		for(i = 0; i < numhidden; i++)
-		if(c == hiddenc[i]) 
-			break;
+			if(c == hiddenc[i]) 
+				break;
 
 		if(i == numhidden){
 			XMapWindow(dpy, c->window);
