From 1fdc65ff930a326c92b58129970026daec400862 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Leonardo=20Hern=C3=A1ndez=20Hern=C3=A1ndez?=
 <leohdz172@protonmail.com>
Date: Sun, 18 Sep 2022 17:25:12 -0500
Subject: make more permissive exclusive focus

now you can call focusstack() while a layer surface is focused and when it gets
unmapped the newly focused clients will be actually focused
---
 dwl.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/dwl.c b/dwl.c
index c1fb9c1..270f8f0 100644
--- a/dwl.c
+++ b/dwl.c
@@ -1145,9 +1145,6 @@ focusclient(Client *c, int lift)
 {
 	struct wlr_surface *old = seat->keyboard_state.focused_surface;
 	int i;
-	/* Do not focus clients if a layer surface is focused */
-	if (exclusive_focus)
-		return;
 
 	/* Raise client in stacking order if requested */
 	if (c && lift)
@@ -1164,8 +1161,11 @@ focusclient(Client *c, int lift)
 		c->isurgent = 0;
 		client_restack_surface(c);
 
-		for (i = 0; i < 4; i++)
-			wlr_scene_rect_set_color(c->border[i], focuscolor);
+		/* Don't change border color if there is a exclusive focus
+		 * (at this moment it means that a layer surface is focused) */
+		if (!exclusive_focus)
+			for (i = 0; i < 4; i++)
+				wlr_scene_rect_set_color(c->border[i], focuscolor);
 	}
 
 	/* Deactivate old client if focus is changing */
-- 
cgit v1.2.3