[hackers] [dwm] merge default -> draw.c || Connor Lane Smith

From: <hg_AT_suckless.org>
Date: Wed, 20 Jul 2011 14:52:29 +0200 (CEST)

changeset: 1565:ee4aa582320a
branch: draw.c
tag: tip
parent: 1546:8993d1180a5c
parent: 1564:4548c824adac
user: Connor Lane Smith <cls_AT_lubutu.com>
date: Wed Jul 20 13:48:44 2011 +0100
files: dwm.c
description:
merge default -> draw.c

diff -r 8993d1180a5c -r ee4aa582320a .hgtags
--- a/.hgtags Sat Jun 04 11:03:12 2011 +0100
+++ b/.hgtags Wed Jul 20 13:48:44 2011 +0100
@@ -69,3 +69,4 @@
 60ea8fed13ab750c6717f2764cbf9c13bb6f0d0a 5.8
 1ed1e75c9c2e395a2c475b52657a430bd95070c7 5.8.1
 a043f08008051ca02ae87eb170cd066d8c8315a0 5.8.2
+dd74622a4785e55658b05b36834fa0c41084a8c1 5.9
diff -r 8993d1180a5c -r ee4aa582320a BUGS
--- a/BUGS Sat Jun 04 11:03:12 2011 +0100
+++ b/BUGS Wed Jul 20 13:48:44 2011 +0100
@@ -8,27 +8,6 @@
 
 ---
 
-> enternotify is handled even when the entered window is already focused
-> (eg moving the mouse to the bar and back, scrolling on the border..)
->
-> focusing might be expensive for some clients (eg dim/light up)
->
-> a possible solution is to modify enternotify:
->
-> + c = wintoclient(ev->window);
-> if((m = wintomon(ev->window)) && m != selmon) {
-> unfocus(selmon->sel);
-> selmon = m;
-> }
-> + else if (c == selmon->sel || c == NULL)
-> + return;
-

----
-
-dmenu appears on the monitor where the pointer is and not on selmon
-
----
-
 yet another corner case:
 open a terminal, focus another monitor, but without moving the mouse
 pointer there
diff -r 8993d1180a5c -r ee4aa582320a LICENSE
--- a/LICENSE	Sat Jun 04 11:03:12 2011 +0100
+++ b/LICENSE	Wed Jul 20 13:48:44 2011 +0100
@@ -1,6 +1,6 @@
 MIT/X Consortium License
 
-© 2006-2010 Anselm R Garbe <anselm_AT_garbe.us>
+© 2006-2011 Anselm R Garbe <anselm_AT_garbe.us>
 © 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com>
 © 2006-2009 Jukka Salmi <jukka at salmi dot ch>
 © 2007-2009 Premysl Hruby <dfenze at gmail dot com>
@@ -10,7 +10,7 @@
 © 2007-2008 Peter Hartlich <sgkkr at hartlich dot com>
 © 2008 Martin Hurton <martin dot hurton at gmail dot com>
 © 2008 Neale Pickett <neale dot woozle dot org>
-© 2009 Mate Nagy <mnagy_AT_port70.net>
+© 2009 Mate Nagy <mnagy at port70 dot net>
 
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the "Software"),
diff -r 8993d1180a5c -r ee4aa582320a config.mk
--- a/config.mk	Sat Jun 04 11:03:12 2011 +0100
+++ b/config.mk	Wed Jul 20 13:48:44 2011 +0100
@@ -20,10 +20,10 @@
 
 # flags
 CPPFLAGS = -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
-CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
-#CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
-LDFLAGS = -g ${LIBS}
-#LDFLAGS = -s ${LIBS}
+#CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
+CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
+#LDFLAGS = -g ${LIBS}
+LDFLAGS = -s ${LIBS}
 
 # Solaris
 #CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
diff -r 8993d1180a5c -r ee4aa582320a dwm.c
--- a/dwm.c	Sat Jun 04 11:03:12 2011 +0100
+++ b/dwm.c	Wed Jul 20 13:48:44 2011 +0100
@@ -43,7 +43,7 @@
 
 /* macros */
 #define BUTTONMASK              (ButtonPressMask|ButtonReleaseMask)
