mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
Teach client_current() to use a screen to find the current client instead of
iterating over all (fallback if no screen provided for now). Initially convert trivial uses of client_current().
This commit is contained in:
parent
01be5b4e4a
commit
7c45b87622
2
calmwm.h
2
calmwm.h
@ -394,7 +394,7 @@ __dead void usage(void);
|
||||
|
||||
void client_applysizehints(struct client_ctx *);
|
||||
void client_config(struct client_ctx *);
|
||||
struct client_ctx *client_current(void);
|
||||
struct client_ctx *client_current(struct screen_ctx *);
|
||||
void client_cycle(struct screen_ctx *, int);
|
||||
void client_remove(struct client_ctx *);
|
||||
void client_draw_border(struct client_ctx *);
|
||||
|
17
client.c
17
client.c
@ -218,7 +218,7 @@ client_setactive(struct client_ctx *cc)
|
||||
if (cc->flags & CLIENT_WM_TAKE_FOCUS)
|
||||
client_msg(cc, cwmh[WM_TAKE_FOCUS], Last_Event_Time);
|
||||
|
||||
if ((oldcc = client_current()) != NULL) {
|
||||
if ((oldcc = client_current(sc)) != NULL) {
|
||||
oldcc->flags &= ~CLIENT_ACTIVE;
|
||||
client_draw_border(oldcc);
|
||||
}
|
||||
@ -235,16 +235,23 @@ client_setactive(struct client_ctx *cc)
|
||||
}
|
||||
|
||||
struct client_ctx *
|
||||
client_current(void)
|
||||
client_current(struct screen_ctx *sc)
|
||||
{
|
||||
struct screen_ctx *sc;
|
||||
struct screen_ctx *_sc;
|
||||
struct client_ctx *cc;
|
||||
|
||||
TAILQ_FOREACH(sc, &Screenq, entry) {
|
||||
if (sc) {
|
||||
TAILQ_FOREACH(cc, &sc->clientq, entry) {
|
||||
if (cc->flags & CLIENT_ACTIVE)
|
||||
return(cc);
|
||||
}
|
||||
} else {
|
||||
TAILQ_FOREACH(_sc, &Screenq, entry) {
|
||||
TAILQ_FOREACH(cc, &_sc->clientq, entry) {
|
||||
if (cc->flags & CLIENT_ACTIVE)
|
||||
return(cc);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
@ -679,7 +686,7 @@ client_cycle(struct screen_ctx *sc, int flags)
|
||||
return;
|
||||
|
||||
prevcc = TAILQ_FIRST(&sc->clientq);
|
||||
oldcc = client_current();
|
||||
oldcc = client_current(sc);
|
||||
if (oldcc == NULL)
|
||||
oldcc = (flags & CWM_CYCLE_REVERSE) ?
|
||||
TAILQ_LAST(&sc->clientq, client_q) :
|
||||
|
2
kbfunc.c
2
kbfunc.c
@ -470,7 +470,7 @@ kbfunc_menu_client(void *ctx, struct cargs *cargs)
|
||||
if (cargs->xev == CWM_XEV_BTN)
|
||||
mflags |= CWM_MENU_LIST;
|
||||
|
||||
old_cc = client_current();
|
||||
old_cc = client_current(sc);
|
||||
|
||||
TAILQ_INIT(&menuq);
|
||||
TAILQ_FOREACH(cc, &sc->clientq, entry) {
|
||||
|
10
xevents.c
10
xevents.c
@ -79,7 +79,7 @@ xev_handle_maprequest(XEvent *ee)
|
||||
|
||||
LOG_DEBUG3("window: 0x%lx", e->window);
|
||||
|
||||
if ((old_cc = client_current()) != NULL)
|
||||
if ((old_cc = client_current(NULL)) != NULL)
|
||||
client_ptrsave(old_cc);
|
||||
|
||||
if ((cc = client_find(e->window)) == NULL)
|
||||
@ -249,7 +249,7 @@ xev_handle_buttonpress(XEvent *ee)
|
||||
switch (mb->context) {
|
||||
case CWM_CONTEXT_CC:
|
||||
if (((cc = client_find(e->window)) == NULL) &&
|
||||
(cc = client_current()) == NULL)
|
||||
(cc = client_current(NULL)) == NULL)
|
||||
return;
|
||||
(*mb->callback)(cc, mb->cargs);
|
||||
break;
|
||||
@ -318,7 +318,7 @@ xev_handle_keypress(XEvent *ee)
|
||||
switch (kb->context) {
|
||||
case CWM_CONTEXT_CC:
|
||||
if (((cc = client_find(e->window)) == NULL) &&
|
||||
(cc = client_current()) == NULL)
|
||||
(cc = client_current(NULL)) == NULL)
|
||||
return;
|
||||
(*kb->callback)(cc, kb->cargs);
|
||||
break;
|
||||
@ -353,7 +353,7 @@ xev_handle_keyrelease(XEvent *ee)
|
||||
keysym = XkbKeycodeToKeysym(X_Dpy, e->keycode, 0, 0);
|
||||
for (i = 0; i < nitems(modkeys); i++) {
|
||||
if (keysym == modkeys[i]) {
|
||||
if ((cc = client_current()) != NULL) {
|
||||
if ((cc = client_current(NULL)) != NULL) {
|
||||
if (sc->cycling) {
|
||||
sc->cycling = 0;
|
||||
client_mtf(cc);
|
||||
@ -389,7 +389,7 @@ xev_handle_clientmessage(XEvent *ee)
|
||||
}
|
||||
} else if (e->message_type == ewmh[_NET_ACTIVE_WINDOW]) {
|
||||
if ((cc = client_find(e->window)) != NULL) {
|
||||
if ((old_cc = client_current()) != NULL)
|
||||
if ((old_cc = client_current(NULL)) != NULL)
|
||||
client_ptrsave(old_cc);
|
||||
client_show(cc);
|
||||
client_ptrwarp(cc);
|
||||
|
Loading…
Reference in New Issue
Block a user