# File lib/vimmatelib/files_window.rb, line 270
    def filter=(filter)
      if filter.empty?
        clear_filter
        return
      end
      @filter_string = filter
      
      # Filter tree view so only directories and separators with matching
      # elements are set visible
      visible_path = Hash.new(false)
      
      @gtk_tree_store.each do |model,path,iter|
        if iter[NAME] and iter[TYPE] == TYPE_FILE
          if iter[VISIBLE] = iter[NAME].index(@filter_string)
            begin
              visible_path[path.to_s] = true
            end while path.up!
          end
        else
          iter[VISIBLE] = true
          if iter[TYPE] == TYPE_SEPARATOR
            visible_path[path.to_s] = true
          end
        end
      end

      @gtk_tree_store.each do |model,path,iter|
        if not visible_path[path.to_s]
          iter[VISIBLE] = false
          if iter[TYPE] == TYPE_DIRECTORY and Config[:file_directory_separator]
            if iter.next!
              iter[VISIBLE] = false
            end
          end
        end
      end

      @gtk_filtered_tree_model.refilter
      @gtk_tree_view.expand_all if Config[:files_auto_expand_on_filter]
    end