-#define CLEANMASK(mask)         ((mask) & ~(numlockmask|LockMask))
+#define CLEANMASK(mask)         ((mask) & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))
 #define INRECT(X,Y,RX,RY,RW,RH) ((X) >= (RX) && (X) < (RX) + (RW) && (Y) >= (RY) && (Y) < (RY) + (RH))
 #define ISVISIBLE(C)            (((C)->tags & (C)->mon->tagset[(C)->mon->seltags]))
 #define LENGTH(X)               (sizeof (X) / sizeof *(X))
@@ -422,7 +422,7 @@
 		}
 		else if(ev->x < x + blw)
 			click = ClkLtSymbol;
-		else if(ev->x > selmon->wx + selmon->ww - textw(dc, stext))
+		else if(ev->x > selmon->ww - textw(dc, stext))
 			click = ClkStatusText;
 		else
 			click = ClkWinTitle;
@@ -504,7 +504,7 @@
 	if(!c)
 		return;
 	if(cme->message_type == netatom[NetWMState] && cme->data.l[1] == netatom[NetWMFullscreen]) {
-		if(cme->data.l[0]) {
+		if(cme->data.l[0] && !c->isfullscreen) {
 			XChangeProperty(dpy, cme->window, netatom[NetWMState], XA_ATOM, 32,
 			                PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1);
 			c->isfullscreen = True;
@@ -560,11 +560,13 @@
 configurenotify(XEvent *e) {
 	Monitor *m;
 	XConfigureEvent *ev = &e->xconfigure;
+	Bool dirty;
 
 	if(ev->window == root) {
+		dirty = (sw != ev->width);
 		sw = ev->width;
 		sh = ev->height;
-		if(updategeom()) {
+		if(updategeom() || dirty) {
 			resizedc(dc, sw, bh);
 			updatebars();
 			for(m = mons; m; m = m->next)
@@ -746,16 +748,21 @@
 
 void
 enternotify(XEvent *e) {
+	Client *c;
 	Monitor *m;
 	XCrossingEvent *ev = &e->xcrossing;
 
 	if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root)
 		return;
-	if((m = wintomon(ev->window)) && m != selmon) {
+	c = wintoclient(ev->window);
+	m = c ? c->mon : wintomon(ev->window);
+	if(m != selmon) {
 		unfocus(selmon->sel, True);
 		selmon = m;
 	}
-	focus((wintoclient(ev->window)));
+	else if(!c || c == selmon->sel)
+		return;
+	focus(c);
 }
 
 void
@@ -989,8 +996,8 @@
 		applyrules(c);
 	}
 	/* geometry */
-	c->x = c->oldx = wa->x + c->mon->wx;
-	c->y = c->oldy = wa->y + c->mon->wy;
+	c->x = c->oldx = wa->x;
+	c->y = c->oldy = wa->y;
 	c->w = c->oldw = wa->width;
 	c->h = c->oldh = wa->height;
 	c->oldbw = wa->border_width;
@@ -1283,6 +1290,7 @@
 run(void) {
 	XEvent ev;
 	/* main event loop */
+	XSync(dpy, False);
 	while(running && !XNextEvent(dpy, &ev)) {
 		if(handler[ev.type])
 			handler[ev.type](&ev); /* call handler */
@@ -1902,7 +1910,6 @@
 	Client *c = selmon->sel;
 
 	if(!selmon->lt[selmon->sellt]->arrange
-	|| selmon->lt[selmon->sellt]->arrange == monocle
 	|| (selmon->sel && selmon->sel->isfloating))
 		return;
 	if(c == nexttiled(selmon->clients))
@@ -1914,7 +1921,7 @@
 int
 main(int argc, char *argv[]) {
 	if(argc == 2 && !strcmp("-v", argv[1])) {
-		fputs("dwm-"VERSION", © 2006-2011 dwm engineers, see LICENSE for details\n", stdout);
+		puts("dwm-"VERSION", © 2006-2011 dwm engineers, see LICENSE for details");
 		exit(EXIT_SUCCESS);
 	}
 	else if(argc != 1)
Received on Wed Jul 20 2011 - 14:52:29 CEST

This archive was generated by hypermail 2.2.0 : Wed Jul 20 2011 - 15:00:07 CEST