|  | @@ -138,7 +138,7 @@ static ESortBy getSortBySelectionScreen(ESelectionScreen Type)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  SelectionTab::SelectionTab(ESelectionScreen Type)
 | 
	
		
			
				|  |  | -	: CIntObject(LCLICK | SHOW_POPUP | KEYBOARD | DOUBLECLICK), callOnSelect(nullptr), tabType(Type), selectionPos(0), sortModeAscending(true), inputNameRect{32, 539, 350, 20}, curFolder("")
 | 
	
		
			
				|  |  | +	: CIntObject(LCLICK | SHOW_POPUP | KEYBOARD | DOUBLECLICK), callOnSelect(nullptr), tabType(Type), selectionPos(0), sortModeAscending(true), inputNameRect{32, 539, 350, 20}, curFolder(""), curFilterSize(0)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	OBJ_CONSTRUCTION;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -391,6 +391,10 @@ std::tuple<std::string, std::string, bool, bool> SelectionTab::checkSubfolder(st
 | 
	
		
			
				|  |  |  // selMaps with the relevant data.
 | 
	
		
			
				|  |  |  void SelectionTab::filter(int size, bool selectFirst)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +	if(size == -1)
 | 
	
		
			
				|  |  | +		size = curFilterSize;
 | 
	
		
			
				|  |  | +	curFilterSize = size;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	curItems.clear();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	for(auto elem : allItems)
 | 
	
	
		
			
				|  | @@ -428,13 +432,19 @@ void SelectionTab::filter(int size, bool selectFirst)
 | 
	
		
			
				|  |  |  		sort();
 | 
	
		
			
				|  |  |  		if(selectFirst)
 | 
	
		
			
				|  |  |  		{
 | 
	
		
			
				|  |  | -			slider->scrollTo(0);
 | 
	
		
			
				|  |  | -			callOnSelect(curItems[0]);
 | 
	
		
			
				|  |  | -			selectAbs(-1);
 | 
	
		
			
				|  |  | +			int firstPos = boost::range::find_if(curItems, [](std::shared_ptr<ElementInfo> e) { return !e->isFolder; }) - curItems.begin();
 | 
	
		
			
				|  |  | +			if(firstPos < curItems.size())
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +				slider->scrollTo(firstPos);
 | 
	
		
			
				|  |  | +				callOnSelect(curItems[firstPos]);
 | 
	
		
			
				|  |  | +				selectAbs(firstPos);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	else
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | +		updateListItems();
 | 
	
		
			
				|  |  | +		redraw();
 | 
	
		
			
				|  |  |  		slider->block(true);
 | 
	
		
			
				|  |  |  		if(callOnSelect)
 | 
	
		
			
				|  |  |  			callOnSelect(nullptr);
 | 
	
	
		
			
				|  | @@ -499,9 +509,9 @@ void SelectionTab::select(int position)
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		else
 | 
	
		
			
				|  |  |  			curFolder += curItems[py]->folderName + "/";
 | 
	
		
			
				|  |  | -		filter(0);
 | 
	
		
			
				|  |  | +		filter(-1);
 | 
	
		
			
				|  |  |  		slider->scrollTo(0);
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		return;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -602,7 +612,7 @@ void SelectionTab::selectFileName(std::string fname)
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	filter(0);
 | 
	
		
			
				|  |  | +	filter(-1);
 | 
	
		
			
				|  |  |  	selectAbs(-1);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |