mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
Merge branch 'linux' of git://github.com/chneukirchen/cwm into linux
This commit is contained in:
commit
8ae4b75da9
7
calmwm.h
7
calmwm.h
@ -239,6 +239,7 @@ struct screen_ctx {
|
||||
Window rootwin;
|
||||
Window menuwin;
|
||||
int cycling;
|
||||
int snapdist;
|
||||
struct geom view; /* viewable area */
|
||||
struct geom work; /* workable area, gap-applied */
|
||||
struct gap gap;
|
||||
@ -392,8 +393,7 @@ void client_applysizehints(struct client_ctx *);
|
||||
void client_config(struct client_ctx *);
|
||||
struct client_ctx *client_current(void);
|
||||
void client_cycle(struct screen_ctx *, int);
|
||||
void client_cycle_leave(struct screen_ctx *,
|
||||
struct client_ctx *);
|
||||
void client_cycle_leave(struct screen_ctx *);
|
||||
void client_delete(struct client_ctx *);
|
||||
void client_draw_border(struct client_ctx *);
|
||||
struct client_ctx *client_find(Window);
|
||||
@ -402,7 +402,6 @@ void client_getsizehints(struct client_ctx *);
|
||||
void client_hide(struct client_ctx *);
|
||||
void client_hmaximize(struct client_ctx *);
|
||||
void client_htile(struct client_ctx *);
|
||||
void client_leave(struct client_ctx *);
|
||||
void client_lower(struct client_ctx *);
|
||||
void client_map(struct client_ctx *);
|
||||
void client_maximize(struct client_ctx *);
|
||||
@ -414,7 +413,7 @@ void client_ptrwarp(struct client_ctx *);
|
||||
void client_raise(struct client_ctx *);
|
||||
void client_resize(struct client_ctx *, int);
|
||||
void client_send_delete(struct client_ctx *);
|
||||
void client_setactive(struct client_ctx *, int);
|
||||
void client_setactive(struct client_ctx *);
|
||||
void client_setname(struct client_ctx *);
|
||||
int client_snapcalc(int, int, int, int, int);
|
||||
void client_transient(struct client_ctx *);
|
||||
|
150
client.c
150
client.c
@ -180,53 +180,35 @@ client_delete(struct client_ctx *cc)
|
||||
}
|
||||
|
||||
void
|
||||
client_leave(struct client_ctx *cc)
|
||||
client_setactive(struct client_ctx *cc)
|
||||
{
|
||||
if (cc == NULL)
|
||||
cc = client_current();
|
||||
if (cc == NULL)
|
||||
return;
|
||||
}
|
||||
struct screen_ctx *sc = cc->sc;
|
||||
struct client_ctx *oldcc;
|
||||
|
||||
void
|
||||
client_setactive(struct client_ctx *cc, int fg)
|
||||
{
|
||||
struct screen_ctx *sc;
|
||||
XInstallColormap(X_Dpy, cc->colormap);
|
||||
|
||||
if (cc == NULL)
|
||||
cc = client_current();
|
||||
if (cc == NULL)
|
||||
return;
|
||||
if ((cc->flags & CLIENT_INPUT) ||
|
||||
((cc->flags & CLIENT_WM_TAKE_FOCUS) == 0)) {
|
||||
XSetInputFocus(X_Dpy, cc->win,
|
||||
RevertToPointerRoot, CurrentTime);
|
||||
}
|
||||
if (cc->flags & CLIENT_WM_TAKE_FOCUS)
|
||||
client_msg(cc, cwmh[WM_TAKE_FOCUS]);
|
||||
|
||||
sc = cc->sc;
|
||||
|
||||
if (fg) {
|
||||
XInstallColormap(X_Dpy, cc->colormap);
|
||||
if ((cc->flags & CLIENT_INPUT) ||
|
||||
((cc->flags & CLIENT_WM_TAKE_FOCUS) == 0)) {
|
||||
XSetInputFocus(X_Dpy, cc->win,
|
||||
RevertToPointerRoot, CurrentTime);
|
||||
}
|
||||
if (cc->flags & CLIENT_WM_TAKE_FOCUS)
|
||||
client_msg(cc, cwmh[WM_TAKE_FOCUS]);
|
||||
conf_grab_mouse(cc->win);
|
||||
/*
|
||||
* If we're in the middle of alt-tabbing, don't change
|
||||
* the order please.
|
||||
*/
|
||||
if (!sc->cycling)
|
||||
client_mtf(cc);
|
||||
} else
|
||||
client_leave(cc);
|
||||
|
||||
if (fg && cc != client_current()) {
|
||||
client_setactive(NULL, 0);
|
||||
_curcc = cc;
|
||||
xu_ewmh_net_active_window(sc, cc->win);
|
||||
if ((oldcc = client_current())) {
|
||||
oldcc->active = 0;
|
||||
client_draw_border(oldcc);
|
||||
}
|
||||
|
||||
cc->active = fg;
|
||||
/* If we're in the middle of cycing, don't change the order. */
|
||||
if (!sc->cycling)
|
||||
client_mtf(cc);
|
||||
|
||||
_curcc = cc;
|
||||
cc->active = 1;
|
||||
client_draw_border(cc);
|
||||
conf_grab_mouse(cc->win);
|
||||
xu_ewmh_net_active_window(sc, cc->win);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -640,12 +622,14 @@ client_cycle(struct screen_ctx *sc, int flags)
|
||||
}
|
||||
|
||||
void
|
||||
client_cycle_leave(struct screen_ctx *sc, struct client_ctx *cc)
|
||||
client_cycle_leave(struct screen_ctx *sc)
|
||||
{
|
||||
struct client_ctx *cc;
|
||||
|
||||
sc->cycling = 0;
|
||||
|
||||
client_mtf(NULL);
|
||||
if (cc) {
|
||||
if ((cc = client_current())) {
|
||||
client_mtf(cc);
|
||||
group_sticky_toggle_exit(cc);
|
||||
XUngrabKeyboard(X_Dpy, CurrentTime);
|
||||
}
|
||||
@ -724,14 +708,8 @@ client_placecalc(struct client_ctx *cc)
|
||||
static void
|
||||
client_mtf(struct client_ctx *cc)
|
||||
{
|
||||
struct screen_ctx *sc;
|
||||
struct screen_ctx *sc = cc->sc;
|
||||
|
||||
if (cc == NULL)
|
||||
cc = client_current();
|
||||
if (cc == NULL)
|
||||
return;
|
||||
|
||||
sc = cc->sc;
|
||||
TAILQ_REMOVE(&sc->mruq, cc, mru_entry);
|
||||
TAILQ_INSERT_HEAD(&sc->mruq, cc, mru_entry);
|
||||
}
|
||||
@ -740,52 +718,46 @@ void
|
||||
client_getsizehints(struct client_ctx *cc)
|
||||
{
|
||||
long tmp;
|
||||
XSizeHints *size;
|
||||
XSizeHints size;
|
||||
|
||||
if ((size = XAllocSizeHints()) == NULL)
|
||||
warnx("XAllocSizeHints failure");
|
||||
if (!XGetWMNormalHints(X_Dpy, cc->win, &size, &tmp))
|
||||
size.flags = 0;
|
||||
|
||||
if (!XGetWMNormalHints(X_Dpy, cc->win, size, &tmp))
|
||||
size->flags = 0;
|
||||
cc->hint.flags = size.flags;
|
||||
|
||||
cc->hint.flags = size->flags;
|
||||
|
||||
if (size->flags & PBaseSize) {
|
||||
cc->hint.basew = size->base_width;
|
||||
cc->hint.baseh = size->base_height;
|
||||
} else if (size->flags & PMinSize) {
|
||||
cc->hint.basew = size->min_width;
|
||||
cc->hint.baseh = size->min_height;
|
||||
if (size.flags & PBaseSize) {
|
||||
cc->hint.basew = size.base_width;
|
||||
cc->hint.baseh = size.base_height;
|
||||
} else if (size.flags & PMinSize) {
|
||||
cc->hint.basew = size.min_width;
|
||||
cc->hint.baseh = size.min_height;
|
||||
}
|
||||
if (size->flags & PMinSize) {
|
||||
cc->hint.minw = size->min_width;
|
||||
cc->hint.minh = size->min_height;
|
||||
} else if (size->flags & PBaseSize) {
|
||||
cc->hint.minw = size->base_width;
|
||||
cc->hint.minh = size->base_height;
|
||||
if (size.flags & PMinSize) {
|
||||
cc->hint.minw = size.min_width;
|
||||
cc->hint.minh = size.min_height;
|
||||
} else if (size.flags & PBaseSize) {
|
||||
cc->hint.minw = size.base_width;
|
||||
cc->hint.minh = size.base_height;
|
||||
}
|
||||
if (size->flags & PMaxSize) {
|
||||
cc->hint.maxw = size->max_width;
|
||||
cc->hint.maxh = size->max_height;
|
||||
if (size.flags & PMaxSize) {
|
||||
cc->hint.maxw = size.max_width;
|
||||
cc->hint.maxh = size.max_height;
|
||||
}
|
||||
if (size->flags & PResizeInc) {
|
||||
cc->hint.incw = size->width_inc;
|
||||
cc->hint.inch = size->height_inc;
|
||||
if (size.flags & PResizeInc) {
|
||||
cc->hint.incw = size.width_inc;
|
||||
cc->hint.inch = size.height_inc;
|
||||
}
|
||||
cc->hint.incw = MAX(1, cc->hint.incw);
|
||||
cc->hint.inch = MAX(1, cc->hint.inch);
|
||||
|
||||
if (size->flags & PAspect) {
|
||||
if (size->min_aspect.x > 0)
|
||||
cc->hint.mina = (float)size->min_aspect.y /
|
||||
size->min_aspect.x;
|
||||
if (size->max_aspect.y > 0)
|
||||
cc->hint.maxa = (float)size->max_aspect.x /
|
||||
size->max_aspect.y;
|
||||
if (size.flags & PAspect) {
|
||||
if (size.min_aspect.x > 0)
|
||||
cc->hint.mina = (float)size.min_aspect.y /
|
||||
size.min_aspect.x;
|
||||
if (size.max_aspect.y > 0)
|
||||
cc->hint.maxa = (float)size.max_aspect.x /
|
||||
size.max_aspect.y;
|
||||
}
|
||||
|
||||
if (size)
|
||||
XFree(size);
|
||||
}
|
||||
|
||||
void
|
||||
@ -803,12 +775,10 @@ client_applysizehints(struct client_ctx *cc)
|
||||
}
|
||||
|
||||
/* adjust for aspect limits */
|
||||
if (cc->hint.mina > 0 && cc->hint.maxa > 0) {
|
||||
if (cc->hint.maxa <
|
||||
(float)cc->geom.w / cc->geom.h)
|
||||
if (cc->hint.mina && cc->hint.maxa) {
|
||||
if (cc->hint.maxa < (float)cc->geom.w / cc->geom.h)
|
||||
cc->geom.w = cc->geom.h * cc->hint.maxa;
|
||||
else if (cc->hint.mina <
|
||||
(float)cc->geom.h / cc->geom.w)
|
||||
else if (cc->hint.mina < (float)cc->geom.h / cc->geom.w)
|
||||
cc->geom.h = cc->geom.w * cc->hint.mina;
|
||||
}
|
||||
|
||||
|
18
conf.c
18
conf.c
@ -103,6 +103,7 @@ conf_screen(struct screen_ctx *sc)
|
||||
XftColor xc;
|
||||
|
||||
sc->gap = Conf.gap;
|
||||
sc->snapdist = Conf.snapdist;
|
||||
|
||||
sc->xftfont = XftFontOpenXlfd(X_Dpy, sc->which, Conf.font);
|
||||
if (sc->xftfont == NULL) {
|
||||
@ -505,17 +506,8 @@ conf_bind_kbd(struct conf *c, char *name, char *binding)
|
||||
substring = conf_bind_getmask(name, &mask);
|
||||
current_binding->modmask |= mask;
|
||||
|
||||
if (substring[0] == '[' &&
|
||||
substring[strlen(substring)-1] == ']') {
|
||||
sscanf(substring, "[%d]", ¤t_binding->keycode);
|
||||
current_binding->keysym = NoSymbol;
|
||||
} else {
|
||||
current_binding->keycode = 0;
|
||||
current_binding->keysym = XStringToKeysym(substring);
|
||||
}
|
||||
|
||||
if (current_binding->keysym == NoSymbol &&
|
||||
current_binding->keycode == 0) {
|
||||
current_binding->keysym = XStringToKeysym(substring);
|
||||
if (current_binding->keysym == NoSymbol) {
|
||||
free(current_binding);
|
||||
return;
|
||||
}
|
||||
@ -556,9 +548,7 @@ conf_unbind_kbd(struct conf *c, struct keybinding *unbind)
|
||||
if (key->modmask != unbind->modmask)
|
||||
continue;
|
||||
|
||||
if ((key->keycode != 0 && key->keysym == NoSymbol &&
|
||||
key->keycode == unbind->keycode) ||
|
||||
key->keysym == unbind->keysym) {
|
||||
if (key->keysym == unbind->keysym) {
|
||||
TAILQ_REMOVE(&c->keybindingq, key, entry);
|
||||
if (key->argtype & ARG_CHAR)
|
||||
free(key->argument.c);
|
||||
|
8
cwmrc.5
8
cwmrc.5
@ -14,7 +14,7 @@
|
||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
.\"
|
||||
.Dd $Mdocdate: June 17 2013 $
|
||||
.Dd $Mdocdate: July 8 2013 $
|
||||
.Dt CWMRC 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -84,10 +84,8 @@ The Mod4 key (normally the windows key).
|
||||
.Pp
|
||||
The
|
||||
.Sq -
|
||||
should be followed by either a keysym name, taken from
|
||||
.Pa /usr/X11R6/include/X11/keysymdef.h ,
|
||||
or a numerical keycode value enclosed in
|
||||
.Dq [] .
|
||||
should be followed by a keysym name, taken from
|
||||
.Pa /usr/X11R6/include/X11/keysymdef.h .
|
||||
The
|
||||
.Ar command
|
||||
may either be one from the
|
||||
|
4
kbfunc.c
4
kbfunc.c
@ -102,10 +102,10 @@ kbfunc_client_moveresize(struct client_ctx *cc, union arg *arg)
|
||||
|
||||
cc->geom.x += client_snapcalc(cc->geom.x,
|
||||
cc->geom.x + cc->geom.w + (cc->bwidth * 2),
|
||||
sc->work.x, sc->work.w, Conf.snapdist);
|
||||
sc->work.x, sc->work.w, sc->snapdist);
|
||||
cc->geom.y += client_snapcalc(cc->geom.y,
|
||||
cc->geom.y + cc->geom.h + (cc->bwidth * 2),
|
||||
sc->work.y, sc->work.h, Conf.snapdist);
|
||||
sc->work.y, sc->work.h, sc->snapdist);
|
||||
|
||||
client_move(cc);
|
||||
xu_ptr_getpos(cc->win, &x, &y);
|
||||
|
9
menu.c
9
menu.c
@ -427,10 +427,8 @@ menu_draw(struct menu_ctx *mc, struct menu_q *menuq, struct menu_q *resultq)
|
||||
xu_xft_draw(sc, text, CWM_COLOR_MENU_FONT, 0, y);
|
||||
n++;
|
||||
}
|
||||
if (mc->hasprompt && n > 1 && (mc->searchstr[0] != '\0')) {
|
||||
mc->entry = 1;
|
||||
menu_draw_entry(mc, resultq, mc->entry, 1);
|
||||
}
|
||||
if (mc->hasprompt && n > 1)
|
||||
menu_draw_entry(mc, resultq, 1, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -477,9 +475,6 @@ menu_handle_move(XEvent *e, struct menu_ctx *mc, struct menu_q *resultq)
|
||||
menu_draw_entry(mc, resultq, mc->entry, 1);
|
||||
} else
|
||||
(void)xu_ptr_regrab(MENUGRABMASK, Conf.cursor[CF_DEFAULT]);
|
||||
|
||||
if (mc->hasprompt)
|
||||
menu_draw_entry(mc, resultq, 1, 1);
|
||||
}
|
||||
|
||||
static struct menu *
|
||||
|
17
mousefunc.c
17
mousefunc.c
@ -50,21 +50,19 @@ static void
|
||||
mousefunc_sweep_draw(struct client_ctx *cc)
|
||||
{
|
||||
struct screen_ctx *sc = cc->sc;
|
||||
char asize[14]; /* fits " nnnn x nnnn \0" */
|
||||
char s[14]; /* fits " nnnn x nnnn \0" */
|
||||
|
||||
(void)snprintf(asize, sizeof(asize), " %4d x %-4d ",
|
||||
(void)snprintf(s, sizeof(s), " %4d x %-4d ",
|
||||
(cc->geom.w - cc->hint.basew) / cc->hint.incw,
|
||||
(cc->geom.h - cc->hint.baseh) / cc->hint.inch);
|
||||
|
||||
XReparentWindow(X_Dpy, sc->menuwin, cc->win, 0, 0);
|
||||
XMoveResizeWindow(X_Dpy, sc->menuwin, 0, 0,
|
||||
xu_xft_width(sc->xftfont, asize, strlen(asize)),
|
||||
sc->xftfont->height);
|
||||
xu_xft_width(sc->xftfont, s, strlen(s)), sc->xftfont->height);
|
||||
XMapWindow(X_Dpy, sc->menuwin);
|
||||
XClearWindow(X_Dpy, sc->menuwin);
|
||||
|
||||
xu_xft_draw(sc, asize, CWM_COLOR_MENU_FONT,
|
||||
0, sc->xftfont->ascent + 1);
|
||||
xu_xft_draw(sc, s, CWM_COLOR_MENU_FONT, 0, sc->xftfont->ascent + 1);
|
||||
}
|
||||
|
||||
void
|
||||
@ -149,10 +147,10 @@ mousefunc_client_move(struct client_ctx *cc, void *arg)
|
||||
|
||||
cc->geom.x += client_snapcalc(cc->geom.x,
|
||||
cc->geom.x + cc->geom.w + (cc->bwidth * 2),
|
||||
sc->work.x, sc->work.w, Conf.snapdist);
|
||||
sc->work.x, sc->work.w, sc->snapdist);
|
||||
cc->geom.y += client_snapcalc(cc->geom.y,
|
||||
cc->geom.y + cc->geom.h + (cc->bwidth * 2),
|
||||
sc->work.y, sc->work.h, Conf.snapdist);
|
||||
sc->work.y, sc->work.h, sc->snapdist);
|
||||
|
||||
/* don't move more than 60 times / second */
|
||||
if ((ev.xmotion.time - ltime) > (1000 / 60)) {
|
||||
@ -233,7 +231,8 @@ mousefunc_menu_unhide(struct client_ctx *cc, void *arg)
|
||||
continue;
|
||||
|
||||
mi = xcalloc(1, sizeof(*mi));
|
||||
(void)strlcpy(mi->text, wname, sizeof(mi->text));
|
||||
(void)snprintf(mi->text, sizeof(mi->text), "(%d) %s",
|
||||
cc->group ? cc->group->shortcut : 0, wname);
|
||||
mi->ctx = cc;
|
||||
TAILQ_INSERT_TAIL(&menuq, mi, entry);
|
||||
}
|
||||
|
4
search.c
4
search.c
@ -142,8 +142,8 @@ search_print_client(struct menu *mi, int list)
|
||||
if (list)
|
||||
cc->matchname = cc->name;
|
||||
|
||||
(void)snprintf(mi->print, sizeof(mi->print), "%c%s", flag,
|
||||
cc->matchname);
|
||||
(void)snprintf(mi->print, sizeof(mi->print), "(%d) %c%s",
|
||||
cc->group ? cc->group->shortcut : 0, flag, cc->matchname);
|
||||
|
||||
if (!list && cc->matchname != cc->name &&
|
||||
strlen(mi->print) < sizeof(mi->print) - 1) {
|
||||
|
31
xevents.c
31
xevents.c
@ -43,7 +43,6 @@ static void xev_handle_destroynotify(XEvent *);
|
||||
static void xev_handle_configurerequest(XEvent *);
|
||||
static void xev_handle_propertynotify(XEvent *);
|
||||
static void xev_handle_enternotify(XEvent *);
|
||||
static void xev_handle_leavenotify(XEvent *);
|
||||
static void xev_handle_buttonpress(XEvent *);
|
||||
static void xev_handle_buttonrelease(XEvent *);
|
||||
static void xev_handle_keypress(XEvent *);
|
||||
@ -60,7 +59,6 @@ void (*xev_handlers[LASTEvent])(XEvent *) = {
|
||||
[ConfigureRequest] = xev_handle_configurerequest,
|
||||
[PropertyNotify] = xev_handle_propertynotify,
|
||||
[EnterNotify] = xev_handle_enternotify,
|
||||
[LeaveNotify] = xev_handle_leavenotify,
|
||||
[ButtonPress] = xev_handle_buttonpress,
|
||||
[ButtonRelease] = xev_handle_buttonrelease,
|
||||
[KeyPress] = xev_handle_keypress,
|
||||
@ -81,7 +79,7 @@ xev_handle_maprequest(XEvent *ee)
|
||||
struct client_ctx *cc = NULL, *old_cc;
|
||||
XWindowAttributes xattr;
|
||||
|
||||
if ((old_cc = client_current()) != NULL)
|
||||
if ((old_cc = client_current()))
|
||||
client_ptrsave(old_cc);
|
||||
|
||||
if ((cc = client_find(e->window)) == NULL) {
|
||||
@ -103,8 +101,10 @@ xev_handle_unmapnotify(XEvent *ee)
|
||||
if (e->send_event) {
|
||||
cc->state = WithdrawnState;
|
||||
xu_set_wm_state(cc->win, cc->state);
|
||||
} else
|
||||
client_hide(cc);
|
||||
} else {
|
||||
if (!(cc->flags & CLIENT_HIDDEN))
|
||||
client_delete(cc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -211,13 +211,7 @@ xev_handle_enternotify(XEvent *ee)
|
||||
struct client_ctx *cc;
|
||||
|
||||
if ((cc = client_find(e->window)) != NULL)
|
||||
client_setactive(cc, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
xev_handle_leavenotify(XEvent *ee)
|
||||
{
|
||||
client_leave(NULL);
|
||||
client_setactive(cc);
|
||||
}
|
||||
|
||||
/* We can split this into two event handlers. */
|
||||
@ -256,7 +250,7 @@ xev_handle_buttonrelease(XEvent *ee)
|
||||
{
|
||||
struct client_ctx *cc;
|
||||
|
||||
if ((cc = client_current()) != NULL)
|
||||
if ((cc = client_current()))
|
||||
group_sticky_toggle_exit(cc);
|
||||
}
|
||||
|
||||
@ -283,9 +277,7 @@ xev_handle_keypress(XEvent *ee)
|
||||
if ((kb->modmask | modshift) != e->state)
|
||||
continue;
|
||||
|
||||
if ((kb->keycode != 0 && kb->keysym == NoSymbol &&
|
||||
kb->keycode == e->keycode) || kb->keysym ==
|
||||
(modshift == 0 ? keysym : skeysym))
|
||||
if (kb->keysym == (modshift == 0 ? keysym : skeysym))
|
||||
break;
|
||||
}
|
||||
|
||||
@ -311,17 +303,15 @@ xev_handle_keyrelease(XEvent *ee)
|
||||
{
|
||||
XKeyEvent *e = &ee->xkey;
|
||||
struct screen_ctx *sc;
|
||||
struct client_ctx *cc;
|
||||
KeySym keysym;
|
||||
u_int i;
|
||||
|
||||
sc = screen_fromroot(e->root);
|
||||
cc = client_current();
|
||||
|
||||
keysym = XkbKeycodeToKeysym(X_Dpy, e->keycode, 0, 0);
|
||||
for (i = 0; i < nitems(modkeys); i++) {
|
||||
if (keysym == modkeys[i]) {
|
||||
client_cycle_leave(sc, cc);
|
||||
client_cycle_leave(sc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -344,8 +334,7 @@ xev_handle_clientmessage(XEvent *ee)
|
||||
client_send_delete(cc);
|
||||
|
||||
if (e->message_type == ewmh[_NET_ACTIVE_WINDOW] && e->format == 32) {
|
||||
old_cc = client_current();
|
||||
if (old_cc)
|
||||
if ((old_cc = client_current()))
|
||||
client_ptrsave(old_cc);
|
||||
client_ptrwarp(cc);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user