X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6149de710aad76cb871473b7386b98d3ee5f33c1..e2450fa9b43028abdc42accf3f5ba2b23106e546:/src/msw/listctrl.cpp diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index ecc6895b54..b57021fd00 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -110,7 +110,12 @@ private: m_item = new LV_ITEM((LV_ITEM&)item); if ( (item.mask & LVIF_TEXT) && item.pszText ) { +#ifdef __WXWINE__ + // FIXME + m_buf = new wxWC2WXbuf(wxConvLocal.cWC2WX((const __wchar_t* ) item.pszText)); +#else m_buf = new wxWC2WXbuf(wxConvLocal.cWC2WX(item.pszText)); +#endif m_item->pszText = (wxChar*)m_buf->data(); } else @@ -579,6 +584,8 @@ bool wxListCtrl::GetColumn(int col, wxListItem& item) const LV_COLUMN lvCol; wxZeroMemory(lvCol); + lvCol.mask = LVCF_WIDTH; + if ( item.m_mask & wxLIST_MASK_TEXT ) { lvCol.mask |= LVCF_TEXT; @@ -586,7 +593,17 @@ bool wxListCtrl::GetColumn(int col, wxListItem& item) const lvCol.cchTextMax = 512; } - bool success = ListView_GetColumn(GetHwnd(), col, & lvCol) != 0; + if ( item.m_mask & wxLIST_MASK_FORMAT ) + { + lvCol.mask |= LVCF_FMT; + } + + if ( item.m_mask & wxLIST_MASK_IMAGE ) + { + lvCol.mask |= LVCF_IMAGE; + } + + bool success = ListView_GetColumn(GetHwnd(), col, &lvCol) != 0; // item.m_subItem = lvCol.iSubItem; item.m_width = lvCol.cx; @@ -599,13 +616,28 @@ bool wxListCtrl::GetColumn(int col, wxListItem& item) const if ( item.m_mask & wxLIST_MASK_FORMAT ) { - if (lvCol.fmt == LVCFMT_LEFT) - item.m_format = wxLIST_FORMAT_LEFT; - else if (lvCol.fmt == LVCFMT_RIGHT) - item.m_format = wxLIST_FORMAT_RIGHT; - else if (lvCol.fmt == LVCFMT_CENTER) - item.m_format = wxLIST_FORMAT_CENTRE; + switch (lvCol.fmt & LVCFMT_JUSTIFYMASK) { + case LVCFMT_LEFT: + item.m_format = wxLIST_FORMAT_LEFT; + break; + case LVCFMT_RIGHT: + item.m_format = wxLIST_FORMAT_RIGHT; + break; + case LVCFMT_CENTER: + item.m_format = wxLIST_FORMAT_CENTRE; + break; + default: + item.m_format = -1; // Unknown? + break; + } + } + +#if _WIN32_IE >= 0x0300 + if ( item.m_mask & wxLIST_MASK_IMAGE ) + { + item.m_image = lvCol.iImage; } +#endif return success; } @@ -943,11 +975,7 @@ bool wxListCtrl::GetItemRect(long item, wxRect& rect, int code) const codeWin = LVIR_BOUNDS; } -#ifdef __WXWINE__ - bool success = ListView_GetItemRect(GetHwnd(), (int) item, &rectWin ) != 0; -#else bool success = ListView_GetItemRect(GetHwnd(), (int) item, &rectWin, codeWin) != 0; -#endif rect.x = rectWin.left; rect.y = rectWin.top; @@ -1294,14 +1322,22 @@ long wxListCtrl::FindItem(long start, const wxString& str, bool partial) // Find an item whose data matches this data, starting from the item after 'start' // or the beginning if 'start' is -1. +// NOTE : Lindsay Mathieson - 14-July-2002 +// No longer use ListView_FindItem as the data attribute is now stored +// in a wxListItemInternalData structure refernced by the actual lParam long wxListCtrl::FindItem(long start, long data) { - LV_FINDINFO findInfo; + long idx = start + 1; + long count = GetItemCount(); - findInfo.flags = LVFI_PARAM; - findInfo.lParam = data; + while (idx < count) + { + if (GetItemData(idx) == data) + return idx; + idx++; + }; - return ListView_FindItem(GetHwnd(), (int) start, & findInfo); + return -1; } // Find an item nearest this position in the specified direction, starting from