Applied patch [ 803473 ] wxListCtrl header height bugfix

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart 2003-09-11 15:38:38 +00:00
parent a6b0ca7571
commit f8252483ec
2 changed files with 24 additions and 6 deletions

View File

@ -201,6 +201,7 @@ public:
m_ownsImageListState;
wxListHeaderWindow *m_headerWin;
wxListMainWindow *m_mainWin;
wxCoord m_headerHeight;
protected:
// return the text for the given column of the given item
@ -222,6 +223,9 @@ private:
// create the header window
void CreateHeaderWindow();
// calculate and set height of the header
void CalculateAndSetHeaderHeight();
// reposition the header and the main window in the report view depending
// on whether it should be shown or not
void ResizeReportView(bool showHeader);

View File

@ -103,8 +103,8 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_CACHE_HINT)
// constants
// ----------------------------------------------------------------------------
// the height of the header window (FIXME: should depend on its font!)
static const int HEADER_HEIGHT = 23;
// // the height of the header window (FIXME: should depend on its font!)
// static const int HEADER_HEIGHT = 23;
// the scrollbar units
static const int SCROLL_UNIT_X = 15;
@ -4429,6 +4429,7 @@ wxGenericListCtrl::wxGenericListCtrl()
m_mainWin = (wxListMainWindow*) NULL;
m_headerWin = (wxListHeaderWindow*) NULL;
m_headerHeight = 0;
}
wxGenericListCtrl::~wxGenericListCtrl()
@ -4441,15 +4442,25 @@ wxGenericListCtrl::~wxGenericListCtrl()
delete m_imageListState;
}
void wxGenericListCtrl::CalculateAndSetHeaderHeight()
{
// we use the letter "H" for calculating the needed space, basing on the current font
int w, h;
m_headerWin->GetTextExtent(wxT("H"), &w, &h);
m_headerHeight = h + 2 * HEADER_OFFSET_Y + EXTRA_HEIGHT;
m_headerWin->SetSize(m_headerWin->GetSize().x, m_headerHeight);
}
void wxGenericListCtrl::CreateHeaderWindow()
{
m_headerWin = new wxListHeaderWindow
(
this, -1, m_mainWin,
wxPoint(0, 0),
wxSize(GetClientSize().x, HEADER_HEIGHT),
wxSize(GetClientSize().x, m_headerHeight),
wxTAB_TRAVERSAL
);
CalculateAndSetHeaderHeight();
}
bool wxGenericListCtrl::Create(wxWindow *parent,
@ -4676,7 +4687,7 @@ bool wxGenericListCtrl::GetItemRect( long item, wxRect &rect, int WXUNUSED(code
{
m_mainWin->GetItemRect( item, rect );
if ( m_mainWin->HasHeader() )
rect.y += HEADER_HEIGHT + 1;
rect.y += m_headerHeight + 1;
return TRUE;
}
@ -5008,8 +5019,8 @@ void wxGenericListCtrl::ResizeReportView(bool showHeader)
if ( showHeader )
{
m_headerWin->SetSize( 0, 0, cw, HEADER_HEIGHT );
m_mainWin->SetSize( 0, HEADER_HEIGHT + 1, cw, ch - HEADER_HEIGHT - 1 );
m_headerWin->SetSize( 0, 0, cw, m_headerHeight );
m_mainWin->SetSize( 0, m_headerHeight + 1, cw, ch - m_headerHeight - 1 );
}
else // no header window
{
@ -5076,8 +5087,11 @@ bool wxGenericListCtrl::SetFont( const wxFont &font )
if (m_headerWin)
{
m_headerWin->SetFont( font );
CalculateAndSetHeaderHeight();
}
Refresh();
return TRUE;
}