X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce0e1aacbc0d79a06a570d598327dff1cfe38fb9..6945b5878c8d46a56f1a59f558837a0943492f3c:/src/msw/listbox.cpp diff --git a/src/msw/listbox.cpp b/src/msw/listbox.cpp index c799cf3479..7abbf18e2b 100644 --- a/src/msw/listbox.cpp +++ b/src/msw/listbox.cpp @@ -9,10 +9,6 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "listbox.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -352,9 +348,13 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData) InvalidateBestSize(); } -int wxListBox::FindString(const wxString& s) const +int wxListBox::FindString(const wxString& s, bool bCase) const { - int pos = ListBox_FindStringExact(GetHwnd(), (WPARAM)-1, s); + // back to base class search for not native search type + if (bCase) + return wxItemContainerImmutable::FindString( s, bCase ); + + int pos = ListBox_FindStringExact(GetHwnd(), -1, s); if (pos == LB_ERR) return wxNOT_FOUND; else @@ -552,6 +552,16 @@ wxListBox::DoInsertItems(const wxArrayString& items, int pos) InvalidateBestSize(); } +int wxListBox::DoListHitTest(const wxPoint& point) const +{ + LRESULT lRes = ::SendMessage(GetHwnd(), LB_ITEMFROMPOINT, + 0L, MAKELONG(point.x, point.y)); + + // non zero high-order word means that this item is outside of the client + // area, IOW the point is outside of the listbox + return HIWORD(lRes) ? wxNOT_FOUND : lRes; +} + void wxListBox::SetString(int N, const wxString& s) { wxCHECK_RET( N >= 0 && N < m_noItems, @@ -776,16 +786,19 @@ bool wxListBox::MSWOnMeasure(WXMEASUREITEMSTRUCT *item) HDC hdc = CreateIC(wxT("DISPLAY"), NULL, NULL, 0); #endif - wxDC dc; - dc.SetHDC((WXHDC)hdc); - dc.SetFont(GetFont()); - - pStruct->itemHeight = dc.GetCharHeight() + 2*OWNER_DRAWN_LISTBOX_EXTRA_SPACE; - pStruct->itemWidth = dc.GetCharWidth(); + { + wxDCTemp dc((WXHDC)hdc); + dc.SetFont(GetFont()); - dc.SetHDC(0); + pStruct->itemHeight = dc.GetCharHeight() + 2*OWNER_DRAWN_LISTBOX_EXTRA_SPACE; + pStruct->itemWidth = dc.GetCharWidth(); + } +#ifdef __WXWINCE__ + ReleaseDC(NULL, hdc); +#else DeleteDC(hdc); +#endif return true; }