added better area selection

This commit is contained in:
garbeam 2005-12-12 18:04:40 +02:00
parent 862713890a
commit 8b9326aa2a
6 changed files with 33 additions and 14 deletions

View File

@ -306,7 +306,7 @@ void attach_client(Client * c)
if (c && c->trans) {
Client *t = win_to_client(c->trans);
if (t && t->frame)
a = t->frame->area;
a = cext_list_get_item(&t->frame->area->page->areas, 0);
}
cext_attach_item(&a->clients, c);
a->layout->attach(a, c);

View File

@ -258,11 +258,11 @@ static void handle_enternotify(XEvent * e)
c = win_to_client(ev->window);
if (c && c->frame) {
Frame *old = get_sel_frame();
if (old != c->frame) {
c->frame->area->layout->select(c->frame, False);
if (old && old != c->frame)
draw_frame(old, nil);
draw_frame(c->frame, nil);
}
sel_area(c->frame->area);
c->frame->area->layout->select(c->frame, False);
draw_frame(c->frame, nil);
}
}

View File

@ -96,6 +96,7 @@ static void arrange_col(Area *a)
{
Acme *acme = a->aux;
cext_list_iterate(&acme->columns, a, iter_arrange_column);
XSync(dpy, False);
}
static void iter_attach_col(void *client, void *area)
@ -152,9 +153,9 @@ static Bool attach_col(Area *a, Client *c)
attach_client_to_frame(f, c);
if (a->page == get_sel_page())
XMapWindow(dpy, f->win);
select_col(f, True);
col->refresh = True;
arrange_col(a);
select_col(f, True);
return True;
}
@ -271,8 +272,7 @@ static void drop_moving(Frame *f, XRectangle *new, XPoint *pt)
f->aux = tgt;
tgt->refresh = src->refresh = True;
cext_stack_top_item(&acme->columns, tgt);
iter_arrange_column(tgt, f->area);
iter_arrange_column(src, f->area);
arrange_col(f->area);
}
}

View File

@ -11,8 +11,11 @@
static void handle_after_write_page(IXPServer * s, File * f);
static void select_area(void *obj, char *arg);
/* action table for /?/ namespace */
Action page_acttbl[] = {
{"select", select_area},
{0, 0}
};
@ -37,6 +40,7 @@ Page *alloc_page()
p->file[P_CTL] = ixp_create(ixps, buf);
p->file[P_CTL]->after_write = handle_after_write_page;
alloc_area(p, &rect, "float");
alloc_area(p, &rect, def[WM_LAYOUT]->content);
cext_attach_item(&pages, p);
def[WM_SEL_PAGE]->content = p->file[P_PREFIX]->content;
invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]);
@ -155,3 +159,17 @@ Page *get_sel_page()
{
return cext_stack_get_top_item(&pages);
}
static void select_area(void *obj, char *arg)
{
Page *p = obj;
Area *a = cext_stack_get_top_item(&p->areas);
if (!strncmp(arg, "prev", 5))
a = cext_list_get_prev_item(&p->areas, a);
else if (!strncmp(arg, "next", 5))
a = cext_list_get_next_item(&p->areas, a);
else
a = cext_list_get_item(&p->areas, blitz_strtonum(arg, 0, cext_sizeof(&p->areas) - 1));
sel_area(a);
}

View File

@ -92,7 +92,7 @@ enum {
#define PROTO_DEL 1
#define BORDER_WIDTH 3
#define LAYOUT "float"
#define LAYOUT "column"
#define GAP 5
#define ROOT_MASK (SubstructureRedirectMask | ButtonPressMask | ButtonReleaseMask)

View File

@ -129,7 +129,7 @@ kbind normal $MODKEY-t 'extern xterm ''+sb'' -bg ''#000000'' -fg ''#ffffff'' -cr
kbind normal $MODKEY-d 'wmiir write /wm/ctl detach'
kbind normal $MODKEY-a 'wmiir write /wm/ctl attach'
kbind normal $MODKEY-S-a 'wmiir write /wm/ctl ''detached clients'''
kbind normal $MODKEY-S-c 'wmiir write /wm/sel/layout/sel/geometry 0,0,east,south-20; wmiir write /wm/sel/layout/sel/name column'
kbind normal $MODKEY-S-c 'wmiir write /wm/sel/layout/1/geometry 0,0,east,south-20; wmiir write /wm/sel/layout/1/name column'
kbind normal $MODKEY-S-n 'wmiir write /wm/sel/layout/sel/ctl new'
kbind normal $MODKEY-S-d 'wmiir write /wm/sel/layout/sel/ctl destroy'
kbind normal $MODKEY-S-f 'wmiir write /wm/sel/layout/sel/name float'
@ -137,13 +137,14 @@ kbind normal $MODKEY-Return 'wmiir write /wm/sel/ctl ''select zoomed'''
kbind normal $MODKEY-C-y 'wmiir write /wm/ctl new'
kbind normal $MODKEY-u 'wmiir write /wm/sel/layout/sel/frame/sel/locked 0'
kbind normal $MODKEY-S-u 'wmiir write /wm/sel/layout/sel/frame/sel/locked 1'
kbind normal $MODKEY-$WESTKEY 'wmiir write /wm/ctl ''select prev'''
kbind normal $MODKEY-$EASTKEY 'wmiir write /wm/ctl ''select next'''
kbind normal $MODKEY-$WESTKEY 'wmiir write /wm/sel/layout/sel/ctl ''select west'''
kbind normal $MODKEY-$EASTKEY 'wmiir write /wm/sel/layout/sel/ctl ''select east'''
kbind normal $MODKEY-Tab 'wmiir write /wm/sel/layout/sel/ctl ''select next'''
kbind normal $MODKEY-$SOUTHKEY 'wmiir write /wm/sel/layout/sel/ctl ''select next'''
kbind normal $MODKEY-$NORTHKEY 'wmiir write /wm/sel/layout/sel/ctl ''select prev'''
kbind normal $MODKEY-S-$WESTKEY 'wmiir write /wm/sel/layout/sel/ctl ''select west'''
kbind normal $MODKEY-S-$EASTKEY 'wmiir write /wm/sel/layout/sel/ctl ''select east'''
kbind normal $MODKEY-S-$WESTKEY 'wmiir write /wm/ctl ''select prev'''
kbind normal $MODKEY-S-$EASTKEY 'wmiir write /wm/ctl ''select next'''
kbind normal $MODKEY-Space 'wmiir write /wm/sel/ctl ''select next'''
kbind normal $MODKEY-S-Tab 'wmiir write /wm/sel/layout/sel/frame/sel/ctl ''select next'''
kbind normal $MODKEY-S-$SOUTHKEY 'wmiir write /wm/sel/layout/sel/frame/sel/ctl ''select next'''
kbind normal $MODKEY-S-$NORTHKEY 'wmiir write /wm/sel/layout/sel/frame/sel/ctl ''select prev'''