X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8ecd5de22748b434c085a3c2af8a57fc95607231..6f02a879ed7efc5fcf6328ff47a1352ec82812b7:/src/msw/listctrl.cpp?ds=sidebyside diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 5a8c4e3363..9721b54651 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" @@ -371,7 +371,7 @@ bool wxListCtrl::Create(wxWindow *parent, 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; @@ -788,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); }; }; @@ -2250,7 +2253,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) #ifdef NM_CUSTOMDRAW if ( lvi.mask & LVIF_IMAGE ) { - lvi.iImage = OnGetItemImage(item); + lvi.iImage = OnGetItemColumnImage(item, lvi.iSubItem); } #endif // NM_CUSTOMDRAW @@ -2516,7 +2519,15 @@ int wxListCtrl::OnGetItemImage(long WXUNUSED(item)) const { wxCHECK_MSG(!GetImageList(wxIMAGE_LIST_SMALL), -1, - wxT("List control has an image list, OnGetItemImage should be overridden.")); + wxT("List control has an image list, OnGetItemImage or OnGetItemColumnImage should be overridden.")); + return -1; +} + +int wxListCtrl::OnGetItemColumnImage(long item, long column) const +{ + if (!column) + return OnGetItemImage(item); + return -1; }