aboutsummaryrefslogtreecommitdiffstats
path: root/client.c
diff options
context:
space:
mode:
authorokan2016-09-20 18:21:32 +0000
committerokan2016-09-20 18:21:32 +0000
commit3f20ee980685f849ca7802b857736d819bff063a (patch)
tree73775bfed69756ab375e094fd872da3e0accc6a1 /client.c
parent86e2c481f56ad0ea549838666d9fda03519fe1ef (diff)
downloadcwm-3f20ee980685f849ca7802b857736d819bff063a.tar.gz
Get rid of curcc, instead cycle through the queue; removes the need for
client_none().
Diffstat (limited to '')
-rw-r--r--client.c34
1 files changed, 13 insertions, 21 deletions
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;