wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 623147ed85d50e59fe08be61868dded61055d0bb
parent e204c6f5eb47bac75c0fc25d0b1099018c6f2810
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Thu, 27 Apr 2006 18:32:37 +0200

updated client_grab


Diffstat:
cmd/wm/client.c | 17+++++++++++++++++
cmd/wm/view.c | 8+-------
cmd/wm/wm.h | 1+
3 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -100,6 +100,18 @@ set_client_state(Client * c, int state) } void +update_client_grab(Client *c, Bool is_sel) +{ + if(is_sel) { + ungrab_mouse(c->framewin, AnyModifier, AnyButton); + grab_mouse(c->framewin, def.mod, Button1); + grab_mouse(c->framewin, def.mod, Button3); + } + else + grab_mouse(c->framewin, AnyModifier, Button1); +} + +void focus_client(Client *c, Bool restack) { Client *old = sel_client(); @@ -114,6 +126,11 @@ focus_client(Client *c, Bool restack) draw_client(old); if(restack) restack_view(v); + else { + if(old) + update_client_grab(old, False); + update_client_grab(c, True); + } XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); draw_client(c); diff --git a/cmd/wm/view.c b/cmd/wm/view.c @@ -256,13 +256,7 @@ restack_view(View *v) wins[n++] = a->frame.data[a->sel]->client->framewin; for(j = a->frame.size - 1; j >= 0; j--) { Client *c = a->frame.data[j]->client; - if((v->sel == i) && (a->sel == j)) { - ungrab_mouse(c->framewin, AnyModifier, AnyButton); - grab_mouse(c->framewin, def.mod, Button1); - grab_mouse(c->framewin, def.mod, Button3); - } - else - grab_mouse(c->framewin, AnyModifier, Button1); + update_client_grab(c, (v->sel == i) && (a->sel == j)); if(j == a->sel) continue; wins[n++] = c->framewin; diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -232,6 +232,7 @@ Client *sel_client(); int idx_of_client_id(unsigned short id); Client *client_of_win(Window w); void draw_clients(); +void update_client_grab(Client *c, Bool is_sel); /* column.c */ void arrange_column(Area *a, Bool dirty);