aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile4
-rw-r--r--client.c34
2 files changed, 15 insertions, 23 deletions
diff --git a/Makefile b/Makefile
index d3498d0..34f2927 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.21 2015/06/26 15:21:58 okan Exp $
+# $OpenBSD: Makefile,v 1.22 2016/09/20 18:21:32 okan Exp $
.include <bsd.xconf.mk>
@@ -10,7 +10,7 @@ SRCS= calmwm.c screen.c xmalloc.c client.c menu.c \
CPPFLAGS+= -I${X11BASE}/include -I${X11BASE}/include/freetype2 -I${.CURDIR}
-CFLAGS+= -Wall
+CFLAGS+= -Wall -g
LDADD+= -L${X11BASE}/lib -lXft -lXrender -lX11 -lxcb -lXau -lXdmcp \
-lfontconfig -lexpat -lfreetype -lz -lXrandr -lXext
diff --git a/client.c b/client.c
index b6d3b38..724bf47 100644
--- a/client.c
+++ b/client.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: client.c,v 1.222 2016/09/16 14:32:02 okan Exp $
+ * $OpenBSD: client.c,v 1.223 2016/09/20 18:21:32 okan Exp $
*/
#include <sys/types.h>
@@ -34,14 +34,11 @@
static struct client_ctx *client_next(struct client_ctx *);
static struct client_ctx *client_prev(struct client_ctx *);
static void client_mtf(struct client_ctx *);
-static void client_none(struct screen_ctx *);
static void client_placecalc(struct client_ctx *);
static void client_wm_protocols(struct client_ctx *);
static void client_mwm_hints(struct client_ctx *);
static int client_inbound(struct client_ctx *, int, int);
-struct client_ctx *curcc = NULL;
-
struct client_ctx *
client_init(Window win, struct screen_ctx *sc, int active)
{
@@ -178,7 +175,7 @@ client_delete(struct client_ctx *cc)
xu_ewmh_net_client_list_stacking(sc);
if (cc->flags & CLIENT_ACTIVE)
- client_none(sc);
+ xu_ewmh_net_active_window(sc, None);
if (cc->gc != NULL)
TAILQ_REMOVE(&cc->gc->clientq, cc, group_entry);
@@ -227,7 +224,6 @@ client_setactive(struct client_ctx *cc)
if (!sc->cycling)
client_mtf(cc);
- curcc = cc;
cc->flags |= CLIENT_ACTIVE;
cc->flags &= ~CLIENT_URGENCY;
client_draw_border(cc);
@@ -235,23 +231,19 @@ client_setactive(struct client_ctx *cc)
xu_ewmh_net_active_window(sc, cc->win);
}
-/*
- * set when there is no active client
- */
-static void
-client_none(struct screen_ctx *sc)
-{
- Window none = None;
-
- xu_ewmh_net_active_window(sc, none);
-
- curcc = NULL;
-}
-
struct client_ctx *
client_current(void)
{
- return(curcc);
+ struct screen_ctx *sc;
+ struct client_ctx *cc;
+
+ TAILQ_FOREACH(sc, &Screenq, entry) {
+ TAILQ_FOREACH(cc, &sc->clientq, entry) {
+ if (cc->flags & CLIENT_ACTIVE)
+ return(cc);
+ }
+ }
+ return(NULL);
}
void
@@ -512,7 +504,7 @@ client_hide(struct client_ctx *cc)
XUnmapWindow(X_Dpy, cc->win);
if (cc->flags & CLIENT_ACTIVE)
- client_none(cc->sc);
+ xu_ewmh_net_active_window(cc->sc, None);
cc->flags &= ~CLIENT_ACTIVE;
cc->flags |= CLIENT_HIDDEN;