FIX: crash in page down and home of a listbox with categories, trying to create an item_proxy {cat, npos} and select it
This commit is contained in:
		
							parent
							
								
									d4d1a79af8
								
							
						
					
					
						commit
						7863dcdba6
					
				@ -3378,21 +3378,35 @@ namespace nana
 | 
			
		||||
                        if (! scrl.make_page_scroll(!up)) 
 | 
			
		||||
                            return;
 | 
			
		||||
                        essence_->lister.select_for_all(false);
 | 
			
		||||
                        if (up)
 | 
			
		||||
                            item_proxy {essence_, essence_->scroll_y_abs()}.select(true); 
 | 
			
		||||
                        else 
 | 
			
		||||
                        {
 | 
			
		||||
 | 
			
		||||
                        index_pair idx{essence_->scroll_y_dpl()};
 | 
			
		||||
                        if (!up)
 | 
			
		||||
                            essence_->lister.forward(idx, scrl.range()-1, idx);
 | 
			
		||||
 | 
			
		||||
                        if (idx.is_item())
 | 
			
		||||
                           item_proxy::from_display(essence_, idx).select(true);
 | 
			
		||||
                        }
 | 
			
		||||
                        else 
 | 
			
		||||
                            if(!essence_->lister.single_selection())
 | 
			
		||||
								essence_->lister.categ_selected(idx.cat, true);
 | 
			
		||||
 | 
			
		||||
                        essence_->trace_last_selected_item ();
 | 
			
		||||
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                    case keyboard::os_home:
 | 
			
		||||
                    {
 | 
			
		||||
                        essence_->lister.select_for_all(false);
 | 
			
		||||
                        item_proxy::from_display(essence_, {0,0}).select(true);
 | 
			
		||||
 | 
			
		||||
                        index_pair frst{essence_->lister.first()};
 | 
			
		||||
                        if (frst.is_item())
 | 
			
		||||
                           item_proxy::from_display(essence_, frst).select(true);
 | 
			
		||||
                        else 
 | 
			
		||||
                            if(!essence_->lister.single_selection())
 | 
			
		||||
								essence_->lister.categ_selected(frst.cat, true);
 | 
			
		||||
 | 
			
		||||
                        essence_->trace_last_selected_item ();
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                    case keyboard::os_end:
 | 
			
		||||
                        essence_->lister.select_for_all(false);
 | 
			
		||||
                        item_proxy::from_display(essence_, essence_->lister.last()).select(true);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user