Xinqi Bao's Git
projects
/
dwm.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
applied Peter Hartlich's border collapse patch
[dwm.git]
/
dwm.c
diff --git
a/dwm.c
b/dwm.c
index
8762269
..
5aa71b7
100644
(file)
--- a/
dwm.c
+++ b/
dwm.c
@@
-27,14
+27,15
@@
*/
#include <errno.h>
#include <locale.h>
*/
#include <errno.h>
#include <locale.h>
-#include <regex.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/select.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/select.h>
+#include <sys/types.h>
#include <sys/wait.h>
#include <sys/wait.h>
+#include <regex.h>
#include <X11/cursorfont.h>
#include <X11/keysym.h>
#include <X11/Xatom.h>
#include <X11/cursorfont.h>
#include <X11/keysym.h>
#include <X11/Xatom.h>
@@
-341,7
+342,7
@@
buttonpress(XEvent *e) {
movemouse(c);
}
else if(ev->button == Button2) {
movemouse(c);
}
else if(ev->button == Button2) {
- if(
isarrange(tile)
&& !c->isfixed && c->isfloating)
+ if(
ISTILE
&& !c->isfixed && c->isfloating)
togglefloating(NULL);
else
zoom(NULL);
togglefloating(NULL);
else
zoom(NULL);
@@
-645,8
+646,10
@@
enternotify(XEvent *e) {
if(ev->mode != NotifyNormal || ev->detail == NotifyInferior)
return;
if(ev->mode != NotifyNormal || ev->detail == NotifyInferior)
return;
- if((c = getclient(ev->window)))
+ if((c = getclient(ev->window)))
{
focus(c);
focus(c);
+ restack();
+ }
else if(ev->window == root) {
selscreen = True;
focus(NULL);
else if(ev->window == root) {
selscreen = True;
focus(NULL);
@@
-1398,7
+1401,7
@@
void
setmwfact(const char *arg) {
double delta;
setmwfact(const char *arg) {
double delta;
- if(!
isarrange(tile)
)
+ if(!
ISTILE
)
return;
/* arg handling, manipulate mwfact */
if(arg == NULL)
return;
/* arg handling, manipulate mwfact */
if(arg == NULL)
@@
-1418,6
+1421,7
@@
setmwfact(const char *arg) {
void
setup(void) {
void
setup(void) {
+ int d;
unsigned int i, j, mask;
Window w;
XModifierKeymap *modmap;
unsigned int i, j, mask;
Window w;
XModifierKeymap *modmap;
@@
-1507,7
+1511,7
@@
setup(void) {
XSetFont(dpy, dc.gc, dc.font.xfont->fid);
/* multihead support */
XSetFont(dpy, dc.gc, dc.font.xfont->fid);
/* multihead support */
- selscreen = XQueryPointer(dpy, root, &w, &w, &
i, &i, &i, &i
, &mask);
+ selscreen = XQueryPointer(dpy, root, &w, &w, &
d, &d, &d, &d
, &mask);
}
void
}
void
@@
-1567,7
+1571,7
@@
textw(const char *text) {
void
tile(void) {
unsigned int i, n, nx, ny, nw, nh, mw, th;
void
tile(void) {
unsigned int i, n, nx, ny, nw, nh, mw, th;
- Client *c;
+ Client *c
, *mc
;
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
n++;
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
n++;
@@
-1580,7
+1584,8
@@
tile(void) {
nx = wax;
ny = way;
nx = wax;
ny = way;
- for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) {
+ nw = 0; /* gcc stupidity requires this */
+ for(i = 0, c = mc = nexttiled(clients); c; c = nexttiled(c->next), i++) {
c->ismax = False;
if(i == 0) { /* master */
nw = mw - 2 * c->border;
c->ismax = False;
if(i == 0) { /* master */
nw = mw - 2 * c->border;
@@
-1589,9
+1594,9
@@
tile(void) {
else { /* tile window */
if(i == 1) {
ny = way;
else { /* tile window */
if(i == 1) {
ny = way;
- nx += mw;
+ nx += mc->w + mc->border;
+ nw = waw - nx - 2 * c->border;
}
}
- nw = waw - mw - 2 * c->border;
if(i + 1 == n) /* remainder */
nh = (way + wah) - ny - 2 * c->border;
else
if(i + 1 == n) /* remainder */
nh = (way + wah) - ny - 2 * c->border;
else
@@
-1599,7
+1604,7
@@
tile(void) {
}
resize(c, nx, ny, nw, nh, RESIZEHINTS);
if(n > 1 && th != wah)
}
resize(c, nx, ny, nw, nh, RESIZEHINTS);
if(n > 1 && th != wah)
- ny
+= nh + 2 *
c->border;
+ ny
= c->y + c->h +
c->border;
}
}
}
}
@@
-1673,7
+1678,7
@@
toggleview(const char *arg) {
seltags[i] = !seltags[i];
for(j = 0; j < ntags && !seltags[j]; j++);
if(j == ntags)
seltags[i] = !seltags[i];
for(j = 0; j < ntags && !seltags[j]; j++);
if(j == ntags)
- seltags[i] = True; /*
cannot toggle last view
*/
+ seltags[i] = True; /*
at least one tag must be viewed
*/
arrange();
}
arrange();
}
@@
-1849,7
+1854,7
@@
void
zoom(const char *arg) {
Client *c;
zoom(const char *arg) {
Client *c;
- if(!sel || !
isarrange(tile)
|| sel->isfloating)
+ if(!sel || !
ISTILE
|| sel->isfloating)
return;
if((c = sel) == nexttiled(clients))
if(!(c = nexttiled(c->next)))
return;
if((c = sel) == nexttiled(clients))
if(!(c = nexttiled(c->next)))