mirror of
https://github.com/0intro/wmii
synced 2025-01-18 16:19:23 +03:00
simplifications to bar2
This commit is contained in:
parent
592e412bc3
commit
0d7e1639cb
339
cmd/wmiibar2.c
339
cmd/wmiibar2.c
@ -23,84 +23,59 @@
|
||||
/*
|
||||
* filesystem specification
|
||||
* / Droot
|
||||
* /display Fdisplay 'top', 'bottom', 'none'
|
||||
* /display Fdisplay 'north', 'south', 'none'
|
||||
* /font Ffont <xlib font name>
|
||||
* /new Fnew returns id of new item
|
||||
* /event Fevent
|
||||
* /default/ Ditem
|
||||
* /default/bgcolor Fcolor <#RRGGBB, #RGB>
|
||||
* /default/fgcolor Fcolor <#RRGGBB, #RGB>
|
||||
* /default/bordercolor Fcolor <#RRGGBB, #RGB>
|
||||
* /default/color Fcolor <#RRGGBB> <#RRGGBB> <#RRGGBB>
|
||||
* /1/ Ditem
|
||||
* /1/data Fdata <arbitrary data which gets displayed>
|
||||
* /1/bgcolor Fcolor <#RRGGBB, #RGB>
|
||||
* /1/fgcolor Fcolor <#RRGGBB, #RGB>
|
||||
* /1/bordercolor Fcolor <#RRGGBB, #RGB> ...
|
||||
* /1/color Fcolor <#RRGGBB> <#RRGGBB> <#RRGGBB>
|
||||
*/
|
||||
enum { /* 8-bit qid.path.type */
|
||||
|
||||
/* 8-bit qid.path.type */
|
||||
enum {
|
||||
Droot,
|
||||
Ditem,
|
||||
Fdisplay,
|
||||
Ffont,
|
||||
Fnew,
|
||||
Fdata, /* data to display */
|
||||
Fevent,
|
||||
Fcolor,
|
||||
Ffont
|
||||
};
|
||||
|
||||
#define NONE (unsigned short)0xffff
|
||||
|
||||
typedef struct {
|
||||
char *name;
|
||||
unsigned char type;
|
||||
} QFile;
|
||||
|
||||
static QFile qfilelist[] = {
|
||||
{"display", Fdisplay},
|
||||
{"font", Ffont},
|
||||
{"new", Fnew},
|
||||
{"data", Fdata},
|
||||
{"bgcolor", Fcolor},
|
||||
{"fgcolor", Fcolor},
|
||||
{"bordercolor", Fcolor},
|
||||
{"event", Fevent},
|
||||
{0, 0},
|
||||
Fdata, /* data to display */
|
||||
Fcolor
|
||||
};
|
||||
|
||||
typedef struct Map Map;
|
||||
struct Map {
|
||||
unsigned int fid;
|
||||
Qid qid;
|
||||
Map *next;
|
||||
};
|
||||
unsigned int fid;
|
||||
Qid qid;
|
||||
Map *next;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
int id;
|
||||
char text[256];
|
||||
int value;
|
||||
char data[256];
|
||||
unsigned long bg;
|
||||
unsigned long fg;
|
||||
unsigned long border[4];
|
||||
XFontStruct *font;
|
||||
char event[5][256];
|
||||
unsigned long border;
|
||||
} Item;
|
||||
|
||||
|
||||
static size_t nitems = 0;
|
||||
static Item **items = 0;
|
||||
static char *sockfile = nil;
|
||||
static pid_t mypid = 0;
|
||||
static IXPServer srv = { 0 };
|
||||
static Qid root_qid;
|
||||
static Display *dpy;
|
||||
static int screen_num;
|
||||
static char *align = nil;
|
||||
static char *font = nil;
|
||||
static char *display = nil;
|
||||
static Align align = SOUTH;
|
||||
/*
|
||||
static XFontStruct *xfont;
|
||||
static GC gc;
|
||||
static Window win;
|
||||
static XRectangle geom;
|
||||
static int mapped = 0;
|
||||
static Pixmap pmap;
|
||||
|
||||
static Draw zero_draw = { 0 };
|
||||
@ -117,7 +92,7 @@ usage()
|
||||
fprintf(stderr, "%s %d",
|
||||
"usage: wmiibar -a <server address> [-v]\n"
|
||||
" -a server address \n"
|
||||
" -v version info\n", NONE);
|
||||
" -v version info\n", 0);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -135,9 +110,9 @@ exit_cleanup()
|
||||
}
|
||||
|
||||
static unsigned long long
|
||||
mkqpath(unsigned char type, unsigned short item, unsigned short file)
|
||||
mkqpath(unsigned char type, unsigned short item)
|
||||
{
|
||||
return ((unsigned long long) file << 24) | ((unsigned long long) item << 8) | (unsigned long long) type;
|
||||
return ((unsigned long long) item << 8) | (unsigned long long) type;
|
||||
}
|
||||
|
||||
static unsigned char
|
||||
@ -152,90 +127,102 @@ qpath_item(unsigned long long path)
|
||||
return (path >> 8) & 0xffff;
|
||||
}
|
||||
|
||||
/*
|
||||
static unsigned short
|
||||
qpath_file(unsigned long long path)
|
||||
static char *
|
||||
qid_to_name(Qid *qid)
|
||||
{
|
||||
return (path >> 24) & 0xffff;
|
||||
unsigned char type = qpath_type(qid->path);
|
||||
unsigned short i = qpath_item(qid->path);
|
||||
static char buf[32];
|
||||
|
||||
switch(type) {
|
||||
case Droot: return "/"; break;
|
||||
case Ditem:
|
||||
if(!i)
|
||||
return "default";
|
||||
snprintf(buf, sizeof(buf), "%u", i);
|
||||
return buf;
|
||||
break;
|
||||
case Fdisplay: return "display"; break;
|
||||
case Ffont: return "font"; break;
|
||||
case Fnew: return "new"; break;
|
||||
case Fdata: return "data"; break;
|
||||
case Fevent: return "event"; break;
|
||||
case Fcolor: return "color"; break;
|
||||
default: return nil; break;
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
name_to_type(char *name)
|
||||
{
|
||||
const char *errstr;
|
||||
unsigned int i;
|
||||
if(!name || !name[0] || !strncmp(name, "..", 3))
|
||||
return Droot;
|
||||
if(!strncmp(name, "default", 8))
|
||||
return Ditem;
|
||||
if(!strncmp(name, "display", 8))
|
||||
return Fdisplay;
|
||||
if(!strncmp(name, "font", 5))
|
||||
return Ffont;
|
||||
if(!strncmp(name, "new", 4))
|
||||
return Fnew;
|
||||
if(!strncmp(name, "data", 5))
|
||||
return Fdata;
|
||||
if(!strncmp(name, "event", 6))
|
||||
return Fevent;
|
||||
if(!strncmp(name, "color", 6))
|
||||
return Fcolor;
|
||||
i = (unsigned short) cext_strtonum(name, 1, 0xffff, &errstr);
|
||||
if(!errstr && i < nitems)
|
||||
return Ditem;
|
||||
return -1;
|
||||
}
|
||||
*/
|
||||
|
||||
static Map *
|
||||
fid_to_map(Map * maps, unsigned int fid)
|
||||
fid_to_map(Map *maps, unsigned int fid)
|
||||
{
|
||||
Map *m;
|
||||
for(m = maps; m; m = m->next)
|
||||
if(m->fid == fid)
|
||||
return m;
|
||||
return nil;
|
||||
}
|
||||
|
||||
static char *
|
||||
qfile_name(unsigned char type)
|
||||
{
|
||||
size_t i;
|
||||
for(i = 0; qfilelist[i].name; i++)
|
||||
if(qfilelist[i].type == type)
|
||||
return qfilelist[i].name;
|
||||
return nil;
|
||||
Map *m;
|
||||
for(m = maps; m && (m->fid != fid); m = m->next);
|
||||
return m;
|
||||
}
|
||||
|
||||
static int
|
||||
qfile_index(char *name)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; qfilelist[i].name; i++)
|
||||
if(!strncmp(name, qfilelist[i].name, strlen(qfilelist[i].name)))
|
||||
return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static Bool
|
||||
mkqid(Qid *dir, char *wname, Qid *new)
|
||||
{
|
||||
int i;
|
||||
const char *errstr;
|
||||
if(dir->type != IXP_QTDIR)
|
||||
return False;
|
||||
new->version = nil;
|
||||
if((i = qfile_index(wname)) == -1) {
|
||||
new->type = IXP_QTDIR;
|
||||
if(!strncmp(wname, "..", 3)) {
|
||||
*new = root_qid;
|
||||
return True;
|
||||
} else if(!strncmp(wname, "default", 8)) {
|
||||
new->path = mkqpath(Ditem, 0, NONE);
|
||||
return True;
|
||||
}
|
||||
/* check if wname is a number, otherwise file not found */
|
||||
i = (unsigned short) cext_strtonum(wname, 1, 0xffff, &errstr);
|
||||
if(errstr || nitems < i)
|
||||
return False;
|
||||
/* found */
|
||||
new->path = mkqpath(Ditem, i, NONE);
|
||||
} else {
|
||||
new->type = IXP_QTFILE;
|
||||
new->path =
|
||||
mkqpath(qfilelist[i].type, qpath_item(dir->path), i);
|
||||
}
|
||||
return True;
|
||||
int type = name_to_type(wname);
|
||||
|
||||
if((dir->type != IXP_QTDIR) || (type == -1))
|
||||
return -1;
|
||||
|
||||
new->version = 0;
|
||||
if(type == Droot) {
|
||||
new->type = IXP_QTDIR;
|
||||
*new = root_qid;
|
||||
}
|
||||
else if(type == Ditem) {
|
||||
new->type = IXP_QTDIR;
|
||||
if(!strncmp(wname, "default", 8))
|
||||
new->path = mkqpath(Ditem, 0);
|
||||
else
|
||||
new->path = mkqpath(Ditem, cext_strtonum(wname, 1, 0xffff, &errstr));
|
||||
}
|
||||
else {
|
||||
new->type = IXP_QTFILE;
|
||||
new->path = mkqpath(type, qpath_item(dir->path));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
xattach(IXPServer * s, IXPConn * c)
|
||||
xattach(IXPServer *s, IXPConn *c)
|
||||
{
|
||||
Map *maps = c->aux;
|
||||
Map *m, *new = cext_emallocz(sizeof(Map));
|
||||
Map *new = cext_emallocz(sizeof(Map));
|
||||
|
||||
if(!maps)
|
||||
c->aux = new;
|
||||
else {
|
||||
for(m = maps; m && m->next; m = m->next);
|
||||
m->next = new;
|
||||
}
|
||||
/*fprintf(stderr, "attaching %u %u %s %s\n", s->fcall.fid, s->fcall.afid,
|
||||
s->fcall.uname, s->fcall.aname);
|
||||
*/
|
||||
c->aux = new;
|
||||
new->next = maps;
|
||||
new->qid = root_qid;
|
||||
new->fid = s->fcall.fid;
|
||||
s->fcall.id = RATTACH;
|
||||
@ -244,10 +231,10 @@ xattach(IXPServer * s, IXPConn * c)
|
||||
}
|
||||
|
||||
static int
|
||||
xwalk(IXPServer * s, IXPConn * c)
|
||||
xwalk(IXPServer *s, IXPConn *c)
|
||||
{
|
||||
unsigned short nwqid = 0;
|
||||
Qid qid;
|
||||
Qid dir;
|
||||
Map *map;
|
||||
|
||||
/*fprintf(stderr, "%s", "walking\n");*/
|
||||
@ -261,10 +248,10 @@ xwalk(IXPServer * s, IXPConn * c)
|
||||
return -1;
|
||||
}
|
||||
if(s->fcall.nwname) {
|
||||
qid = map->qid;
|
||||
dir = map->qid;
|
||||
for(nwqid = 0; (nwqid < s->fcall.nwname)
|
||||
&& mkqid(&qid, s->fcall.wname[nwqid], &s->fcall.wqid[nwqid]); nwqid++)
|
||||
qid = s->fcall.wqid[nwqid];
|
||||
&& !mkqid(&dir, s->fcall.wname[nwqid], &s->fcall.wqid[nwqid]); nwqid++)
|
||||
dir = s->fcall.wqid[nwqid];
|
||||
if(!nwqid) {
|
||||
s->errstr = "file not found";
|
||||
return -1;
|
||||
@ -272,24 +259,13 @@ xwalk(IXPServer * s, IXPConn * c)
|
||||
}
|
||||
/* a fid will only be valid, if the walk was complete */
|
||||
if(nwqid == s->fcall.nwname) {
|
||||
Map *m, *maps = c->aux;
|
||||
if(s->fcall.fid == s->fcall.newfid) {
|
||||
if(maps == map)
|
||||
maps = maps->next;
|
||||
else {
|
||||
for(m = maps; m && m->next != map; m = m->next);
|
||||
m->next = map->next;
|
||||
}
|
||||
free(map);
|
||||
if(s->fcall.fid != s->fcall.newfid) {
|
||||
Map *maps = c->aux;
|
||||
map = c->aux = cext_emallocz(sizeof(Map));
|
||||
map->next = maps;
|
||||
}
|
||||
map = cext_emallocz(sizeof(Map));
|
||||
map->qid = qid;
|
||||
map->qid = dir;
|
||||
map->fid = s->fcall.newfid;
|
||||
for(m = maps; m && m->next; m = m->next);
|
||||
if(!m)
|
||||
maps = map;
|
||||
else
|
||||
m->next = map;
|
||||
}
|
||||
s->fcall.id = RWALK;
|
||||
s->fcall.nwqid = nwqid;
|
||||
@ -318,7 +294,7 @@ xopen(IXPServer * s, IXPConn * c)
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
mkstat(Stat *stat, char *name, unsigned long long length, unsigned int mode)
|
||||
mkstat(Stat *stat, Qid *dir, char *name, unsigned long long length, unsigned int mode)
|
||||
{
|
||||
stat->mode = 0xfff | mode; /* --rwxrwxrwx */
|
||||
stat->atime = stat->mtime = time(0);
|
||||
@ -328,8 +304,7 @@ mkstat(Stat *stat, char *name, unsigned long long length, unsigned int mode)
|
||||
|
||||
cext_strlcpy(stat->name, name, sizeof(stat->name));
|
||||
stat->length = length;
|
||||
mkqid(&root_qid, name, &stat->qid);
|
||||
|
||||
mkqid(dir, name, &stat->qid);
|
||||
return ixp_sizeof_stat(stat);
|
||||
}
|
||||
|
||||
@ -339,34 +314,36 @@ xread(IXPServer * s, IXPConn * c)
|
||||
Stat stat;
|
||||
Map *map = fid_to_map(c->aux, s->fcall.fid);
|
||||
unsigned char *p = s->fcall.data;
|
||||
unsigned int i;
|
||||
char buf[32];
|
||||
|
||||
/*fprintf(stderr, "reading %lld\n", s->fcall.offset);*/
|
||||
if(!map) {
|
||||
s->errstr = "invalid fid";
|
||||
return -1;
|
||||
}
|
||||
/*fprintf(stderr, "%d\n", qpath_item(map->qid.path));*/
|
||||
s->fcall.id = RREAD;
|
||||
switch (qpath_type(map->qid.path)) {
|
||||
default:
|
||||
case Droot:
|
||||
s->fcall.count = mkstat(&stat, "display", strlen(align), 0x0);
|
||||
if(align == SOUTH || align == NORTH)
|
||||
s->fcall.count = mkstat(&stat, &root_qid, "display", 6, 0x0);
|
||||
else
|
||||
s->fcall.count = mkstat(&stat, &root_qid, "display", 5, 0x0); /* none */
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
s->fcall.count += mkstat(&stat, "font", strlen(font), 0x0);
|
||||
s->fcall.count += mkstat(&stat, &root_qid, "font", strlen(font), 0x0);
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
s->fcall.count += mkstat(&stat, "new", 0, 0x0);
|
||||
s->fcall.count += mkstat(&stat, &root_qid, "new", 0, 0x0);
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
s->fcall.count += mkstat(&stat, "event", 0, 0x0);
|
||||
s->fcall.count += mkstat(&stat, &root_qid, "event", 0, 0x0);
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
s->fcall.count += mkstat(&stat, "default", 0, DMDIR);
|
||||
s->fcall.count += mkstat(&stat, &root_qid, "default", 0, DMDIR);
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
/* todo: add all labels */
|
||||
s->fcall.count += mkstat(&stat, "1", 0, DMDIR);
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
s->fcall.count += mkstat(&stat, "2", 0, DMDIR);
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
s->fcall.count += mkstat(&stat, "3", 0, DMDIR);
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
s->fcall.id = RREAD;
|
||||
for(i = 0; (i < nitems) && items[i]; i++) {
|
||||
snprintf(buf, sizeof(buf), "%u", i + 1);
|
||||
s->fcall.count += mkstat(&stat, &root_qid, buf, 0, DMDIR);
|
||||
if(s->fcall.count > s->fcall.iounit)
|
||||
break;
|
||||
p = ixp_enc_stat(p, &stat);
|
||||
}
|
||||
if(s->fcall.offset >= s->fcall.count)
|
||||
s->fcall.count = 0; /* EOF */
|
||||
break;
|
||||
@ -384,55 +361,62 @@ xread(IXPServer * s, IXPConn * c)
|
||||
break;
|
||||
case Ffont:
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "filetype=%d\n", qpath_type(map->qid.path));
|
||||
s->errstr = "invalid file";
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
xstat(IXPServer * s, IXPConn * c)
|
||||
xstat(IXPServer *s, IXPConn *c)
|
||||
{
|
||||
Map *map = fid_to_map(c->aux, s->fcall.fid);
|
||||
unsigned short i;
|
||||
Qid dir;
|
||||
|
||||
/*fprintf(stderr, "%s", "stating\n");*/
|
||||
if(!map) {
|
||||
s->errstr = "invalid fid";
|
||||
return -1;
|
||||
}
|
||||
else if((i = qpath_item(map->qid.path) < nitems)) {
|
||||
s->errstr = "file not found";
|
||||
return -1;
|
||||
}
|
||||
dir.version = 0;
|
||||
dir.type = IXP_QTDIR;
|
||||
dir.path = mkqpath(Ditem, i);
|
||||
|
||||
s->fcall.id = RSTAT;
|
||||
|
||||
/*fprintf(stderr, "%d\n", qpath_item(map->qid.path));*/
|
||||
switch (qpath_type(map->qid.path)) {
|
||||
default:
|
||||
case Droot:
|
||||
mkstat(&s->fcall.stat, "/", 0, DMDIR);
|
||||
break;
|
||||
case Ditem:
|
||||
{
|
||||
unsigned short item = qpath_item(map->qid.path);
|
||||
char buf[16];
|
||||
if(!item)
|
||||
mkstat(&s->fcall.stat, "default", 0, DMDIR);
|
||||
else {
|
||||
snprintf(buf, sizeof(buf), "%u", item);
|
||||
mkstat(&s->fcall.stat, buf, 0, DMDIR);
|
||||
}
|
||||
}
|
||||
mkstat(&s->fcall.stat, &root_qid, qid_to_name(&map->qid), 0, DMDIR);
|
||||
break;
|
||||
case Fdisplay:
|
||||
mkstat(&s->fcall.stat, qfile_name(qpath_type(map->qid.path)), strlen(display), 0x0);
|
||||
mkstat(&s->fcall.stat, &root_qid, qid_to_name(&map->qid), strlen(display), 0x0);
|
||||
break;
|
||||
case Fnew:
|
||||
mkstat(&s->fcall.stat, qfile_name(qpath_type(map->qid.path)), 0, 0x0);
|
||||
break;
|
||||
case Fdata:
|
||||
case Fevent:
|
||||
case Fcolor:
|
||||
mkstat(&s->fcall.stat, &root_qid, qid_to_name(&map->qid), 0, 0x0);
|
||||
break;
|
||||
case Ffont:
|
||||
mkstat(&s->fcall.stat, &root_qid, qid_to_name(&map->qid), strlen(font), 0x0);
|
||||
break;
|
||||
case Fdata:
|
||||
mkstat(&s->fcall.stat, &dir, qid_to_name(&map->qid), strlen(items[i]->data), 0x0);
|
||||
break;
|
||||
case Fcolor:
|
||||
mkstat(&s->fcall.stat, &dir, qid_to_name(&map->qid), 24, 0x0);
|
||||
break;
|
||||
default:
|
||||
s->errstr = "invalid type";
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -526,7 +510,7 @@ main(int argc, char *argv[])
|
||||
}
|
||||
root_qid.type = IXP_QTDIR;
|
||||
root_qid.version = 0;
|
||||
root_qid.path = mkqpath(Droot, NONE, NONE);
|
||||
root_qid.path = mkqpath(Droot, 0);
|
||||
|
||||
mypid = getpid();
|
||||
atexit(exit_cleanup);
|
||||
@ -534,7 +518,6 @@ main(int argc, char *argv[])
|
||||
/* default item settings */
|
||||
item = cext_emallocz(sizeof(Item));
|
||||
|
||||
align = "bottom";
|
||||
font = "fixed";
|
||||
|
||||
ixp_server_loop(&srv);
|
||||
|
@ -42,6 +42,7 @@ void blitz_drawmeter(Display * dpy, Draw * r);
|
||||
void blitz_drawlabelnoborder(Display * dpy, Draw * r);
|
||||
|
||||
/* geometry.c */
|
||||
int blitz_strtoalign(Align *result, char *val);
|
||||
int blitz_strtorect(XRectangle * root, XRectangle * r, char *val);
|
||||
Bool blitz_ispointinrect(int x, int y, XRectangle * r);
|
||||
int blitz_distance(XRectangle * origin, XRectangle * target);
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
#include "blitz.h"
|
||||
|
||||
static int strtoalign(Align * result, char *val)
|
||||
int blitz_strtoalign(Align *result, char *val)
|
||||
{
|
||||
/*
|
||||
* note, resize allows syntax like "east-20", this we cannot do
|
||||
@ -84,8 +84,8 @@ int blitz_strtorect(XRectangle *root, XRectangle *r, char *val)
|
||||
if (!sx && !sw && x && w
|
||||
&& x[0] != '-' && x[0] != '+' && w[0] != '-' && w[0] != '+') {
|
||||
Align ax, aw;
|
||||
strtoalign(&ax, x);
|
||||
strtoalign(&aw, w);
|
||||
blitz_strtoalign(&ax, x);
|
||||
blitz_strtoalign(&aw, w);
|
||||
if ((ax == CENTER) && (aw == EAST)) {
|
||||
rx = root->x + root->width / 2;
|
||||
rw = root->width / 2;
|
||||
@ -99,7 +99,7 @@ int blitz_strtorect(XRectangle *root, XRectangle *r, char *val)
|
||||
}
|
||||
} else if (!sx && x && x[0] != '-' && x[0] != '+') {
|
||||
Align ax;
|
||||
strtoalign(&ax, x);
|
||||
blitz_strtoalign(&ax, x);
|
||||
if (ax == CENTER) {
|
||||
rx = root->x + (root->width / 2) - (rw / 2);
|
||||
} else if (ax == EAST) {
|
||||
@ -109,7 +109,7 @@ int blitz_strtorect(XRectangle *root, XRectangle *r, char *val)
|
||||
}
|
||||
} else if (!sw && w && w[0] != '-' && w[0] != '+') {
|
||||
Align aw;
|
||||
strtoalign(&aw, w);
|
||||
blitz_strtoalign(&aw, w);
|
||||
if (aw == CENTER) {
|
||||
rw = (root->width / 2) - rx;
|
||||
} else {
|
||||
@ -119,8 +119,8 @@ int blitz_strtorect(XRectangle *root, XRectangle *r, char *val)
|
||||
if (!sy && !sh && y && h
|
||||
&& y[0] != '-' && y[0] != '+' && h[0] != '-' && h[0] != '+') {
|
||||
Align ay, ah;
|
||||
strtoalign(&ay, y);
|
||||
strtoalign(&ah, h);
|
||||
blitz_strtoalign(&ay, y);
|
||||
blitz_strtoalign(&ah, h);
|
||||
if ((ay == CENTER) && (ah == SOUTH)) {
|
||||
ry = root->y + root->height / 2;
|
||||
rh = root->height / 2;
|
||||
@ -134,7 +134,7 @@ int blitz_strtorect(XRectangle *root, XRectangle *r, char *val)
|
||||
}
|
||||
} else if (!sy && y && y[0] != '-' && y[0] != '+') {
|
||||
Align ay;
|
||||
strtoalign(&ay, y);
|
||||
blitz_strtoalign(&ay, y);
|
||||
if (ay == CENTER) {
|
||||
ry = root->y + (root->height / 2) - (rh / 2);
|
||||
} else if (ay == SOUTH) {
|
||||
@ -144,7 +144,7 @@ int blitz_strtorect(XRectangle *root, XRectangle *r, char *val)
|
||||
}
|
||||
} else if (!sh && h && h[0] != '-' && h[0] != '+') {
|
||||
Align ah;
|
||||
strtoalign(&ah, h);
|
||||
blitz_strtoalign(&ah, h);
|
||||
if (ah == CENTER) {
|
||||
rh = (root->height / 2) - ry;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user