diff -urN WindowMaker-0.62.1/WPrefs.app/Expert.c WindowMaker-0.62.1.patched/WPrefs.app/Expert.c
--- WindowMaker-0.62.1/WPrefs.app/Expert.c	Fri Sep 17 17:03:54 1999
+++ WindowMaker-0.62.1.patched/WPrefs.app/Expert.c	Wed Aug 16 20:43:48 2000
@@ -33,7 +33,7 @@
     
     WMWindow *win;
 
-    WMButton *swi[8];
+    WMButton *swi[9];
 
 } _Panel;
 
@@ -53,6 +53,7 @@
     WMSetButtonSelected(panel->swi[3], GetBoolForKey("UseSaveUnders"));
     WMSetButtonSelected(panel->swi[4], GetBoolForKey("DisableBlinking"));
     WMSetButtonSelected(panel->swi[5], GetBoolForKey("DontConfirmKill"));
+    WMSetButtonSelected(panel->swi[6], GetBoolForKey("SingleClickLaunch"));
 }
 
 
@@ -66,7 +67,7 @@
     WMResizeWidget(panel->frame, FRAME_WIDTH, FRAME_HEIGHT);
     WMMoveWidget(panel->frame, FRAME_LEFT, FRAME_TOP);
 
-    for (i=0; i<6; i++) {
+    for (i=0; i<7; i++) {
 	panel->swi[i] = WMCreateSwitchButton(panel->frame);
 	WMResizeWidget(panel->swi[i], FRAME_WIDTH-40, 25);
 	WMMoveWidget(panel->swi[i], 20, 20+i*25);
@@ -78,6 +79,7 @@
     WMSetButtonText(panel->swi[3], _("Use SaveUnder in window frames, icons, menus and other objects"));
     WMSetButtonText(panel->swi[4], _("Disable cycling color highlighting of icons."));
     WMSetButtonText(panel->swi[5], _("Disable confirmation panel for the Kill command."));
+    WMSetButtonText(panel->swi[6], _("Launch applications and restore windows with a single click"));
 
     WMRealizeWidget(panel->frame);
     WMMapSubwidgets(panel->frame);
@@ -99,6 +101,7 @@
     SetBoolForKey(WMGetButtonSelected(panel->swi[3]), "UseSaveUnders");
     SetBoolForKey(WMGetButtonSelected(panel->swi[4]), "DisableBlinking");
     SetBoolForKey(WMGetButtonSelected(panel->swi[5]), "DontConfirmKill");
+    SetBoolForKey(WMGetButtonSelected(panel->swi[6]), "SingleClickLaunch");
 }
 
 
diff -urN WindowMaker-0.62.1/src/WindowMaker.h WindowMaker-0.62.1.patched/src/WindowMaker.h
--- WindowMaker-0.62.1/src/WindowMaker.h	Tue Mar 28 22:23:38 2000
+++ WindowMaker-0.62.1.patched/src/WindowMaker.h	Wed Aug 16 20:37:00 2000
@@ -416,6 +416,9 @@
     /* shading animation */
     signed char shade_speed;
 
+	/* single click to lauch applications */
+	char single_click;
+
     int edge_resistance;
     char attract;
 
diff -urN WindowMaker-0.62.1/src/appicon.c WindowMaker-0.62.1.patched/src/appicon.c
--- WindowMaker-0.62.1/src/appicon.c	Wed Mar 29 21:52:10 2000
+++ WindowMaker-0.62.1.patched/src/appicon.c	Wed Aug 16 20:37:00 2000
@@ -717,6 +717,7 @@
     int shad_x = 0, shad_y = 0, docking=0, dockable, collapsed = 0;
     int ix, iy;
     int clickButton = event->xbutton.button;
+	Bool hasMoved;
     Pixmap ghost = None;
     Window wins[2];
 
@@ -786,6 +787,7 @@
         XClearWindow(dpy, scr->dock_shadow);
     }
 
+	hasMoved = False;
     while (!done) {
 	WMMaskEvent(dpy, PointerMotionMask|ButtonReleaseMask|ButtonPressMask
 		    |ButtonMotionMask|ExposureMask, &ev);
@@ -795,6 +797,7 @@
 	    break;
 
 	 case MotionNotify:
+		hasMoved = True;
 	    if (!grabbed) {
 		if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
 		    || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
@@ -925,6 +928,9 @@
 		wArrangeIcons(scr, True);
 
 	    done = 1;
+		if (!hasMoved && wPreferences.single_click) {
+			iconDblClick(desc, event);
+		}
 	    break;
 	}
     }
