Index: MainWindow.cs
===================================================================
--- MainWindow.cs	(revision 3223)
+++ MainWindow.cs	(working copy)
@@ -2874,6 +2874,21 @@
         //}
 	}
 
+	public void HandleRevealFolder (object sender, Gnome.Vfs.MimeApplication mime_application)
+    {
+        // Place directories into the set to make sure we only open a given directory once
+        System.Collections.Specialized.StringCollection directories = new System.Collections.Specialized.StringCollection();
+        foreach (Photo photo in SelectedPhotos()) {
+            if (!directories.Contains (photo.DirectoryPath)) {
+                System.Diagnostics.Process.Start (String.Format (
+                    "gnome-open {0} || kfmclient exec {0} || open {0} || start \"\" {0}",
+                    "\"" + photo.DirectoryPath + "\""
+                ));
+                directories.Add (photo.DirectoryPath);
+            }
+        }
+    }
+
 	public void HandleOpenWith (object sender, Gnome.Vfs.MimeApplication mime_application)
 	{
 		Photo[] selected = SelectedPhotos ();
Index: PhotoPopup.cs
===================================================================
--- PhotoPopup.cs	(revision 3215)
+++ PhotoPopup.cs	(working copy)
@@ -55,6 +55,9 @@
 
 		GtkUtil.MakeMenuSeparator (popup_menu);
 
+		GtkUtil.MakeMenuItem (popup_menu, Catalog.GetString ("Reveal Folder(s)"),
+                delegate {MainWindow.Toplevel.HandleRevealFolder(creator, null); }, have_selection);
+
 		OpenWithMenu owm = OpenWithMenu.AppendMenuTo (popup_menu, MainWindow.Toplevel.SelectedMimeTypes, true);
 		owm.IgnoreApp = "f-spot";
 		owm.ApplicationActivated += delegate (Gnome.Vfs.MimeApplication app) { MainWindow.Toplevel.HandleOpenWith (creator, app); };
