diff --git a/sway/handlers.c b/sway/handlers.c
index 817f197e..0e68a3c8 100644
--- a/sway/handlers.c
+++ b/sway/handlers.c
@@ -239,10 +239,11 @@ static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifier
 
 static bool handle_pointer_motion(wlc_handle view, uint32_t time, const struct wlc_origin *origin) {
 	mouse_origin = *origin;
-	if (!config->focus_follows_mouse) {
-		return false;
+	static wlc_handle prev_view = -1;
+	if (config->focus_follows_mouse && prev_view != view) {
+		focus_pointer();
 	}
-	focus_pointer();
+	prev_view = view;
 	return false;
 }