X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ef8642862450ff846299b8e56d7b0cbce9d5f79d..9f8130d6b3012265895fd69ce394c443c045b709:/src/msw/listctrl.cpp diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index b24b99daf0..cbedea6f73 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -24,7 +24,7 @@ #pragma hdrstop #endif -#if wxUSE_LISTCTRL && defined(__WIN95__) +#if wxUSE_LISTCTRL #ifndef WX_PRECOMP #include "wx/app.h" @@ -362,12 +362,16 @@ bool wxListCtrl::Create(wxWindow *parent, // versions of _some_ messages (notably LVN_GETDISPINFOA) in MSLU build wxSetCCUnicodeFormat(GetHwnd()); + // We must set the default text colour to the system/theme color, otherwise + // GetTextColour will always return black + SetTextColour(GetDefaultAttributes().colFg); + // for comctl32.dll v 4.70+ we want to have some non default extended // styles because it's prettier (and also because wxGTK does it like this) if ( InReportView() && wxApp::GetComCtl32Version() >= 470 ) { ::SendMessage(GetHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE, - 0, LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT); + 0, LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES); } return true; @@ -784,12 +788,15 @@ bool wxListCtrl::SetItem(wxListItem& info) data->lParam = info.m_data; // attributes - if (info.HasAttributes()) + if ( info.HasAttributes() ) { - if (data->attr) - *data->attr = *info.GetAttributes(); + const wxListItemAttr& attrNew = *info.GetAttributes(); + + // don't overwrite the already set attributes if we have them + if ( data->attr ) + data->attr->AssignFrom(attrNew); else - data->attr = new wxListItemAttr(*info.GetAttributes()); + data->attr = new wxListItemAttr(attrNew); }; }; @@ -1115,9 +1122,9 @@ int wxListCtrl::GetSelectedItemCount() const // Gets the text colour of the listview wxColour wxListCtrl::GetTextColour() const { - // Use GetDefaultAttributes instead of ListView_GetTextColor because - // the latter seems to return black all the time (instead of the theme color) - return GetDefaultAttributes().colFg; + COLORREF ref = ListView_GetTextColor(GetHwnd()); + wxColour col(GetRValue(ref), GetGValue(ref), GetBValue(ref)); + return col; } // Sets the text colour of the listview @@ -1210,7 +1217,7 @@ void wxListCtrl::SetImageList(wxImageList *imageList, int which) m_imageListState = imageList; m_ownsImageListState = false; } - ListView_SetImageList(GetHwnd(), (HIMAGELIST) imageList ? imageList->GetHIMAGELIST() : 0, flags); + (void) ListView_SetImageList(GetHwnd(), (HIMAGELIST) imageList ? imageList->GetHIMAGELIST() : 0, flags); } void wxListCtrl::AssignImageList(wxImageList *imageList, int which) @@ -2762,7 +2769,7 @@ static void wxConvertToMSWListItem(const wxListCtrl *ctrl, // pszText is not const, hence the cast lvItem.pszText = (wxChar *)info.m_text.c_str(); if ( lvItem.pszText ) - lvItem.cchTextMax = info.m_text.Length(); + lvItem.cchTextMax = info.m_text.length(); else lvItem.cchTextMax = 0; } @@ -2831,4 +2838,3 @@ static void wxConvertToMSWListCol(int WXUNUSED(col), const wxListItem& item, } #endif // wxUSE_LISTCTRL -