X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/50c375d311ac4cefbf1ae1d11e19c9e7c00a873e..40779a03e7745fede941ac1a55eb26c062dfa086:/src/msw/listbox.cpp diff --git a/src/msw/listbox.cpp b/src/msw/listbox.cpp index 7220cf5ef1..6e786a20fc 100644 --- a/src/msw/listbox.cpp +++ b/src/msw/listbox.cpp @@ -50,7 +50,7 @@ #ifndef __TWIN32__ #if defined(__GNUWIN32__) #ifndef wxUSE_NORLANDER_HEADERS - #include + #include "wx/msw/gnuwin32/extra.h" #endif #endif #endif @@ -230,7 +230,7 @@ bool wxListBox::Create(wxWindow *parent, wxListBox::~wxListBox() { -// Free(); + Free(); } void wxListBox::SetupColours() @@ -256,15 +256,15 @@ void wxListBox::Delete(int N) wxCHECK_RET( N >= 0 && N < m_noItems, wxT("invalid index in wxListBox::Delete") ); -#if wxUSE_OWNER_DRAWN - delete m_aItems[N]; - m_aItems.Remove(N); -#else // !wxUSE_OWNER_DRAWN - if ( HasClientObjectData() ) - { - delete GetClientObject(N); - } -#endif // wxUSE_OWNER_DRAWN/!wxUSE_OWNER_DRAWN + // for owner drawn objects, the data is used for storing wxOwnerDrawn + // pointers and we shouldn't touch it +#if !wxUSE_OWNER_DRAWN + if ( !(m_windowStyle & wxLB_OWNERDRAW) ) +#endif // !wxUSE_OWNER_DRAWN + if ( HasClientObjectData() ) + { + delete GetClientObject(N); + } SendMessage(GetHwnd(), LB_DELETESTRING, N, 0); m_noItems--; @@ -348,7 +348,7 @@ int wxListBox::FindString(const wxString& s) const void wxListBox::Clear() { -// Free(); + Free(); ListBox_ResetContent(GetHwnd()); @@ -356,7 +356,6 @@ void wxListBox::Clear() SetHorizontalExtent(); } -/* void wxListBox::Free() { #if wxUSE_OWNER_DRAWN @@ -379,7 +378,7 @@ void wxListBox::Free() } } } -*/ + void wxListBox::SetSelection(int N, bool select) { wxCHECK_RET( N >= 0 && N < m_noItems, @@ -748,13 +747,19 @@ bool wxListBox::MSWOnMeasure(WXMEASUREITEMSTRUCT *item) MEASUREITEMSTRUCT *pStruct = (MEASUREITEMSTRUCT *)item; + HDC hdc = CreateIC(wxT("DISPLAY"), NULL, NULL, 0); + wxDC dc; - dc.SetHDC((WXHDC)CreateIC(wxT("DISPLAY"), NULL, NULL, 0)); + dc.SetHDC((WXHDC)hdc); dc.SetFont(wxSystemSettings::GetSystemFont(wxSYS_ANSI_VAR_FONT)); pStruct->itemHeight = dc.GetCharHeight() + 2*OWNER_DRAWN_LISTBOX_EXTRA_SPACE; pStruct->itemWidth = dc.GetCharWidth(); + dc.SetHDC(0); + + DeleteDC(hdc); + return TRUE; }