Commits

Philipp Lohmann [pl]  committed 26232ec

vcl115: #i113987# fix SetSelectEntry before visible for entry counts > 100, fix positioning on resize

  • Participants
  • Parent commits d93f4b2

Comments (0)

Files changed (1)

File vcl/source/control/ilstbox.cxx

 
 IMPL_LINK( ImplListBox, LBWindowScrolled, void*, EMPTYARG )
 {
+    long nSet = GetTopEntry();
+    if( nSet > mpVScrollBar->GetRangeMax() )
+        mpVScrollBar->SetRangeMax( GetEntryList()->GetEntryCount() );
 	mpVScrollBar->SetThumbPos( GetTopEntry() );
+	
 	mpHScrollBar->SetThumbPos( GetLeftIndent() );
 
 	maScrollHdl.Call( this );
 		mbVScroll = TRUE;
 
 		// Ueberpruefung des rausgescrollten Bereichs
-		SetTopEntry( GetTopEntry() );	// MaxTop wird geprueft...
+        if( GetEntryList()->GetSelectEntryCount() == 1 &&
+            GetEntryList()->GetSelectEntryPos( 0 ) != LISTBOX_ENTRY_NOTFOUND )
+		    ShowProminentEntry( GetEntryList()->GetSelectEntryPos( 0 ) );
+		else
+		    SetTopEntry( GetTopEntry() );	// MaxTop wird geprueft...
 	}
 	else
 	{
 					mbVScroll = TRUE;
 
 					// Ueberpruefung des rausgescrollten Bereichs
-					SetTopEntry( GetTopEntry() );	// MaxTop wird geprueft...
+                    if( GetEntryList()->GetSelectEntryCount() == 1 &&
+                        GetEntryList()->GetSelectEntryPos( 0 ) != LISTBOX_ENTRY_NOTFOUND )
+                        ShowProminentEntry( GetEntryList()->GetSelectEntryPos( 0 ) );
+                    else
+                        SetTopEntry( GetTopEntry() );	// MaxTop wird geprueft...
 				}
 			}