Index: uspace/srv/hid/display/seat.c
===================================================================
--- uspace/srv/hid/display/seat.c	(revision 17c0f5d3dbc71d4acf0607c23f54e6519bcea40f)
+++ uspace/srv/hid/display/seat.c	(revision ededdc4233df3064b0a6ac39e158de4fd1520aeb)
@@ -138,5 +138,5 @@
 /** Evacuate seat references to window.
  *
- * If seat's focus is @a wnd, it will be set to a different window.
+ * If seat's focus is @a wnd, it will be set to NULL.
  * If seat's popup window is @a wnd, it will be set to NULL.
  *
@@ -146,15 +146,6 @@
 void ds_seat_evac_wnd_refs(ds_seat_t *seat, ds_window_t *wnd)
 {
-	ds_window_t *nwnd;
-
-	if (seat->focus == wnd) {
-		nwnd = ds_display_prev_window(wnd);
-		if (nwnd == NULL)
-			nwnd = ds_display_last_window(wnd->display);
-		if (nwnd == wnd)
-			nwnd = NULL;
-
-		ds_seat_set_focus(seat, nwnd);
-	}
+	if (seat->focus == wnd)
+		ds_seat_set_focus(seat, NULL);
 
 	if (seat->popup == wnd)
Index: uspace/srv/hid/display/test/seat.c
===================================================================
--- uspace/srv/hid/display/test/seat.c	(revision 17c0f5d3dbc71d4acf0607c23f54e6519bcea40f)
+++ uspace/srv/hid/display/test/seat.c	(revision ededdc4233df3064b0a6ac39e158de4fd1520aeb)
@@ -90,52 +90,5 @@
 }
 
-/** Evacuate focus when another window is available. */
-PCUT_TEST(evac_focus_two_windows)
-{
-	ds_display_t *disp;
-	ds_client_t *client;
-	ds_seat_t *seat;
-	ds_window_t *w0;
-	ds_window_t *w1;
-	display_wnd_params_t params;
-	bool called_cb = false;
-	errno_t rc;
-
-	rc = ds_display_create(NULL, df_none, &disp);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = ds_client_create(disp, &test_ds_client_cb, &called_cb, &client);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = ds_seat_create(disp, &seat);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	display_wnd_params_init(&params);
-	params.rect.p0.x = params.rect.p0.y = 0;
-	params.rect.p1.x = params.rect.p1.y = 1;
-
-	rc = ds_window_create(client, &params, &w1);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	rc = ds_window_create(client, &params, &w0);
-	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
-
-	ds_seat_set_focus(seat, w1);
-	PCUT_ASSERT_EQUALS(w1, seat->focus);
-	PCUT_ASSERT_TRUE(called_cb);
-	called_cb = false;
-
-	ds_seat_evac_wnd_refs(seat, w1);
-	PCUT_ASSERT_EQUALS(w0, seat->focus);
-	PCUT_ASSERT_TRUE(called_cb);
-
-	ds_window_destroy(w0);
-	ds_window_destroy(w1);
-	ds_seat_destroy(seat);
-	ds_client_destroy(client);
-	ds_display_destroy(disp);
-}
-
-/** Evacuate focus from the only existing window.
+/** Evacuate focus from window.
  *
  * After evacuating no window should be focused
Index: uspace/srv/hid/display/window.c
===================================================================
--- uspace/srv/hid/display/window.c	(revision 17c0f5d3dbc71d4acf0607c23f54e6519bcea40f)
+++ uspace/srv/hid/display/window.c	(revision ededdc4233df3064b0a6ac39e158de4fd1520aeb)
@@ -183,4 +183,6 @@
 	disp = wnd->display;
 
+	ds_window_unfocus(wnd);
+
 	ds_client_remove_window(wnd);
 	ds_display_remove_window(wnd);
