mirror of
https://github.com/0intro/wmii
synced 2025-03-14 02:33:15 +03:00
implemented basic new_column handling
This commit is contained in:
parent
c81c95aa6c
commit
4435f84131
@ -33,20 +33,21 @@ void
|
||||
arrange_page(Page *p, Bool update_colums)
|
||||
{
|
||||
size_t i;
|
||||
unsigned int width;
|
||||
|
||||
if(p->narea == 1)
|
||||
return;
|
||||
|
||||
if(update_colums) {
|
||||
unsigned int width = rect.width / (p->narea - 1);
|
||||
for(i = 1; i < p->narea; i++) {
|
||||
p->area[i]->rect = rect;
|
||||
p->area[i]->rect.x = i * width;
|
||||
p->area[i]->rect.width = width;
|
||||
width = rect.width / (p->narea - 1);
|
||||
for(i = 1; i < p->narea; i++) {
|
||||
Area *a = p->area[i];
|
||||
if(update_colums) {
|
||||
a->rect = rect;
|
||||
a->rect.x = (i - 1) * width;
|
||||
a->rect.width = width;
|
||||
}
|
||||
arrange_column(a);
|
||||
}
|
||||
for(i = 1; i < p->narea; i++)
|
||||
arrange_column(p->area[i]);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -202,27 +203,27 @@ select_column(Client *c, char *arg)
|
||||
focus_client(col->client[col->sel], True);
|
||||
}
|
||||
|
||||
void
|
||||
new_column(Page *p)
|
||||
Area *
|
||||
new_column(Area *old)
|
||||
{
|
||||
Page *p = old->page;
|
||||
Client *c = sel_client_of_page(p);
|
||||
Area *col, *old = c ? c->area : nil;
|
||||
Area *col;
|
||||
|
||||
if(!old || old->nclient < 2)
|
||||
return;
|
||||
if(!area_to_index(old) || (old->nclient < 2))
|
||||
return nil;
|
||||
|
||||
col = cext_emallocz(sizeof(Area));
|
||||
col->rect = rect;
|
||||
p->area = (Area **)cext_array_attach((void **)p->area, col,
|
||||
sizeof(Area *), &p->areasz);
|
||||
p->sel = p->narea;
|
||||
p->narea++;
|
||||
col = alloc_area(p);
|
||||
cext_array_detach((void **)old->client, c, &old->clientsz);
|
||||
old->nclient--;
|
||||
col->client = (Client **)cext_array_attach((void **)col->client, c,
|
||||
sizeof(Client *), &col->clientsz);
|
||||
col->nclient++;
|
||||
|
||||
c->area = col;
|
||||
arrange_page(p, True);
|
||||
focus_client(c, True);
|
||||
return col;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -347,7 +347,9 @@ mkqid(Qid *dir, char *wname, Qid *new, Bool iswalk)
|
||||
new->type = IXP_QTDIR;
|
||||
if(!strncmp(wname, "new", 4)) {
|
||||
if(iswalk) {
|
||||
Area *a = alloc_area(p);
|
||||
Area *a = new_column(p->area[p->sel]);
|
||||
if(!a)
|
||||
return -1;
|
||||
new->path = mkqpath(Darea, p->id, a->id, 0);
|
||||
}
|
||||
else
|
||||
|
@ -276,7 +276,7 @@ void arrange_page(Page *p, Bool update_colums);
|
||||
void arrange_column(Area *col);
|
||||
void resize_column(Client *c, XRectangle *r, XPoint *pt);
|
||||
void select_column(Client *c, char *arg);
|
||||
void new_column(Page *p);
|
||||
Area *new_column(Area *old);
|
||||
|
||||
/* wm.c */
|
||||
void scan_wins();
|
||||
|
Loading…
x
Reference in New Issue
Block a user