#include "wx/ownerdrw.h"
#endif
-#ifdef __GNUWIN32_OLD__
- #include "wx/msw/gnuwin32/extra.h"
-#endif
-
#if wxUSE_EXTENDED_RTTI
WX_DEFINE_FLAGS( wxListBoxStyle )
m_noItems--;
SetHorizontalExtent(wxEmptyString);
+
+ InvalidateBestSize();
}
int wxListBox::DoAppend(const wxString& item)
{
- InvalidateBestSize();
-
int index = ListBox_AddString(GetHwnd(), item);
m_noItems++;
SetHorizontalExtent(item);
+ InvalidateBestSize();
return index;
}
// show the listbox back if we hid it
ShowWindow(GetHwnd(), SW_SHOW);
}
+
+ InvalidateBestSize();
}
int wxListBox::FindString(const wxString& s) const
m_noItems = 0;
SetHorizontalExtent();
+
+ InvalidateBestSize();
}
void wxListBox::Free()
wxCHECK_RET( pos >= 0 && pos <= m_noItems,
wxT("invalid index in wxListBox::InsertItems") );
- InvalidateBestSize();
-
int nItems = items.GetCount();
for ( int i = 0; i < nItems; i++ )
{
m_noItems += nItems;
SetHorizontalExtent();
+
+ InvalidateBestSize();
}
void wxListBox::SetString(int N, const wxString& s)
// we may have lost the selection
if ( wasSelected )
Select(N);
+
+ InvalidateBestSize();
}
int wxListBox::GetCount() const
GetTextMetrics(dc, &lpTextMetric);
SIZE extentXY;
- ::GetTextExtentPoint(dc, (LPTSTR) (const wxChar *)s, s.Length(), &extentXY);
+ ::GetTextExtentPoint32(dc, (LPTSTR) (const wxChar *)s, s.Length(), &extentXY);
int extentX = (int)(extentXY.cx + lpTextMetric.tmAveCharWidth);
if (oldFont)
{
wxString str = GetString(i);
SIZE extentXY;
- ::GetTextExtentPoint(dc, str.c_str(), str.length(), &extentXY);
+ ::GetTextExtentPoint32(dc, str.c_str(), str.length(), &extentXY);
int extentX = (int)(extentXY.cx + lpTextMetric.tmAveCharWidth);
if (extentX > largestExtent)
largestExtent = extentX;
wListbox += 3*cx;
+ // Add room for the scrollbar
+ wListbox += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
+
// don't make the listbox too tall (limit height to 10 items) but don't
// make it too small neither
int hListbox = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)*
wxMin(wxMax(m_noItems, 3), 10);
- return wxSize(wListbox, hListbox);
+ wxSize best(wListbox, hListbox);
+ CacheBestSize(best);
+ return best;
}
// ----------------------------------------------------------------------------