--- src/core.c-ORIGINAL	2004-09-06 17:23:50.000000000 -0700
+++ src/core.c	2004-09-06 18:01:27.000000000 -0700
@@ -249,6 +249,40 @@ meta_core_user_lower (Display *xdisplay,
     meta_bug ("No such frame window 0x%lx!\n", frame_xwindow);
   
   meta_window_lower (window);
+
+  if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
+    {
+      /* Move to the back of the focusing workspace's MRU list.
+       * We should only be "removing" it from the MRU list if it's
+       * not already there.  Note that it's possible that we might
+       * be processing this FocusIn after we've changed to a
+       * different workspace; we should therefore update the MRU
+       * list only if the window is actually on the active
+       * workspace.  (Borrowed from window.c.)
+       */
+      if (window->screen->active_workspace &&
+	  meta_window_visible_on_workspace (window, 
+					    window->screen->active_workspace))
+	{
+	  GList* link;
+	  link = g_list_find (window->screen->active_workspace->mru_list, 
+			      window);
+	  g_assert (link);
+
+	  window->screen->active_workspace->mru_list = 
+	    g_list_remove_link (window->screen->active_workspace->mru_list,
+				link);
+	  g_list_free (link);
+
+	  window->screen->active_workspace->mru_list = 
+	    g_list_append (window->screen->active_workspace->mru_list, 
+			   window);
+	}
+
+      /* focus on the (new) topmost window */
+      if (window->has_focus)
+	meta_workspace_focus_default_window(window->screen->active_workspace, window);
+    }
 }
 
 void
