void SetImage( int image ) { SetImage(0, image); }
int GetImage() const { return GetImage(0); }
+ void SetImage( int index, int image );
+ int GetImage( int index ) const;
+
bool HasImage() const { return GetImage() != -1; }
bool HasText() const { return !GetText(0).empty(); }
// draw the text on the DC with the correct justification; also add an
// ellipsis if the text is too large to fit in the current width
void DrawTextFormatted(wxDC *dc, const wxString &text, int col, int x, int y, int width);
-
- // these are only used by GetImage/SetImage above, we don't support images
- // with subitems at the public API level yet
- void SetImage( int index, int image );
- int GetImage( int index ) const;
};
WX_DECLARE_EXPORTED_OBJARRAY(wxListLineData, wxListLineDataArray);
virtual ~wxListMainWindow();
- wxWindow *GetMainWindowOfCompositeControl() { return GetParent(); }
-
bool HasFlag(int flag) const { return m_parent->HasFlag(flag); }
// return true if this is a virtual list control
wxListTextCtrl* m_textctrl;
protected:
+ wxWindow *GetMainWindowOfCompositeControl() { return GetParent(); }
+
// the total count of items in a virtual list control
size_t m_countVirt;
PrepareDC( dc );
AdjustDC( dc );
- dc.BeginDrawing();
-
dc.SetFont( GetFont() );
// width and height of the entire header window
x += wCol;
}
-
- dc.EndDrawing();
}
void wxListHeaderWindow::DrawCurrent()
for ( size_t col = 0; col < countCol; col++ )
{
ld->SetText(col, listctrl->OnGetItemText(line, col));
+ ld->SetImage(col, listctrl->OnGetItemColumnImage(line, col));
}
- ld->SetImage(listctrl->OnGetItemImage(line));
ld->SetAttr(listctrl->OnGetItemAttr(line));
}
{
wxCHECK_RET( m_freezeCount > 0, _T("thawing unfrozen list control?") );
- if ( !--m_freezeCount )
+ if ( --m_freezeCount == 0 )
Refresh();
}
int dev_x, dev_y;
CalcScrolledPosition( 0, 0, &dev_x, &dev_y );
- dc.BeginDrawing();
-
dc.SetFont( GetFont() );
if ( InReportView() )
}
}
#endif
-
- dc.EndDrawing();
}
void wxListMainWindow::HighlightAll( bool on )
{
m_headerHeight = h;
- m_headerWin->SetSize(m_headerWin->GetSize().x, m_headerHeight);
-
if ( HasHeader() )
ResizeReportView(true);
+ else //why is this needed if it doesn't have a header?
+ m_headerWin->SetSize(m_headerWin->GetSize().x, m_headerHeight);
}
}
}
if ( showHeader )
{
m_headerWin->SetSize( 0, 0, cw, m_headerHeight );
- m_mainWin->SetSize( 0, m_headerHeight + 1, cw, ch - m_headerHeight - 1 );
+ if(ch > m_headerHeight)
+ m_mainWin->SetSize( 0, m_headerHeight + 1,
+ cw, ch - m_headerHeight - 1 );
+ else
+ m_mainWin->SetSize( 0, m_headerHeight + 1,
+ cw, 0);
}
else // no header window
{
{
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 wxGenericListCtrl::OnGetItemColumnImage(long item, long column) const
+{
+ if (!column)
+ return OnGetItemImage(item);
+
+ return -1;
+}
+
wxListItemAttr *
wxGenericListCtrl::OnGetItemAttr(long WXUNUSED_UNLESS_DEBUG(item)) const
{
rectHeader.Offset(-x, -y);
m_headerWin->Refresh(eraseBackground, &rectHeader);
}
-
}
// Refresh the main window