X-Git-Url: https://jasonwoof.com/gitweb/?p=dwm.git;a=blobdiff_plain;f=event.c;h=1db3d96517e3f52663fdc8ac4e75222fcfdbb36c;hp=b8b39a44d37ccc66e203c92d6e6f20505d728f17;hb=dfd84f9bf3b9d949412a73bc62a43109b340d395;hpb=48b6e9a3968e54a87f022c8e68b5bec5423cb75f diff --git a/event.c b/event.c index b8b39a4..1db3d96 100644 --- a/event.c +++ b/event.c @@ -37,13 +37,11 @@ void (*handler[LASTEvent]) (XEvent *) = { [UnmapNotify] = unmapnotify }; -unsigned int +void discard_events(long even_mask) { XEvent ev; - unsigned int n = 0; - while(XCheckMaskEvent(dpy, even_mask, &ev)) n++; - return n; + while(XCheckMaskEvent(dpy, even_mask, &ev)); } static void @@ -53,6 +51,7 @@ buttonpress(XEvent *e) Client *c; if((c = getclient(ev->window))) { + raise(c); switch(ev->button) { default: break; @@ -60,7 +59,7 @@ buttonpress(XEvent *e) mmove(c); break; case Button2: - XLowerWindow(dpy, c->win); + lower(c); break; case Button3: mresize(c); @@ -79,20 +78,20 @@ configurerequest(XEvent *e) ev->value_mask &= ~CWSibling; if((c = getclient(ev->window))) { if(ev->value_mask & CWX) - c->r[RFloat].x = ev->x; + c->x = ev->x; if(ev->value_mask & CWY) - c->r[RFloat].y = ev->y; + c->y = ev->y; if(ev->value_mask & CWWidth) - c->r[RFloat].width = ev->width; + c->w = ev->width; if(ev->value_mask & CWHeight) - c->r[RFloat].height = ev->height; + c->h = ev->height; } wc.x = ev->x; wc.y = ev->y; wc.width = ev->width; wc.height = ev->height; - wc.border_width = 0; + wc.border_width = 1; wc.sibling = None; wc.stack_mode = Above; ev->value_mask &= ~CWStackMode; @@ -122,10 +121,8 @@ enternotify(XEvent *e) if((c = getclient(ev->window))) focus(c); - else if(ev->window == root) { + else if(ev->window == root) sel_screen = True; - /*draw_frames();*/ - } } static void @@ -133,19 +130,20 @@ leavenotify(XEvent *e) { XCrossingEvent *ev = &e->xcrossing; - if((ev->window == root) && !ev->same_screen) { + if((ev->window == root) && !ev->same_screen) sel_screen = True; - /*draw_frames();*/ - } } static void expose(XEvent *e) { XExposeEvent *ev = &e->xexpose; + Client *c; if(ev->count == 0) { - if(ev->window == barwin) + if((c = gettitle(ev->window))) + draw_client(c); + else if(ev->window == barwin) draw_bar(); } } @@ -179,7 +177,6 @@ static void propertynotify(XEvent *e) { XPropertyEvent *ev = &e->xproperty; - long msize; Client *c; if(ev->state == PropertyDelete) @@ -195,20 +192,17 @@ propertynotify(XEvent *e) case XA_WM_TRANSIENT_FOR: XGetTransientForHint(dpy, c->win, &c->trans); break; + update_size(c); case XA_WM_NORMAL_HINTS: - if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) - || !c->size.flags) - c->size.flags = PSize; - if(c->size.flags & PMinSize && c->size.flags & PMaxSize - && c->size.min_width == c->size.max_width - && c->size.min_height == c->size.max_height) - c->fixedsize = True; - else - c->fixedsize = False; + update_size(c); break; } if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) { update_name(c); + if(c == stack) + draw_bar(); + else + draw_client(c); } } }