shell: Don't focus to background, screensaver or input_panel surfaces
diff --git a/src/shell.c b/src/shell.c
index d8a508e..80fdf72 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -2488,6 +2488,15 @@
 	if (is_black_surface(focus, &upper))
 		focus = upper;
 
+	switch (get_shell_surface_type(focus)) {
+		case SHELL_SURFACE_BACKGROUND:
+		case SHELL_SURFACE_SCREENSAVER:
+		case SHELL_SURFACE_INPUT_PANEL:
+			return;
+		default:
+			break;
+	}
+
 	if (seat->pointer->grab == &seat->pointer->default_grab)
 		activate(shell, focus, ws);
 }