Limit wxListBox best size to 100x100. Particularly important on trunk where

the best size is not cached and will thus keep telling the sizers that the
best size is the full size of the content (i.e. such that you wouldn't need
to scroll it).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51894 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott
2008-02-18 21:51:29 +00:00
parent 861b3043ca
commit c86ec17bcd
2 changed files with 15 additions and 0 deletions

View File

@@ -84,6 +84,7 @@ protected:
// Implementation
// ------------------------------------------------------------------------
public:
virtual wxSize DoGetBestSize() const;
// pure virtuals from wxListBoxBase
virtual bool IsSelected(int n) const;
virtual int GetSelections(wxArrayInt& aSelections) const;

View File

@@ -173,6 +173,20 @@ The listbox contents are sorted in alphabetical order.
return true;
}
wxSize wxListBox::DoGetBestSize() const
{
wxSize size = wxControlWithItems::DoGetBestSize();
// Limit best size to 100x100. It can be smaller if none of the items are very
// wide or if there aren't many items, but anything bigger than 100x100 ought
// to be asked for by the programmer. The 100x100 size is based on being barely
// enough for a scroller to be usable.
if(size.GetWidth() > 100)
size.SetWidth(100);
if(size.GetHeight() > 100)
size.SetHeight(100);
return size;
}
wxListBox::~wxListBox()
{
[GetNSTableView() setDataSource: nil];