always update the column icon field when updating the item as it could be reset to nothing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -168,44 +168,47 @@ void wxHeaderCtrl::DoSetOrInsertItem(Operation oper, unsigned int idx)
|
|||||||
|
|
||||||
// notice that we need to store the string we use the pointer to until we
|
// notice that we need to store the string we use the pointer to until we
|
||||||
// pass it to the control
|
// pass it to the control
|
||||||
wxWxCharBuffer buf;
|
hdi.mask |= HDI_TEXT;
|
||||||
if ( !col.GetTitle().empty() )
|
wxWxCharBuffer buf = col.GetTitle().wx_str();
|
||||||
{
|
hdi.pszText = buf.data();
|
||||||
hdi.mask |= HDI_TEXT;
|
hdi.cchTextMax = wxStrlen(buf);
|
||||||
|
|
||||||
buf = col.GetTitle().wx_str();
|
|
||||||
hdi.pszText = buf.data();
|
|
||||||
hdi.cchTextMax = wxStrlen(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
const wxBitmap bmp = col.GetBitmap();
|
const wxBitmap bmp = col.GetBitmap();
|
||||||
if ( bmp.IsOk() )
|
if ( bmp.IsOk() || oper == Set )
|
||||||
{
|
{
|
||||||
const int bmpWidth = bmp.GetWidth(),
|
|
||||||
bmpHeight = bmp.GetHeight();
|
|
||||||
|
|
||||||
if ( !m_imageList )
|
|
||||||
{
|
|
||||||
m_imageList = new wxImageList(bmpWidth, bmpHeight);
|
|
||||||
Header_SetImageList(GetHwnd(), GetHimagelistOf(m_imageList));
|
|
||||||
}
|
|
||||||
else // already have an image list
|
|
||||||
{
|
|
||||||
// check that all bitmaps we use have the same size
|
|
||||||
int imageWidth,
|
|
||||||
imageHeight;
|
|
||||||
m_imageList->GetSize(0, imageWidth, imageHeight);
|
|
||||||
|
|
||||||
wxASSERT_MSG( imageWidth == bmpWidth && imageHeight == bmpHeight,
|
|
||||||
"all column bitmaps must have the same size" );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_imageList->Add(bmp);
|
|
||||||
hdi.mask |= HDI_IMAGE;
|
hdi.mask |= HDI_IMAGE;
|
||||||
hdi.iImage = m_imageList->GetImageCount() - 1;
|
|
||||||
|
if ( bmp.IsOk() )
|
||||||
|
{
|
||||||
|
const int bmpWidth = bmp.GetWidth(),
|
||||||
|
bmpHeight = bmp.GetHeight();
|
||||||
|
|
||||||
|
if ( !m_imageList )
|
||||||
|
{
|
||||||
|
m_imageList = new wxImageList(bmpWidth, bmpHeight);
|
||||||
|
Header_SetImageList(GetHwnd(), GetHimagelistOf(m_imageList));
|
||||||
|
}
|
||||||
|
else // already have an image list
|
||||||
|
{
|
||||||
|
// check that all bitmaps we use have the same size
|
||||||
|
int imageWidth,
|
||||||
|
imageHeight;
|
||||||
|
m_imageList->GetSize(0, imageWidth, imageHeight);
|
||||||
|
|
||||||
|
wxASSERT_MSG( imageWidth == bmpWidth && imageHeight == bmpHeight,
|
||||||
|
"all column bitmaps must have the same size" );
|
||||||
|
}
|
||||||
|
|
||||||
|
m_imageList->Add(bmp);
|
||||||
|
hdi.iImage = m_imageList->GetImageCount() - 1;
|
||||||
|
}
|
||||||
|
else // no bitmap but we still need to update the item
|
||||||
|
{
|
||||||
|
hdi.iImage = I_IMAGENONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( col.GetAlignment() != wxALIGN_NOT )
|
if ( col.GetAlignment() != wxALIGN_NOT || oper == Set )
|
||||||
{
|
{
|
||||||
hdi.mask |= HDI_FORMAT;
|
hdi.mask |= HDI_FORMAT;
|
||||||
switch ( col.GetAlignment() )
|
switch ( col.GetAlignment() )
|
||||||
|
Reference in New Issue
Block a user