795 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
795 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
796 if(focused) { |
796 if(focused) { |
797 for(i = 0; i < LENGTH(buttons); i++) |
797 for(i = 0; i < LENGTH(buttons); i++) |
798 if(buttons[i].click == ClkClientWin) |
798 if(buttons[i].click == ClkClientWin) |
799 for(j = 0; j < LENGTH(modifiers); j++) |
799 for(j = 0; j < LENGTH(modifiers); j++) |
800 XGrabButton(dpy, buttons[i].button, buttons[i].mask | modifiers[j], c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
800 XGrabButton(dpy, buttons[i].button, |
|
801 buttons[i].mask | modifiers[j], |
|
802 c->win, False, BUTTONMASK, |
|
803 GrabModeAsync, GrabModeSync, None, None); |
801 } else |
804 } else |
802 XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, |
805 XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, |
803 BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
806 BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
804 } |
807 } |
805 } |
808 } |
934 c->x = sx + sw - WIDTH(c); |
937 c->x = sx + sw - WIDTH(c); |
935 if(c->y + HEIGHT(c) > sy + sh) |
938 if(c->y + HEIGHT(c) > sy + sh) |
936 c->y = sy + sh - HEIGHT(c); |
939 c->y = sy + sh - HEIGHT(c); |
937 c->x = MAX(c->x, sx); |
940 c->x = MAX(c->x, sx); |
938 /* only fix client y-offset, if the client center might cover the bar */ |
941 /* only fix client y-offset, if the client center might cover the bar */ |
939 c->y = MAX(c->y, ((by == 0) && (c->x + (c->w / 2) >= wx) && (c->x + (c->w / 2) < wx + ww)) ? bh : sy); |
942 c->y = MAX(c->y, ((by == 0) && (c->x + (c->w / 2) >= wx) |
|
943 && (c->x + (c->w / 2) < wx + ww)) ? bh : sy); |
940 c->bw = borderpx; |
944 c->bw = borderpx; |
941 } |
945 } |
942 |
946 |
943 wc.border_width = c->bw; |
947 wc.border_width = c->bw; |
944 XConfigureWindow(dpy, w, CWBorderWidth, &wc); |
948 XConfigureWindow(dpy, w, CWBorderWidth, &wc); |
1033 nx = wx + ww - WIDTH(c); |
1037 nx = wx + ww - WIDTH(c); |
1034 if(abs(wy - ny) < snap) |
1038 if(abs(wy - ny) < snap) |
1035 ny = wy; |
1039 ny = wy; |
1036 else if(abs((wy + wh) - (ny + HEIGHT(c))) < snap) |
1040 else if(abs((wy + wh) - (ny + HEIGHT(c))) < snap) |
1037 ny = wy + wh - HEIGHT(c); |
1041 ny = wy + wh - HEIGHT(c); |
1038 if(!c->isfloating && lt[sellt]->arrange && (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) |
1042 if(!c->isfloating && lt[sellt]->arrange |
|
1043 && (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) |
1039 togglefloating(NULL); |
1044 togglefloating(NULL); |
1040 } |
1045 } |
1041 if(!lt[sellt]->arrange || c->isfloating) |
1046 if(!lt[sellt]->arrange || c->isfloating) |
1042 resize(c, nx, ny, c->w, c->h); |
1047 resize(c, nx, ny, c->w, c->h); |
1043 break; |
1048 break; |
1538 |
1543 |
1539 numlockmask = 0; |
1544 numlockmask = 0; |
1540 modmap = XGetModifierMapping(dpy); |
1545 modmap = XGetModifierMapping(dpy); |
1541 for(i = 0; i < 8; i++) |
1546 for(i = 0; i < 8; i++) |
1542 for(j = 0; j < modmap->max_keypermod; j++) |
1547 for(j = 0; j < modmap->max_keypermod; j++) |
1543 if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) |
1548 if(modmap->modifiermap[i * modmap->max_keypermod + j] |
|
1549 == XKeysymToKeycode(dpy, XK_Num_Lock)) |
1544 numlockmask = (1 << i); |
1550 numlockmask = (1 << i); |
1545 XFreeModifiermap(modmap); |
1551 XFreeModifiermap(modmap); |
1546 } |
1552 } |
1547 |
1553 |
1548 void |
1554 void |