diff --git a/ChangeLog b/ChangeLog
index e23ea10cbac614e71865f90500afb0240b83d8f6..a52feaeb5839b09b519862c75d800731ebb6a9cb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,8 @@
 Cvs code -
 - General
 	- New global variables currshortcut and currslen to support using
-	  the mouse with the shortcuts.  FIXME - Does not support clicking
-	  on filenames in the browser, yet.
+	  the mouse with the shortcuts.  Also supports clicking on files
+	  in browser.
 	- Changed mouse disabling code from depending on --enable-tiny
 	  to its own flag, --disable-mouse.  The --tiny option defines
 	  this automatically, but now just mouse support can be disabled
diff --git a/TODO b/TODO
index 62cc7fdc72eac15176769e8312e10131c2e8dca6..55828c8730158048fe87d0b83daedec9a44085c5 100644
--- a/TODO
+++ b/TODO
@@ -28,7 +28,7 @@ For Next Version:
 - Implement Pico's -j and -g flags, as they are pretty easy to do.
 - Make mouse support work with clicking on the shortcuts (-m).  Must
   make global variable pointing to current shortcut list to determine what
-  keystroke to ungetch().
+  keystroke to ungetch(). [DONE].
 - Implement -o (chroot of sorts)
 
 $Id$
diff --git a/files.c b/files.c
index 51cb20514052f35ab467671d688a572db23755ae..28fd5bbdc85b860e6cb88b839dac7825ebc34346 100644
--- a/files.c
+++ b/files.c
@@ -1139,6 +1139,11 @@ char *do_browser(char *inpath)
     int col = 0, selected = 0, editline = 0, width = 0, filecols = 0;
     int lineno = 0, kb;
     char **filelist = (char **) NULL;
+#ifndef DISABLE_MOUSE
+#ifdef NCURSES_MOUSE_VERSION
+    MEVENT mevent;
+#endif
+#endif
 
     currshortcut = browser_list;
     currslen = BROWSER_LIST_LEN;
@@ -1186,10 +1191,38 @@ char *do_browser(char *inpath)
 
 	switch (kbinput) {
 
-#ifndef NANO_SMALL
+#ifndef DISABLE_MOUSE
 #ifdef NCURSES_MOUSE_VERSION
         case KEY_MOUSE:
-            do_mouse();
+	    if (getmouse(&mevent) == ERR)
+	        return retval;
+ 
+	    /* If they clicked in the edit window, they probably clicked
+		on a file */
+ 	    if (wenclose(edit, mevent.y, mevent.x)) { 
+		int selectedbackup = selected;
+
+		mevent.y -= 2;
+
+		/* If we're on line 0, don't toy with finding out what
+			page we're on */
+		if (lineno / editwinrows == 0)
+		    selected = mevent.y * width + mevent.x / longest;
+		else
+		    selected = (lineno / editwinrows) * editwinrows * width 
+			+ mevent.y * width + mevent.x / longest;
+
+		/* If we're off the screen, reset to the last item.
+		   If we clicked where we did last time, select this name! */
+		if (selected >= numents - 1)
+		    selected = numents - 1;
+		else if (selectedbackup == selected) {
+		    ungetch('s');	/* Unget the 'select' key */
+		    break;
+		}
+	    } else	/* Must be clicking a shortcut */
+		do_mouse();
+
             break;
 #endif
 #endif