JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
added mouse-based resizals
[dwm.git] / event.c
diff --git a/event.c b/event.c
index 344a0cc..ad4a16b 100644 (file)
--- a/event.c
+++ b/event.c
@@ -12,6 +12,7 @@
 #include "wm.h"
 
 /* local functions */
+static void buttonpress(XEvent *e);
 static void configurerequest(XEvent *e);
 static void destroynotify(XEvent *e);
 static void enternotify(XEvent *e);
@@ -23,6 +24,7 @@ static void propertynotify(XEvent *e);
 static void unmapnotify(XEvent *e);
 
 void (*handler[LASTEvent]) (XEvent *) = {
+       [ButtonPress] = buttonpress,
        [ConfigureRequest] = configurerequest,
        [DestroyNotify] = destroynotify,
        [EnterNotify] = enternotify,
@@ -36,7 +38,7 @@ void (*handler[LASTEvent]) (XEvent *) = {
 };
 
 unsigned int
-flush_events(long even_mask)
+discard_events(long even_mask)
 {
        XEvent ev;
        unsigned int n = 0;
@@ -45,15 +47,37 @@ flush_events(long even_mask)
 }
 
 static void
+buttonpress(XEvent *e)
+{
+       XButtonPressedEvent *ev = &e->xbutton;
+       Client *c;
+
+       if((c = getclient(ev->window))) {
+               switch(ev->button) {
+               default:
+                       break;
+               case Button1:
+                       mmove(c);
+                       break;
+               case Button2:
+                       XLowerWindow(dpy, c->win);
+                       break;
+               case Button3:
+                       mresize(c);
+                       break;
+               }
+       }
+}
+
+static void
 configurerequest(XEvent *e)
 {
        XConfigureRequestEvent *ev = &e->xconfigurerequest;
        XWindowChanges wc;
        Client *c;
 
-       c = getclient(ev->window);
        ev->value_mask &= ~CWSibling;
-       if(c) {
+       if((c = getclient(ev->window))) {
                if(ev->value_mask & CWX)
                        c->r[RFloat].x = ev->x;
                if(ev->value_mask & CWY)