commit 7185da87dd38434ccdbf883969e3255f0de2e302
parent 98cd2cda011b6098ef0bef3f65e35b721eab35ac
Author: Kris Maglione <jg@suckless.org>
Date: Fri, 9 Feb 2007 00:07:22 -0500
Minimize the calls to focus_client on ButtonClick events (maybe this will fix the freeze)
Diffstat:
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/event.c b/event.c
@@ -64,8 +64,8 @@ buttonpress(XEvent *e) {
}
}else{
if(ev->button == Button1) {
- frame_to_top(f);
- focus(f->client, True);
+ if(frame_to_top(f) || f->client != sel_client)
+ focus(f->client, True);
if(ispointinrect(ev->x, ev->y, &f->titlebar.rect)
||ispointinrect(ev->x, ev->y, &f->grabbox.rect))
do_mouse_resize(f->client, CENTER);
diff --git a/frame.c b/frame.c
@@ -95,19 +95,20 @@ resize_frame(Frame *f, XRectangle *r) {
match_sizehints(c, &f->rect, f->area->floating, stickycorner);
}
-void
+Bool
frame_to_top(Frame *f) {
Frame **tf;
Area *a;
a = f->area;
- if(!a->floating)
- return;
+ if(!a->floating || f == a->stack)
+ return False;
for(tf=&a->stack; *tf; tf=&(*tf)->snext)
if(*tf == f) break;
*tf = f->snext;
f->snext = a->stack;
a->stack = f;
+ return True;
}
void
diff --git a/wmii.h b/wmii.h
@@ -322,7 +322,7 @@ extern Frame *create_frame(Client *c, View *v);
extern void remove_frame(Frame *f);
extern void insert_frame(Frame *pos, Frame *f, Bool before);
extern void resize_frame(Frame *f, XRectangle *r);
-extern void frame_to_top(Frame *f);
+extern Bool frame_to_top(Frame *f);
extern void swap_frames(Frame *fa, Frame *fb);
extern void draw_frame(Frame *f);
extern void draw_frames();