@ -53,8 +53,8 @@
# define MIN(a, b) ((a) < (b) ? (a) : (b))
# define MIN(a, b) ((a) < (b) ? (a) : (b))
# define MAXTAGLEN 16
# define MAXTAGLEN 16
# define MOUSEMASK (BUTTONMASK|PointerMotionMask)
# define MOUSEMASK (BUTTONMASK|PointerMotionMask)
# define WIDTH(x) ((x)->w + 2 *(x)->bw)
# define WIDTH(x) ((x)->w + 2 * (x)->bw)
# define HEIGHT(x) ((x)->h + 2 *(x)->bw)
# define HEIGHT(x) ((x)->h + 2 * (x)->bw)
# define TAGMASK ((int)((1LL << LENGTH(tags)) - 1))
# define TAGMASK ((int)((1LL << LENGTH(tags)) - 1))
# define TEXTW(x) (textnw(x, strlen(x)) + dc.font.height)
# define TEXTW(x) (textnw(x, strlen(x)) + dc.font.height)
@ -932,7 +932,7 @@ monocle(void) {
Client * c ;
Client * c ;
for ( c = nexttiled ( clients ) ; c ; c = nexttiled ( c - > next ) )
for ( c = nexttiled ( clients ) ; c ; c = nexttiled ( c - > next ) )
resize ( c , wx , wy , ww - 2 * c - > bw , wh - 2 * c - > bw , resizehints ) ;
resize ( c , wx , wy , ww - 2 * c - > bw , wh - 2 * c - > bw , resizehints ) ;
}
}
void
void
@ -952,6 +952,8 @@ movemouse(const Arg *arg) {
None , cursor [ CurMove ] , CurrentTime ) ! = GrabSuccess )
None , cursor [ CurMove ] , CurrentTime ) ! = GrabSuccess )
return ;
return ;
XQueryPointer ( dpy , root , & dummy , & dummy , & x , & y , & di , & di , & dui ) ;
XQueryPointer ( dpy , root , & dummy , & dummy , & x , & y , & di , & di , & dui ) ;
if ( usegrab )
XGrabServer ( dpy ) ;
do {
do {
XMaskEvent ( dpy , MOUSEMASK | ExposureMask | SubstructureRedirectMask , & ev ) ;
XMaskEvent ( dpy , MOUSEMASK | ExposureMask | SubstructureRedirectMask , & ev ) ;
switch ( ev . type ) {
switch ( ev . type ) {
@ -961,7 +963,6 @@ movemouse(const Arg *arg) {
handler [ ev . type ] ( & ev ) ;
handler [ ev . type ] ( & ev ) ;
break ;
break ;
case MotionNotify :
case MotionNotify :
XSync ( dpy , False ) ;
nx = ocx + ( ev . xmotion . x - x ) ;
nx = ocx + ( ev . xmotion . x - x ) ;
ny = ocy + ( ev . xmotion . y - y ) ;
ny = ocy + ( ev . xmotion . y - y ) ;
if ( snap & & nx > = wx & & nx < = wx + ww
if ( snap & & nx > = wx & & nx < = wx + ww
@ -983,6 +984,8 @@ movemouse(const Arg *arg) {
}
}
}
}
while ( ev . type ! = ButtonRelease ) ;
while ( ev . type ! = ButtonRelease ) ;
if ( usegrab )
XUngrabServer ( dpy ) ;
XUngrabPointer ( dpy , CurrentTime ) ;
XUngrabPointer ( dpy , CurrentTime ) ;
}
}
@ -1121,6 +1124,8 @@ resizemouse(const Arg *arg) {
None , cursor [ CurResize ] , CurrentTime ) ! = GrabSuccess )
None , cursor [ CurResize ] , CurrentTime ) ! = GrabSuccess )
return ;
return ;
XWarpPointer ( dpy , None , c - > win , 0 , 0 , 0 , 0 , c - > w + c - > bw - 1 , c - > h + c - > bw - 1 ) ;
XWarpPointer ( dpy , None , c - > win , 0 , 0 , 0 , 0 , c - > w + c - > bw - 1 , c - > h + c - > bw - 1 ) ;
if ( usegrab )
XGrabServer ( dpy ) ;
do {
do {
XMaskEvent ( dpy , MOUSEMASK | ExposureMask | SubstructureRedirectMask , & ev ) ;
XMaskEvent ( dpy , MOUSEMASK | ExposureMask | SubstructureRedirectMask , & ev ) ;
switch ( ev . type ) {
switch ( ev . type ) {
@ -1130,7 +1135,6 @@ resizemouse(const Arg *arg) {
handler [ ev . type ] ( & ev ) ;
handler [ ev . type ] ( & ev ) ;
break ;
break ;
case MotionNotify :
case MotionNotify :
XSync ( dpy , False ) ;
nw = MAX ( ev . xmotion . x - ocx - 2 * c - > bw + 1 , 1 ) ;
nw = MAX ( ev . xmotion . x - ocx - 2 * c - > bw + 1 , 1 ) ;
nh = MAX ( ev . xmotion . y - ocy - 2 * c - > bw + 1 , 1 ) ;
nh = MAX ( ev . xmotion . y - ocy - 2 * c - > bw + 1 , 1 ) ;
@ -1146,6 +1150,8 @@ resizemouse(const Arg *arg) {
}
}
}
}
while ( ev . type ! = ButtonRelease ) ;
while ( ev . type ! = ButtonRelease ) ;
if ( usegrab )
XUngrabServer ( dpy ) ;
XWarpPointer ( dpy , None , c - > win , 0 , 0 , 0 , 0 , c - > w + c - > bw - 1 , c - > h + c - > bw - 1 ) ;
XWarpPointer ( dpy , None , c - > win , 0 , 0 , 0 , 0 , c - > w + c - > bw - 1 , c - > h + c - > bw - 1 ) ;
XUngrabPointer ( dpy , CurrentTime ) ;
XUngrabPointer ( dpy , CurrentTime ) ;
while ( XCheckMaskEvent ( dpy , EnterWindowMask , & ev ) ) ;
while ( XCheckMaskEvent ( dpy , EnterWindowMask , & ev ) ) ;
@ -1435,7 +1441,7 @@ tile(void) {
/* master */
/* master */
c = nexttiled ( clients ) ;
c = nexttiled ( clients ) ;
mw = mfact * ww ;
mw = mfact * ww ;
resize ( c , wx , wy , ( n = = 1 ? ww : mw ) - 2 * c - > bw , wh - 2 * c - > bw , resizehints ) ;
resize ( c , wx , wy , ( n = = 1 ? ww : mw ) - 2 * c - > bw , wh - 2 * c - > bw , resizehints ) ;
if ( - - n = = 0 )
if ( - - n = = 0 )
return ;
return ;
@ -1449,8 +1455,14 @@ tile(void) {
h = wh ;
h = wh ;
for ( i = 0 , c = nexttiled ( c - > next ) ; c ; c = nexttiled ( c - > next ) , i + + ) {
for ( i = 0 , c = nexttiled ( c - > next ) ; c ; c = nexttiled ( c - > next ) , i + + ) {
resize ( c , x , y , w - 2 * c - > bw , /* remainder */ ( ( i + 1 = = n )
if ( i + 1 = = n ) { /* remainder */
? wy + wh - y : h ) - 2 * c - > bw , resizehints ) ;
if ( wy + wh - y < bh )
resize ( c , x , y , w - 2 * c - > bw , wy + wh - y - 2 * c - > bw , False ) ;
else
resize ( c , x , y , w - 2 * c - > bw , wy + wh - y - 2 * c - > bw , resizehints ) ;
}
else
resize ( c , x , y , w - 2 * c - > bw , h - 2 * c - > bw , resizehints ) ;
if ( h ! = wh )
if ( h ! = wh )
y = c - > y + HEIGHT ( c ) ;
y = c - > y + HEIGHT ( c ) ;
}
}