FIX: select range of items with shift and mouse when list is ordered
This commit is contained in:
		
							parent
							
								
									835b3ce145
								
							
						
					
					
						commit
						bde6015d73
					
				@ -1181,6 +1181,21 @@ namespace nana
 | 
			
		||||
					if (to.is_item())
 | 
			
		||||
						item_proxy(ess_, to).select(sel);
 | 
			
		||||
				}
 | 
			
		||||
				void select_display_range(index_pair fr_abs, index_pair to_dpl, bool sel)
 | 
			
		||||
				{
 | 
			
		||||
					index_pair fr_dpl (fr_abs.cat, this->display_order(fr_abs.cat, fr_abs.item));
 | 
			
		||||
                    if (fr_dpl > to_dpl)
 | 
			
		||||
						std::swap(fr_dpl, to_dpl);
 | 
			
		||||
 | 
			
		||||
					for (; fr_dpl != to_dpl; forward(fr_dpl, 1, fr_dpl))
 | 
			
		||||
					{
 | 
			
		||||
						if (fr_dpl.is_item())
 | 
			
		||||
							item_proxy(ess_, index_pair(fr_dpl.cat, absolute( fr_dpl ) )).select(sel);
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					if (to_dpl.is_item())
 | 
			
		||||
						item_proxy(ess_, index_pair(to_dpl.cat, absolute( to_dpl ) )).select(sel);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				bool select_for_all(bool sel)
 | 
			
		||||
				{
 | 
			
		||||
@ -2926,7 +2941,7 @@ namespace nana
 | 
			
		||||
								if (!lister.single_selection())
 | 
			
		||||
								{
 | 
			
		||||
									if (arg.shift)
 | 
			
		||||
										lister.select_range(lister.last_selected, item_pos, sel);
 | 
			
		||||
										lister.select_display_range(lister.last_selected, item_pos, sel);
 | 
			
		||||
									else if (arg.ctrl)
 | 
			
		||||
										sel = !item_proxy(essence_, item_pos).selected();  
 | 
			
		||||
									else
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user