diff -urN WindowMaker-0.62.1/src/defaults.c WindowMaker-0.62.1.patched/src/defaults.c
--- WindowMaker-0.62.1/src/defaults.c	Tue Mar 28 22:58:25 2000
+++ WindowMaker-0.62.1.patched/src/defaults.c	Wed Aug 16 20:37:58 2000
@@ -530,6 +530,9 @@
     {"DisableBlinking",	"NO",		NULL,
 	   &wPreferences.dont_blink,	getBool,	NULL
     },
+    {"SingleClickLaunch", "NO",		NULL,
+       &wPreferences.single_click,	getBool,	NULL
+    },
       /* style options */
     {"MenuStyle", 	"normal",  		seMenuStyles,
 	&wPreferences.menu_style, getEnum, 	setMenuStyle
diff -urN WindowMaker-0.62.1/src/dock.c WindowMaker-0.62.1.patched/src/dock.c
--- WindowMaker-0.62.1/src/dock.c	Wed Mar 29 21:52:10 2000
+++ WindowMaker-0.62.1.patched/src/dock.c	Wed Aug 16 20:40:15 2000
@@ -3750,7 +3750,7 @@
 
 
 
-static void
+static int
 handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event)
 {
     WScreen *scr = dock->screen_ptr;
@@ -3765,11 +3765,11 @@
     int ix = aicon->xindex, iy = aicon->yindex;
     int tmp;
     Pixmap ghost = None;
-    Bool docked;
+    Bool docked, hasMoved;
     int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */
     int omnipresent = aicon->omnipresent; /* this must be cached!!! */
 
-
+    hasMoved = False;
     if (wPreferences.flags.noupdates)
 	return;
 
@@ -3820,6 +3820,7 @@
 	    break;
 
 	 case MotionNotify:
+		hasMoved = True;
 	    if (!grabbed) {
 		if (abs(ofs_x-ev.xmotion.x)>=MOVE_THRESHOLD
 		    || abs(ofs_y-ev.xmotion.y)>=MOVE_THRESHOLD) {
@@ -3975,7 +3976,10 @@
 #ifdef DEBUG
 	    puts("End icon move");
 #endif
-	    return;
+		if (!hasMoved) {
+			return 1;
+		}
+	    return 0;
 	}
     }
 }
@@ -4115,7 +4119,9 @@
             else
                 handleDockMove(dock, aicon, event);
         } else
-	    handleIconMove(dock, aicon, event);
+	    if (handleIconMove(dock, aicon, event) != 0 &&
+	        wPreferences.single_click)
+	        iconDblClick(desc, event);
 
     } else if (event->xbutton.button==Button2 && dock->type==WM_CLIP &&
                aicon==scr->clip_icon) {
diff -urN WindowMaker-0.62.1/src/icon.c WindowMaker-0.62.1.patched/src/icon.c
--- WindowMaker-0.62.1/src/icon.c	Thu Jan 20 06:51:44 2000
+++ WindowMaker-0.62.1.patched/src/icon.c	Wed Aug 16 20:37:00 2000
@@ -874,6 +874,7 @@
     int dx=event->xbutton.x, dy=event->xbutton.y;
     int grabbed=0;
     int clickButton=event->xbutton.button;
+	Bool hasMoved;
 
     if (WCHECK_STATE(WSTATE_MODAL))
 	return;
@@ -916,6 +917,7 @@
 	wwarning("pointer grab failed for icon move");
 #endif
     }
+	hasMoved = False;
     while(1) {
 	WMMaskEvent(dpy, PointerMotionMask|ButtonReleaseMask|ButtonPressMask
 		   |ButtonMotionMask|ExposureMask, &ev);
@@ -925,6 +927,7 @@
 	    break;
 
 	 case MotionNotify:
+		hasMoved = True;
 	    if (!grabbed) {
 		if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
 		    || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
@@ -962,6 +965,9 @@
 
 	    if (wPreferences.auto_arrange_icons)
 		wArrangeIcons(wwin->screen_ptr, True);
+		if (!hasMoved && wPreferences.single_click) {
+			miniwindowDblClick(desc, event);
+		}
 	    return;
 	    
 	}
