X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6932a32c2b1072879a7be05dae5308f79fe4bd80..3d1b41968fcc7b49610de3c8ce81040b3a3096a8:/src/msw/listctrl.cpp diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 029cbe1b31..f747968d69 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -40,7 +40,7 @@ #include "wx/msw/private.h" -#if defined(__GNUWIN32__) && !defined(wxUSE_NORLANDER_HEADERS) +#ifdef __GNUWIN32_OLD__ #include "wx/msw/gnuwin32/extra.h" #else #include @@ -239,7 +239,7 @@ void wxListCtrl::UpdateStyle() } } -void wxListCtrl::FreeAllAttrs() +void wxListCtrl::FreeAllAttrs(bool dontRecreate) { if ( m_hasAnyAttr ) { @@ -249,6 +249,10 @@ void wxListCtrl::FreeAllAttrs() } m_attrs.Destroy(); + if ( !dontRecreate ) + { + m_attrs.Create(wxKEY_INTEGER, 1000); // just as def ctor + } m_hasAnyAttr = FALSE; } @@ -256,6 +260,8 @@ void wxListCtrl::FreeAllAttrs() wxListCtrl::~wxListCtrl() { + FreeAllAttrs(TRUE /* no need to recreate hash any more */); + if ( m_textCtrl ) { m_textCtrl->UnsubclassWin(); @@ -416,14 +422,28 @@ long wxListCtrl::ConvertToMSWStyle(long& oldStyle, long style) const // accessors // ---------------------------------------------------------------------------- -// Sets the background colour (GetBackgroundColour already implicit in -// wxWindow class) +// Sets the foreground, i.e. text, colour +bool wxListCtrl::SetForegroundColour(const wxColour& col) +{ + if ( !wxWindow::SetForegroundColour(col) ) + return FALSE; + + ListView_SetTextColor(GetHwnd(), wxColourToRGB(col)); + + return TRUE; +} + +// Sets the background colour bool wxListCtrl::SetBackgroundColour(const wxColour& col) { if ( !wxWindow::SetBackgroundColour(col) ) return FALSE; - ListView_SetBkColor(GetHwnd(), PALETTERGB(col.Red(), col.Green(), col.Blue())); + // we set the same colour for both the "empty" background and the items + // background + COLORREF color = wxColourToRGB(col); + ListView_SetBkColor(GetHwnd(), color); + ListView_SetTextBkColor(GetHwnd(), color); return TRUE; } @@ -534,13 +554,13 @@ bool wxListCtrl::SetColumnWidth(int col, int width) // visible area of the list control (list or report view) // or the total number of items in the list control (icon // or small icon view) -int wxListCtrl::GetCountPerPage(void) const +int wxListCtrl::GetCountPerPage() const { return ListView_GetCountPerPage(GetHwnd()); } // Gets the edit control for editing labels. -wxTextCtrl* wxListCtrl::GetEditControl(void) const +wxTextCtrl* wxListCtrl::GetEditControl() const { return m_textCtrl; } @@ -767,7 +787,7 @@ bool wxListCtrl::SetItemPosition(long item, const wxPoint& pos) } // Gets the number of items in the list control -int wxListCtrl::GetItemCount(void) const +int wxListCtrl::GetItemCount() const { return ListView_GetItemCount(GetHwnd()); } @@ -781,13 +801,13 @@ int wxListCtrl::GetItemSpacing(bool isSmall) const } // Gets the number of selected items in the list control -int wxListCtrl::GetSelectedItemCount(void) const +int wxListCtrl::GetSelectedItemCount() const { return ListView_GetSelectedCount(GetHwnd()); } // Gets the text colour of the listview -wxColour wxListCtrl::GetTextColour(void) const +wxColour wxListCtrl::GetTextColour() const { COLORREF ref = ListView_GetTextColor(GetHwnd()); wxColour col(GetRValue(ref), GetGValue(ref), GetBValue(ref)); @@ -802,7 +822,7 @@ void wxListCtrl::SetTextColour(const wxColour& col) // Gets the index of the topmost visible item when in // list or report view -long wxListCtrl::GetTopItem(void) const +long wxListCtrl::GetTopItem() const { return (long) ListView_GetTopIndex(GetHwnd()); }