From f8f94c97f5d324c8876e88d0d82fd518eca25b1b Mon Sep 17 00:00:00 2001
From: Leonardo Hernández Hernández <leohdz172@protonmail.com>
Date: Sat, 10 Sep 2022 22:11:06 -0500
Subject: fix idle inhibitor check

previously we tried to get a client from the surface and then compare it with
the excluded surface, if we cannot get a client from the surface (e.g: a layer
surface) it just ignored all the next idle inhibitors no matter what

What I have should done is just checking if the excluded surface is equal to
the current idle inhibitor's surface and continue in case it is.
---
 dwl.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/dwl.c b/dwl.c
index 7c3855d..9420ae5 100644
--- a/dwl.c
+++ b/dwl.c
@@ -694,14 +694,14 @@ chvt(const Arg *arg)
 void
 checkidleinhibitor(struct wlr_surface *exclude)
 {
-	Client *c, *w;
 	int inhibited = 0;
 	struct wlr_idle_inhibitor_v1 *inhibitor;
 	wl_list_for_each(inhibitor, &idle_inhibit_mgr->inhibitors, link) {
-		c = client_from_wlr_surface(inhibitor->surface);
-		if (exclude && (!(w = client_from_wlr_surface(exclude)) || w == c))
+		Client *c;
+		if (exclude == inhibitor->surface)
 			continue;
-		if (!c || VISIBLEON(c, c->mon)) {
+		if (!(c = client_from_wlr_surface(inhibitor->surface))
+				|| VISIBLEON(c, c->mon)) {
 			inhibited = 1;
 			break;
 		}
-- 
cgit v1.2.3