mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
- no reason to breakout ClassHints work, so fold into client_{new,delete},
but keep _MOTIF_WM_HINTS separate. - simplify fetching app/class hint. - fix _MOTIF_WM_HINTS Atom type.
This commit is contained in:
parent
9cad4c73b3
commit
c5a76f1d5b
38
client.c
38
client.c
@ -37,8 +37,7 @@ static void client_mtf(struct client_ctx *);
|
|||||||
static void client_none(struct screen_ctx *);
|
static void client_none(struct screen_ctx *);
|
||||||
static void client_placecalc(struct client_ctx *);
|
static void client_placecalc(struct client_ctx *);
|
||||||
static void client_update(struct client_ctx *);
|
static void client_update(struct client_ctx *);
|
||||||
static void client_gethints(struct client_ctx *);
|
static void client_getmwmhints(struct client_ctx *);
|
||||||
static void client_freehints(struct client_ctx *);
|
|
||||||
static int client_inbound(struct client_ctx *, int, int);
|
static int client_inbound(struct client_ctx *, int, int);
|
||||||
|
|
||||||
struct client_ctx *_curcc = NULL;
|
struct client_ctx *_curcc = NULL;
|
||||||
@ -59,6 +58,7 @@ struct client_ctx *
|
|||||||
client_new(Window win, struct screen_ctx *sc, int mapped)
|
client_new(Window win, struct screen_ctx *sc, int mapped)
|
||||||
{
|
{
|
||||||
struct client_ctx *cc;
|
struct client_ctx *cc;
|
||||||
|
XClassHint xch;
|
||||||
XWindowAttributes wattr;
|
XWindowAttributes wattr;
|
||||||
XWMHints *wmhints;
|
XWMHints *wmhints;
|
||||||
int state;
|
int state;
|
||||||
@ -82,6 +82,12 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
|
|||||||
|
|
||||||
conf_client(cc);
|
conf_client(cc);
|
||||||
|
|
||||||
|
if (XGetClassHint(X_Dpy, cc->win, &xch)) {
|
||||||
|
cc->app_name = xch.res_name;
|
||||||
|
cc->app_class = xch.res_class;
|
||||||
|
}
|
||||||
|
client_getmwmhints(cc);
|
||||||
|
|
||||||
/* Saved pointer position */
|
/* Saved pointer position */
|
||||||
cc->ptr.x = -1;
|
cc->ptr.x = -1;
|
||||||
cc->ptr.y = -1;
|
cc->ptr.y = -1;
|
||||||
@ -126,7 +132,6 @@ client_new(Window win, struct screen_ctx *sc, int mapped)
|
|||||||
|
|
||||||
xu_ewmh_net_client_list(sc);
|
xu_ewmh_net_client_list(sc);
|
||||||
|
|
||||||
client_gethints(cc);
|
|
||||||
client_update(cc);
|
client_update(cc);
|
||||||
|
|
||||||
if (mapped)
|
if (mapped)
|
||||||
@ -162,6 +167,10 @@ client_delete(struct client_ctx *cc)
|
|||||||
client_none(sc);
|
client_none(sc);
|
||||||
|
|
||||||
XFree(cc->size);
|
XFree(cc->size);
|
||||||
|
if (cc->app_name != NULL)
|
||||||
|
XFree(cc->app_name);
|
||||||
|
if (cc->app_class != NULL)
|
||||||
|
XFree(cc->app_class);
|
||||||
|
|
||||||
while ((wn = TAILQ_FIRST(&cc->nameq)) != NULL) {
|
while ((wn = TAILQ_FIRST(&cc->nameq)) != NULL) {
|
||||||
TAILQ_REMOVE(&cc->nameq, wn, entry);
|
TAILQ_REMOVE(&cc->nameq, wn, entry);
|
||||||
@ -169,7 +178,6 @@ client_delete(struct client_ctx *cc)
|
|||||||
free(wn);
|
free(wn);
|
||||||
}
|
}
|
||||||
|
|
||||||
client_freehints(cc);
|
|
||||||
free(cc);
|
free(cc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -789,19 +797,12 @@ client_applysizehints(struct client_ctx *cc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
client_gethints(struct client_ctx *cc)
|
client_getmwmhints(struct client_ctx *cc)
|
||||||
{
|
{
|
||||||
XClassHint xch;
|
|
||||||
struct mwm_hints *mwmh;
|
struct mwm_hints *mwmh;
|
||||||
|
|
||||||
if (XGetClassHint(X_Dpy, cc->win, &xch)) {
|
if (xu_getprop(cc->win,
|
||||||
if (xch.res_name != NULL)
|
cwmh[_MOTIF_WM_HINTS].atom, cwmh[_MOTIF_WM_HINTS].atom,
|
||||||
cc->app_name = xch.res_name;
|
|
||||||
if (xch.res_class != NULL)
|
|
||||||
cc->app_class = xch.res_class;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (xu_getprop(cc->win, cwmh[_MOTIF_WM_HINTS].atom, _MOTIF_WM_HINTS,
|
|
||||||
PROP_MWM_HINTS_ELEMENTS, (u_char **)&mwmh) == MWM_NUMHINTS)
|
PROP_MWM_HINTS_ELEMENTS, (u_char **)&mwmh) == MWM_NUMHINTS)
|
||||||
if (mwmh->flags & MWM_HINTS_DECORATIONS &&
|
if (mwmh->flags & MWM_HINTS_DECORATIONS &&
|
||||||
!(mwmh->decorations & MWM_DECOR_ALL) &&
|
!(mwmh->decorations & MWM_DECOR_ALL) &&
|
||||||
@ -809,15 +810,6 @@ client_gethints(struct client_ctx *cc)
|
|||||||
cc->bwidth = 0;
|
cc->bwidth = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
client_freehints(struct client_ctx *cc)
|
|
||||||
{
|
|
||||||
if (cc->app_name != NULL)
|
|
||||||
XFree(cc->app_name);
|
|
||||||
if (cc->app_class != NULL)
|
|
||||||
XFree(cc->app_class);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
client_transient(struct client_ctx *cc)
|
client_transient(struct client_ctx *cc)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user