#include "wx/intl.h"
#include "wx/log.h"
#include "wx/settings.h"
+ #include "wx/dcclient.h"
#endif
#include "wx/textctrl.h"
#include "wx/imaglist.h"
#include "wx/listctrl.h"
-#include "wx/dcclient.h"
#include "wx/msw/private.h"
// Sets information about the item
bool wxListCtrl::SetItem(wxListItem& info)
{
+ const long id = info.GetId();
+ wxCHECK_MSG( id >= 0 && id < GetItemCount(), false,
+ _T("invalid item index in SetItem") );
+
LV_ITEM item;
wxConvertToMSWListItem(this, info, item);
{
// get internal item data
// perhaps a cache here ?
- wxListItemInternalData *data = wxGetInternalData(this, info.m_itemId);
+ wxListItemInternalData *data = wxGetInternalData(this, id);
if (! data)
{
return wxSize(LOWORD(spacing), HIWORD(spacing));
}
+#if WXWIN_COMPATIBILITY_2_6
+
int wxListCtrl::GetItemSpacing(bool isSmall) const
{
return ListView_GetItemSpacing(GetHwnd(), (BOOL) isSmall);
}
+#endif // WXWIN_COMPATIBILITY_2_6
+
void wxListCtrl::SetItemTextColour( long item, const wxColour &col )
{
wxListItem info;
// same thing for CDIS_FOCUS (except simpler as there is only one of them)
if ( ::GetFocus() == hwndList &&
- ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED) == item )
+ ListView_GetNextItem(hwndList, (WPARAM)-1, LVNI_FOCUSED) == item )
{
nmcd.uItemState |= CDIS_FOCUS;
}
WXLRESULT
wxListCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
-#ifdef WM_PRINT
- if ( nMsg == WM_PRINT )
+ switch ( nMsg )
{
- // we should bypass our own WM_PRINT handling as we don't handle
- // PRF_CHILDREN flag, so leave it to the native control itself
- return MSWDefWindowProc(nMsg, wParam, lParam);
- }
+#ifdef WM_PRINT
+ case WM_PRINT:
+ // we should bypass our own WM_PRINT handling as we don't handle
+ // PRF_CHILDREN flag, so leave it to the native control itself
+ return MSWDefWindowProc(nMsg, wParam, lParam);
#endif // WM_PRINT
+ case WM_CONTEXTMENU:
+ // because this message is propagated upwards the child-parent
+ // chain, we get it for the right clicks on the header window but
+ // this is confusing in wx as right clicking there already
+ // generates a separate wxEVT_COMMAND_LIST_COL_RIGHT_CLICK event
+ // so just ignore them
+ if ( (HWND)wParam == ListView_GetHeader(GetHwnd()) )
+ return 0;
+ //else: break
+ }
+
return wxControl::MSWWindowProc(nMsg, wParam, lParam);
}
#ifdef NM_CUSTOMDRAW // _WIN32_IE >= 0x0300
if ( item.m_mask & wxLIST_MASK_IMAGE )
{
- if ( wxTheApp->GetComCtl32Version() >= 470 )
+ if ( wxApp::GetComCtl32Version() >= 470 )
{
lvCol.mask |= LVCF_IMAGE;