diff -Naur evilwm-0.99.22/evilwm.1 evilwm-0.99.22.new/evilwm.1
--- evilwm-0.99.22/evilwm.1	2006-01-25 23:30:25.000000000 +0100
+++ evilwm-0.99.22.new/evilwm.1	2006-02-06 00:47:42.000000000 +0100
@@ -32,6 +32,7 @@
 .I vdesk
 .B ] [ \-s
 .B ] ]... [ \-V ]
+.B [ \-nosoliddrag ]
 .SH DESCRIPTION
 .B evilwm
 is a minimalist window manager based on aewm, extended to feature
@@ -144,6 +145,8 @@
 specify that application is to start with a sticky client window.
 .IP "\-V"
 print version number.
+.IP "\-nosoliddrag"
+draw a window outline while moving or resizing
 .SH BUGS
 The author's idea of friendly may differ to that of many other people.
 .SH AUTHOR
diff -Naur evilwm-0.99.22/evilwm.h evilwm-0.99.22.new/evilwm.h
--- evilwm-0.99.22/evilwm.h	2006-01-25 23:03:54.000000000 +0100
+++ evilwm-0.99.22.new/evilwm.h	2006-02-06 00:35:24.000000000 +0100
@@ -196,6 +196,9 @@
 #ifdef SHAPE
 extern int              have_shape, shape_event;
 #endif
+#ifdef SOLIDDRAG
+extern int              solid_drag;
+#endif
 extern unsigned int numlockmask;
 extern unsigned int grabmask2;
 extern unsigned int altmask;
diff -Naur evilwm-0.99.22/main.c evilwm-0.99.22.new/main.c
--- evilwm-0.99.22/main.c	2006-01-25 23:10:50.000000000 +0100
+++ evilwm-0.99.22.new/main.c	2006-02-06 00:38:21.000000000 +0100
@@ -37,6 +37,9 @@
 #ifdef SHAPE
 int             have_shape, shape_event;
 #endif
+#ifdef SOLIDDRAG
+int             solid_drag = 1; /* use solid drag by default */
+#endif
 unsigned int numlockmask = 0;
 static unsigned int grabmask1 = ControlMask|Mod1Mask;
 /* This one is used for per-client mousebutton grabs, so global: */
@@ -135,6 +138,10 @@
 		} else if (!strcmp(argv[i], "-altmask") && i+1<argc) {
 			i++;
 			altmask = parse_modifiers(argv[i]);
+#ifdef SOLIDDRAG
+		} else if (!strcmp(argv[i], "-nosoliddrag")) {
+			solid_drag = 0;
+#endif
 #ifdef STDIO
 		} else if (!strcmp(argv[i], "-V")) {
 			LOG_INFO("evilwm version " VERSION "\n");
@@ -153,6 +160,9 @@
 			LOG_INFO(" [-app name/class] [-g geometry] [-v vdesk] [-s]");
 #endif
 			LOG_INFO(" [-V]\n");
+#ifdef SOLIDDRAG
+			LOG_INFO("              [-nosoliddrag]\n");
+#endif
 			exit((!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help"))?0:1);
 		}
 	}
diff -Naur evilwm-0.99.22/screen.c evilwm-0.99.22.new/screen.c
--- evilwm-0.99.22/screen.c	2006-01-18 20:22:12.000000000 +0100
+++ evilwm-0.99.22.new/screen.c	2006-02-06 00:44:06.000000000 +0100
@@ -244,17 +244,25 @@
 #ifdef INFOBANNER_MOVERESIZE
 	create_info_window(c);
 #endif
-#ifndef SOLIDDRAG
-	XGrabServer(dpy);
-	draw_outline(c);
+#ifdef SOLIDDRAG
+	if(!solid_drag) {
+#endif
+		XGrabServer(dpy);
+		draw_outline(c);
+#ifdef SOLIDDRAG
+	}
 #endif 
 	for (;;) {
 		XMaskEvent(dpy, MouseMask, &ev);
 		switch (ev.type) {
 			case MotionNotify:
-#ifndef SOLIDDRAG
-				draw_outline(c); /* clear */
-				XUngrabServer(dpy);
+#ifdef SOLIDDRAG
+				if(!solid_drag) {
+#endif
+					draw_outline(c); /* clear */
+					XUngrabServer(dpy);
+#ifdef SOLIDDRAG
+				}
 #endif
 				c->x = old_cx + (ev.xmotion.x - x1);
 				c->y = old_cy + (ev.xmotion.y - y1);
@@ -266,27 +274,40 @@
 #ifdef INFOBANNER_MOVERESIZE
 				update_info_window(c);
 #endif
-#ifndef SOLIDDRAG
-				XSync(dpy, False);
-				XGrabServer(dpy);
-				draw_outline(c);
-#else
-				XMoveWindow(dpy, c->parent, c->x - c->border,
+#ifdef SOLIDDRAG
+				if(!solid_drag) {
+#endif
+					XSync(dpy, False);
+					XGrabServer(dpy);
+					draw_outline(c);
+#ifdef SOLIDDRAG
+				} else {
+					XMoveWindow(dpy, c->parent,
+						c->x - c->border,
 						c->y - c->border);
-				send_config(c);
+					send_config(c);
+				}
 #endif 
 				break;
 			case ButtonRelease:
-#ifndef SOLIDDRAG
-				draw_outline(c); /* clear */
-				XUngrabServer(dpy);
+#ifdef SOLIDDRAG
+				if(!solid_drag) {
+#endif
+					draw_outline(c); /* clear */
+					XUngrabServer(dpy);
+#ifdef SOLIDDRAG
+				}
 #endif
 #ifdef INFOBANNER_MOVERESIZE
 				remove_info_window();
 #endif
 				XUngrabPointer(dpy, CurrentTime);
-#ifndef SOLIDDRAG
-				moveresize(c);
+#ifdef SOLIDDRAG
+				if(!solid_drag) {
+#endif
+					moveresize(c);
+#ifdef SOLIDDRAG
+				}
 #endif
 				return;
 			default:
