Index: wp-admin/includes/plugin.php
===================================================================
--- wp-admin/includes/plugin.php	(revision 27045)
+++ wp-admin/includes/plugin.php	(working copy)
@@ -182,35 +182,46 @@
  * @param string $plugin Plugin ID
  * @return array List of files relative to the plugin root.
  */
-function get_plugin_files($plugin) {
+function get_plugin_files( $plugin ) {
 	$plugin_file = WP_PLUGIN_DIR . '/' . $plugin;
-	$dir = dirname($plugin_file);
-	$plugin_files = array($plugin);
-	if ( is_dir($dir) && $dir != WP_PLUGIN_DIR ) {
+	$dir =  WP_PLUGIN_DIR . '/' . current( explode( '/', $plugin, 2 ) );
+	$plugin_files = array( $plugin );
+	if ( is_dir( $dir ) && $dir != WP_PLUGIN_DIR ) {
 		$plugins_dir = @ opendir( $dir );
 		if ( $plugins_dir ) {
-			while (($file = readdir( $plugins_dir ) ) !== false ) {
-				if ( substr($file, 0, 1) == '.' )
+			while ( ( $file = readdir( $plugins_dir ) ) !== false ) {
+				if ( substr( $file, 0, 1 ) == '.' )
 					continue;
 				if ( is_dir( $dir . '/' . $file ) ) {
-					$plugins_subdir = @ opendir( $dir . '/' . $file );
-					if ( $plugins_subdir ) {
-						while (($subfile = readdir( $plugins_subdir ) ) !== false ) {
-							if ( substr($subfile, 0, 1) == '.' )
-								continue;
-							$plugin_files[] = plugin_basename("$dir/$file/$subfile");
-						}
-						@closedir( $plugins_subdir );
-					}
+					$subfiles = get_plugin_sub_files( $dir . '/' . $file );
+					$plugin_files = array_merge( $plugin_files, $subfiles );
 				} else {
-					if ( plugin_basename("$dir/$file") != $plugin )
-						$plugin_files[] = plugin_basename("$dir/$file");
+					if ( plugin_basename( "$dir/$file" ) != $plugin )
+						$plugin_files[] = plugin_basename( "$dir/$file" );
 				}
 			}
-			@closedir( $plugins_dir );
+			@ closedir( $plugins_dir );
 		}
 	}
+	return $plugin_files;
+}
 
+function get_plugin_sub_files( $subdir ) {
+	$plugins_subdir = @ opendir( $subdir );
+	if ( $plugins_subdir ) {
+		$plugin_files = array();
+		while ( ( $subfile = readdir( $plugins_subdir ) ) !== false ) {
+			if ( substr( $subfile, 0, 1 ) == '.' )
+				continue;
+			if ( is_dir( $subdir  . '/' . $subfile ) ) {
+				$subfiles = get_plugin_sub_files( $subdir . '/' . $subfile );
+				$plugin_files = array_merge( $plugin_files, $subfiles );
+			} else {
+				$plugin_files[] = plugin_basename( "$subdir/$subfile" );	
+			}
+		}
+		@ closedir( $plugins_subdir );
+	}
 	return $plugin_files;
 }
 
Index: wp-admin/theme-editor.php
===================================================================
--- wp-admin/theme-editor.php	(revision 27045)
+++ wp-admin/theme-editor.php	(working copy)
@@ -176,15 +176,21 @@
 	endif;
 
 	foreach ( $allowed_files as $filename => $absolute_filename ) :
-		if ( 'style.css' == $filename )
+		if ( 'style.css' == $filename ) {
 			echo "\t</ul>\n\t<h3>" . _x( 'Styles', 'Theme stylesheets in theme editor' ) . "</h3>\n\t<ul>\n";
+		}
 
+		$relative_file = explode( $theme->offsetGet( 'Template' ) . '/', $absolute_filename );
+		$relative_file = $relative_file[1];
+
 		$file_description = get_file_description( $absolute_filename );
-		if ( $file_description != basename( $filename ) )
-			$file_description .= '<br /><span class="nonessential">(' . $filename . ')</span>';
 
-		if ( $absolute_filename == $file )
+		if ( $file_description != $relative_file ) {
+			$file_description .= '<br /><span class="nonessential">(' . $relative_file . ')</span>';
+		}
+		if ( $absolute_filename == $file ) {
 			$file_description = '<span class="highlight">' . $file_description . '</span>';
+		}
 ?>
 		<li><a href="theme-editor.php?file=<?php echo urlencode( $filename ) ?>&amp;theme=<?php echo urlencode( $stylesheet ) ?>"><?php echo $file_description; ?></a></li>
 <?php
