diff --git a/src/focus.c b/src/focus.c
index fcf852858f6fdcefd348280251e66f90c638f9ec..31d7a65b69cf50a1e2699f873ace2d240d561aee 100644
--- a/src/focus.c
+++ b/src/focus.c
@@ -305,7 +305,7 @@ clientPassFocus (ScreenInfo *screen_info, Client *c, Client *exclude)
     new_focus = NULL;
     current_focus = client_focus;
     c2 = NULL;
-#if 0
+#if 1
     if (pending_focus)
     {
         current_focus = pending_focus;
@@ -323,14 +323,15 @@ clientPassFocus (ScreenInfo *screen_info, Client *c, Client *exclude)
 
     display_info = screen_info->display_info;
     top_most = clientGetTopMostFocusable (screen_info, look_in_layer, exclude);
+#if 0
     if (screen_info->params->click_to_focus)
     {
         if (c)
         {
-            if (clientIsTransientOrModal (c))
+            if (clientIsModal (c))
             {
-                /* If the window is a transient or modal, send focus back to
-                 * its parent window.
+                /* If the window is a modal, send focus back to its parent
+                 * window.
                  * Modals are transients, and we aren't interested in modal
                  * for group, so it safe to use clientGetTransient because
                  * it's really what we want...
@@ -353,7 +354,10 @@ clientPassFocus (ScreenInfo *screen_info, Client *c, Client *exclude)
             }
         }
     }
-    else if (XQueryPointer (myScreenGetXDisplay (screen_info), screen_info->xroot, &dr, &window, &rx, &ry, &wx, &wy, &mask))
+    else
+#endif
+    if (!(screen_info->params->click_to_focus) &&
+        XQueryPointer (myScreenGetXDisplay (screen_info), screen_info->xroot, &dr, &window, &rx, &ry, &wx, &wy, &mask))
     {
         new_focus = clientAtPosition (screen_info, rx, ry, exclude);
     }