aewl
changeset 19:b5510d0c6d43
added basic mouse support (actually we don't need more)
author | Anselm R. Garbe <garbeam@wmii.de> |
---|---|
date | Tue, 11 Jul 2006 21:41:49 +0200 |
parents | 1efa34c6e1b6 |
children | 4560e0882c1d |
files | client.c event.c mouse.c wm.h |
diffstat | 4 files changed, 15 insertions(+), 24 deletions(-) [+] |
line diff
1.1 --- a/client.c Tue Jul 11 21:24:10 2006 +0200 1.2 +++ b/client.c Tue Jul 11 21:41:49 2006 +0200 1.3 @@ -70,8 +70,7 @@ 1.4 c->r[RFloat].y = wa->y; 1.5 c->r[RFloat].width = wa->width; 1.6 c->r[RFloat].height = wa->height; 1.7 - c->border = wa->border_width; 1.8 - XSetWindowBorderWidth(dpy, c->win, 0); 1.9 + XSetWindowBorderWidth(dpy, c->win, 1); 1.10 XSelectInput(dpy, c->win, CLIENT_MASK); 1.11 XGetTransientForHint(dpy, c->win, &c->trans); 1.12 if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags) 1.13 @@ -97,7 +96,11 @@ 1.14 c->snext = stack; 1.15 stack = c; 1.16 XMapWindow(dpy, c->win); 1.17 - XGrabButton(dpy, AnyButton, Mod1Mask, c->win, False, ButtonPressMask, 1.18 + XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask, 1.19 + GrabModeAsync, GrabModeSync, None, None); 1.20 + XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask, 1.21 + GrabModeAsync, GrabModeSync, None, None); 1.22 + XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask, 1.23 GrabModeAsync, GrabModeSync, None, None); 1.24 focus(c); 1.25 } 1.26 @@ -116,7 +119,7 @@ 1.27 e.y = c->r[RFloat].y; 1.28 e.width = c->r[RFloat].width; 1.29 e.height = c->r[RFloat].height; 1.30 - e.border_width = c->border; 1.31 + e.border_width = 0; 1.32 e.above = None; 1.33 e.override_redirect = False; 1.34 XSelectInput(dpy, c->win, CLIENT_MASK & ~StructureNotifyMask);
2.1 --- a/event.c Tue Jul 11 21:24:10 2006 +0200 2.2 +++ b/event.c Tue Jul 11 21:41:49 2006 +0200 2.3 @@ -86,8 +86,6 @@ 2.4 c->r[RFloat].width = ev->width; 2.5 if(ev->value_mask & CWHeight) 2.6 c->r[RFloat].height = ev->height; 2.7 - if(ev->value_mask & CWBorderWidth) 2.8 - c->border = ev->border_width; 2.9 } 2.10 2.11 wc.x = ev->x;
3.1 --- a/mouse.c Tue Jul 11 21:24:10 2006 +0200 3.2 +++ b/mouse.c Tue Jul 11 21:41:49 2006 +0200 3.3 @@ -42,7 +42,7 @@ 3.4 3.5 old_cx = c->r[RFloat].x; 3.6 old_cy = c->r[RFloat].y; 3.7 - if(XGrabPointer(dpy, c->win, False, MouseMask, GrabModeAsync, GrabModeAsync, 3.8 + if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync, 3.9 None, cursor[CurResize], CurrentTime) != GrabSuccess) 3.10 return; 3.11 XGrabServer(dpy); 3.12 @@ -55,10 +55,12 @@ 3.13 case MotionNotify: 3.14 XUngrabServer(dpy); 3.15 mmatch(c, old_cx, old_cy, ev.xmotion.x, ev.xmotion.y); 3.16 - resize(c); 3.17 + XResizeWindow(dpy, c->win, c->r[RFloat].width, c->r[RFloat].height); 3.18 XGrabServer(dpy); 3.19 break; 3.20 case ButtonRelease: 3.21 + resize(c); 3.22 + XUngrabServer(dpy); 3.23 XUngrabPointer(dpy, CurrentTime); 3.24 return; 3.25 } 3.26 @@ -75,7 +77,7 @@ 3.27 3.28 old_cx = c->r[RFloat].x; 3.29 old_cy = c->r[RFloat].y; 3.30 - if(XGrabPointer(dpy, c->win, False, MouseMask, GrabModeAsync, GrabModeAsync, 3.31 + if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync, 3.32 None, cursor[CurMove], CurrentTime) != GrabSuccess) 3.33 return; 3.34 XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); 3.35 @@ -88,10 +90,12 @@ 3.36 XUngrabServer(dpy); 3.37 c->r[RFloat].x = old_cx + (ev.xmotion.x - x1); 3.38 c->r[RFloat].y = old_cy + (ev.xmotion.y - y1); 3.39 - resize(c); 3.40 + XMoveResizeWindow(dpy, c->win, c->r[RFloat].x, c->r[RFloat].y, 3.41 + c->r[RFloat].width, c->r[RFloat].height); 3.42 XGrabServer(dpy); 3.43 break; 3.44 case ButtonRelease: 3.45 + resize(c); 3.46 XUngrabServer(dpy); 3.47 XUngrabPointer(dpy, CurrentTime); 3.48 return;
4.1 --- a/wm.h Tue Jul 11 21:24:10 2006 +0200 4.2 +++ b/wm.h Tue Jul 11 21:41:49 2006 +0200 4.3 @@ -13,19 +13,6 @@ 4.4 4.5 typedef struct Client Client; 4.6 typedef struct Key Key; 4.7 -typedef enum Align Align; 4.8 - 4.9 -enum Align { 4.10 - NORTH = 0x01, 4.11 - EAST = 0x02, 4.12 - SOUTH = 0x04, 4.13 - WEST = 0x08, 4.14 - NEAST = NORTH | EAST, 4.15 - NWEST = NORTH | WEST, 4.16 - SEAST = SOUTH | EAST, 4.17 - SWEST = SOUTH | WEST, 4.18 - CENTER = NEAST | SWEST 4.19 -}; 4.20 4.21 /* atoms */ 4.22 enum { WMProtocols, WMDelete, WMLast }; 4.23 @@ -40,7 +27,6 @@ 4.24 struct Client { 4.25 char name[256]; 4.26 char tag[256]; 4.27 - unsigned int border; 4.28 int proto; 4.29 Bool fixedsize; 4.30 Window win;