|
@@ -10,6 +10,19 @@
|
|
|
|
|
|
|
|
/* static functions */
|
|
/* static functions */
|
|
|
|
|
|
|
|
|
|
+static void
|
|
|
|
|
+grabbutton(Client *c, unsigned int button, unsigned int modifier)
|
|
|
|
|
+{
|
|
|
|
|
+ XGrabButton(dpy, button, modifier, c->win, False, BUTTONMASK,
|
|
|
|
|
+ GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
+ XGrabButton(dpy, button, modifier | LockMask, c->win, False, BUTTONMASK,
|
|
|
|
|
+ GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
+ XGrabButton(dpy, button, modifier | numlockmask, c->win, False, BUTTONMASK,
|
|
|
|
|
+ GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
+ XGrabButton(dpy, button, modifier | numlockmask | LockMask, c->win, False, BUTTONMASK,
|
|
|
|
|
+ GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
static void
|
|
static void
|
|
|
resizetitle(Client *c)
|
|
resizetitle(Client *c)
|
|
|
{
|
|
{
|
|
@@ -31,6 +44,15 @@ resizetitle(Client *c)
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+static void
|
|
|
|
|
+ungrabbutton(Client *c, unsigned int button, unsigned int modifier)
|
|
|
|
|
+{
|
|
|
|
|
+ XUngrabButton(dpy, button, modifier, c->win);
|
|
|
|
|
+ XUngrabButton(dpy, button, modifier | LockMask, c->win);
|
|
|
|
|
+ XUngrabButton(dpy, button, modifier | numlockmask, c->win);
|
|
|
|
|
+ XUngrabButton(dpy, button, modifier | numlockmask | LockMask, c->win);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
static int
|
|
static int
|
|
|
xerrordummy(Display *dsply, XErrorEvent *ee)
|
|
xerrordummy(Display *dsply, XErrorEvent *ee)
|
|
|
{
|
|
{
|
|
@@ -53,11 +75,14 @@ focus(Client *c)
|
|
|
|
|
|
|
|
if (!issel)
|
|
if (!issel)
|
|
|
return;
|
|
return;
|
|
|
- if(sel && sel->ismax)
|
|
|
|
|
|
|
+ if(sel && sel->ismax && sel != c)
|
|
|
togglemax(NULL);
|
|
togglemax(NULL);
|
|
|
sel = c;
|
|
sel = c;
|
|
|
- if(old && old != c)
|
|
|
|
|
|
|
+ if(old && old != c) {
|
|
|
|
|
+ grabbutton(old, AnyButton, 0);
|
|
|
drawtitle(old);
|
|
drawtitle(old);
|
|
|
|
|
+ }
|
|
|
|
|
+ ungrabbutton(c, AnyButton, 0);
|
|
|
drawtitle(c);
|
|
drawtitle(c);
|
|
|
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
|
|
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
|
|
|
}
|
|
}
|
|
@@ -230,32 +255,9 @@ manage(Window w, XWindowAttributes *wa)
|
|
|
c->next = clients;
|
|
c->next = clients;
|
|
|
clients = c;
|
|
clients = c;
|
|
|
|
|
|
|
|
- XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button1, MODKEY | LockMask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button1, MODKEY | numlockmask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button1, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
-
|
|
|
|
|
- XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button2, MODKEY | LockMask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button2, MODKEY | numlockmask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button2, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
-
|
|
|
|
|
- XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button3, MODKEY | LockMask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button3, MODKEY | numlockmask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
- XGrabButton(dpy, Button3, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK,
|
|
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
|
|
|
|
+ grabbutton(c, Button1, MODKEY);
|
|
|
|
|
+ grabbutton(c, Button2, MODKEY);
|
|
|
|
|
+ grabbutton(c, Button3, MODKEY);
|
|
|
|
|
|
|
|
settags(c);
|
|
settags(c);
|
|
|
if(!c->isfloat)
|
|
if(!c->isfloat)
|