// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "listctrl.h"
- #pragma implementation "listctrlbase.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
-#if wxUSE_LISTCTRL && defined(__WIN95__)
+#if wxUSE_LISTCTRL
#ifndef WX_PRECOMP
#include "wx/app.h"
}
// init with conversion
- void Init(LV_ITEM_OTHER& item)
+ void Init(const LV_ITEM_OTHER& item)
{
// avoid unnecessary dynamic memory allocation, jjust make m_pItem
// point to our own m_item
// 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;
}
// Sets information about this column
-bool wxListCtrl::SetColumn(int col, wxListItem& item)
+bool wxListCtrl::SetColumn(int col, const wxListItem& item)
{
LV_COLUMN lvCol;
wxConvertToMSWListCol(col, item, lvCol);
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);
};
};
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)
// Inserts an item, returning the index of the new item if successful,
// -1 otherwise.
-long wxListCtrl::InsertItem(wxListItem& info)
+long wxListCtrl::InsertItem(const wxListItem& info)
{
wxASSERT_MSG( !IsVirtual(), _T("can't be used with virtual controls") );
}
// For list view mode (only), inserts a column.
-long wxListCtrl::InsertColumn(long col, wxListItem& item)
+long wxListCtrl::InsertColumn(long col, const wxListItem& item)
{
LV_COLUMN lvCol;
wxConvertToMSWListCol(col, item, lvCol);
return internalData->user_fn(d1, d2, internalData->data);
-};
+}
bool wxListCtrl::SortItems(wxListCtrlCompare fn, long data)
{
#ifdef NM_CUSTOMDRAW
if ( lvi.mask & LVIF_IMAGE )
{
- lvi.iImage = OnGetItemImage(item);
+ lvi.iImage = OnGetItemColumnImage(item, lvi.iSubItem);
}
#endif // NM_CUSTOMDRAW
{
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;
}
return NULL;
return (wxListItemInternalData *) it.lParam;
-};
+}
static
wxListItemInternalData *wxGetInternalData(const wxListCtrl *ctl, long itemId)
{
return wxGetInternalData(GetHwndOf(ctl), itemId);
-};
+}
static wxListItemAttr *wxGetInternalDataAttr(wxListCtrl *ctl, long itemId)
{
wxListItemInternalData *data = wxGetInternalData(ctl, itemId);
return data ? data->attr : NULL;
-};
+}
static void wxDeleteInternalData(wxListCtrl* ctl, long itemId)
{
// 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;
}
}
#endif // wxUSE_LISTCTRL
-