commit 623147ed85d50e59fe08be61868dded61055d0bb
parent e204c6f5eb47bac75c0fc25d0b1099018c6f2810
Author: Anselm R. Garbe <garbeam@wmii.de>
Date: Thu, 27 Apr 2006 18:32:37 +0200
updated client_grab
Diffstat:
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);