commit 70b69693ca04cb58a7483dadada9070e4ca4a748
parent b025650e3e32ca42f2883545ea4190202b0f9def
Author: Anselm R. Garbe <garbeam@wmii.de>
Date: Fri, 3 Feb 2006 20:00:00 +0200
rearranged grab stuff
Diffstat:
4 files changed, 38 insertions(+), 44 deletions(-)
diff --git a/cmd/wm/client.c b/cmd/wm/client.c
@@ -109,13 +109,12 @@ focus_client(Client *c)
}
if(old && (old != c)) {
- ungrab_client(old, AnyModifier, AnyButton);
- grab_client(old, AnyModifier, AnyButton);
+ grab_window(old->win, AnyModifier, AnyButton);
draw_client(old);
}
- ungrab_client(c, AnyModifier, AnyButton);
- grab_client(c, Mod1Mask, Button1);
- grab_client(c, Mod1Mask, Button3);
+ ungrab_window(c->win, AnyModifier, AnyButton);
+ grab_window(c->win, Mod1Mask, Button1);
+ grab_window(c->win, Mod1Mask, Button3);
XRaiseWindow(dpy, c->frame.win);
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
XDefineCursor(dpy, c->win, normal_cursor);
@@ -134,7 +133,7 @@ map_client(Client * c)
void
unmap_client(Client * c)
{
- ungrab_client(c, AnyModifier, AnyButton);
+ ungrab_window(c->win, AnyModifier, AnyButton);
XUnmapWindow(dpy, c->win);
set_client_state(c, WithdrawnState);
}
@@ -147,29 +146,6 @@ reparent_client(Client *c, Window w, int x, int y)
}
void
-grab_client(Client * c, unsigned long mod, unsigned int button)
-{
- XGrabButton(dpy, button, mod, c->win, False,
- ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
- if((mod != AnyModifier) && num_lock_mask) {
- XGrabButton(dpy, button, mod | num_lock_mask, c->win, False,
- ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
- XGrabButton(dpy, button, mod | num_lock_mask | LockMask, c->win,
- False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
- }
-}
-
-void
-ungrab_client(Client * c, unsigned long mod, unsigned int button)
-{
- XUngrabButton(dpy, button, mod, c->win);
- if(mod != AnyModifier && num_lock_mask) {
- XUngrabButton(dpy, button, mod | num_lock_mask, c->win);
- XUngrabButton(dpy, button, mod | num_lock_mask | LockMask, c->win);
- }
-}
-
-void
configure_client(Client * c)
{
XConfigureEvent e;
diff --git a/cmd/wm/event.c b/cmd/wm/event.c
@@ -60,25 +60,20 @@ handle_buttonpress(XEvent * e)
XButtonPressedEvent *ev = &e->xbutton;
Align align;
static char buf[32];
-
- if((c = win_to_frame(ev->window))) {
+ if((c = win_to_frame(ev->window))) {
focus_client(c);
if(ev->button == Button1) {
align = cursor_to_align(c->frame.cursor);
if(align == CENTER)
mouse_move(c);
- else
+ else
mouse_resize(c, align);
- return;
}
- snprintf(buf, sizeof(buf), "Button%dPress\n", ev->button);
- do_pend_fcall(buf);
}
else if((c = win_to_client(ev->window))) {
focus_client(c);
ev->state &= valid_mask;
if(ev->state & Mod1Mask) {
- Align align;
XRaiseWindow(dpy, c->frame.win);
switch (ev->button) {
case Button1:
@@ -91,11 +86,13 @@ handle_buttonpress(XEvent * e)
else
mouse_resize(c, align);
break;
- default:
- break;
}
}
- }
+ }
+ if(c) {
+ snprintf(buf, sizeof(buf), "Button%dPress\n", ev->button);
+ do_pend_fcall(buf);
+ }
}
static void
diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c
@@ -278,7 +278,7 @@ map_detached_client()
XMoveResizeWindow(dpy, det[i]->win, cr.x, cr.y, cr.width, cr.height);
configure_client(det[i]);
map_client(det[i]);
- grab_client(det[i], AnyModifier, Button1);
+ grab_window(det[i]->win, AnyModifier, Button1);
XRaiseWindow(dpy, det[i]->win);
XSync(dpy, False);
}
@@ -615,6 +615,29 @@ cleanup()
XSync(dpy, False);
}
+void
+grab_window(Window w, unsigned long mod, unsigned int button)
+{
+ XGrabButton(dpy, button, mod, w, False,
+ ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
+ if((mod != AnyModifier) && num_lock_mask) {
+ XGrabButton(dpy, button, mod | num_lock_mask, w, False,
+ ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
+ XGrabButton(dpy, button, mod | num_lock_mask | LockMask, w,
+ False, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None);
+ }
+}
+
+void
+ungrab_window(Window w, unsigned long mod, unsigned int button)
+{
+ XUngrabButton(dpy, button, mod, w);
+ if(mod != AnyModifier && num_lock_mask) {
+ XUngrabButton(dpy, button, mod | num_lock_mask, w);
+ XUngrabButton(dpy, button, mod | num_lock_mask | LockMask, w);
+ }
+}
+
int
main(int argc, char *argv[])
{
diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h
@@ -173,8 +173,6 @@ void handle_client_property(Client * c, XPropertyEvent * e);
void close_client(Client * c);
void draw_client(Client * client);
void gravitate(Client * c, unsigned int tabh, unsigned int bw, int invert);
-void grab_client(Client * c, unsigned long mod, unsigned int button);
-void ungrab_client(Client * c, unsigned long mod, unsigned int button);
void unmap_client(Client * c);
void map_client(Client * c);
void reparent_client(Client * c, Window w, int x, int y);
@@ -228,5 +226,5 @@ Client *win_to_client(Window w);
int win_proto(Window w);
int win_state(Window w);
/*void handle_after_write(IXPServer * s, File * f);*/
-void detach(Client * f, int client_destroyed);
-void set_client_state(Client * c, int state);
+void grab_window(Window w, unsigned long mod, unsigned int button);
+void ungrab_window(Window w, unsigned long mod, unsigned int button);