|  | @@ -74,6 +74,9 @@ class LocateRootNode(ioex.selector.Node):
 | 
	
		
			
				|  |  |      def get_common_prefix_display_height(self):
 | 
	
		
			
				|  |  |          return self._common_prefix_display_height
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    def showing_common_prefix(self):
 | 
	
		
			
				|  |  | +        return self._common_prefix_display_height > 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def get_header_height(self):
 | 
	
		
			
				|  |  |          return self.get_patterns_height() + self.get_common_prefix_display_height()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -138,18 +141,30 @@ class LocateRootNode(ioex.selector.Node):
 | 
	
		
			
				|  |  |              self._window.refresh()
 | 
	
		
			
				|  |  |          else:
 | 
	
		
			
				|  |  |              for path in paths:
 | 
	
		
			
				|  |  | -                self._append_child(ioex.selector.StaticNode(path))
 | 
	
		
			
				|  |  | +                self._append_child(LocatePathNode(path))
 | 
	
		
			
				|  |  |              self.common_prefix = os.path.dirname(os.path.commonprefix(paths))
 | 
	
		
			
				|  |  |              self.show_common_prefix()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +class LocatePathNode(ioex.selector.Node):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def __init__(self, path):
 | 
	
		
			
				|  |  | +        super(LocatePathNode, self).__init__()
 | 
	
		
			
				|  |  | +        self.path = path
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def get_label(self):
 | 
	
		
			
				|  |  | +        if self.get_parent().showing_common_prefix():
 | 
	
		
			
				|  |  | +            return self.path[len(self.get_parent().common_prefix) + 1:]
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            return self.path
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  def locate_select(
 | 
	
		
			
				|  |  | -        stdscr, 
 | 
	
		
			
				|  |  | -        patterns = [], 
 | 
	
		
			
				|  |  | -        match_all = False, 
 | 
	
		
			
				|  |  | -        ignore_case = False, 
 | 
	
		
			
				|  |  | -        update_database = False, 
 | 
	
		
			
				|  |  | -        multiple = False, 
 | 
	
		
			
				|  |  | -        database_path = None, 
 | 
	
		
			
				|  |  | +        stdscr,
 | 
	
		
			
				|  |  | +        patterns = [],
 | 
	
		
			
				|  |  | +        match_all = False,
 | 
	
		
			
				|  |  | +        ignore_case = False,
 | 
	
		
			
				|  |  | +        update_database = False,
 | 
	
		
			
				|  |  | +        multiple = False,
 | 
	
		
			
				|  |  | +        database_path = None,
 | 
	
		
			
				|  |  |          update_require_visibility = None
 | 
	
		
			
				|  |  |          ):
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -174,4 +189,4 @@ def locate_select(
 | 
	
		
			
				|  |  |      if selection is None:
 | 
	
		
			
				|  |  |          return None
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  | -        return [n.get_label() for n in selection]
 | 
	
		
			
				|  |  | +        return [n.path for n in selection]
 |