diff options
| author | Polesznyák Márk <contact@pml68.dev> | 2026-02-22 15:01:55 +0100 |
|---|---|---|
| committer | Polesznyák Márk <contact@pml68.dev> | 2026-02-22 15:01:55 +0100 |
| commit | cce69140e3d5bc3626d5cb8a85f98b88fcfd5fb3 (patch) | |
| tree | e9ac18cb5859806d7188cbf2aa8e8129ad7a2de9 /dmenu/drw.c | |
| parent | chore(dwm): sync with upstream (diff) | |
| download | suckless-setup-cce69140e3d5bc3626d5cb8a85f98b88fcfd5fb3.tar.gz | |
chore(dmenu): sync with upstream
Commits:
- cleanup schemes and colors (77f96d7)
- drw.c: drw_scm_free: call free inside (8b48986)
- add -of and -ob arguments for outline colors options for
multi-selection (7175c48)
Diffstat (limited to 'dmenu/drw.c')
| -rw-r--r-- | dmenu/drw.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/dmenu/drw.c b/dmenu/drw.c index f258a41..c88f43d 100644 --- a/dmenu/drw.c +++ b/dmenu/drw.c @@ -182,8 +182,7 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname, unsigned int alpha) dest->pixel = (dest->pixel & 0x00FFFFFFU) | (alpha << 24); } -/* Wrapper to create color schemes. The caller has to call free(3) on the - * returned color scheme when done using it. */ +/* Create color schemes. */ Clr * drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], size_t clrcount) { @@ -191,7 +190,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], si Clr *ret; /* need at least two colors for a scheme */ - if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) + if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(Clr)))) return NULL; for (i = 0; i < clrcount; i++) @@ -200,6 +199,30 @@ drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], si } void +drw_clr_free(Drw *drw, Clr *c) +{ + if (!drw || !c) + return; + + /* c is typedef XftColor Clr */ + XftColorFree(drw->dpy, DefaultVisual(drw->dpy, drw->screen), + DefaultColormap(drw->dpy, drw->screen), c); +} + +void +drw_scm_free(Drw *drw, Clr *scm, size_t clrcount) +{ + size_t i; + + if (!drw || !scm) + return; + + for (i = 0; i < clrcount; i++) + drw_clr_free(drw, &scm[i]); + free(scm); +} + +void drw_setfontset(Drw *drw, Fnt *set) { if (drw) |
