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:
@@ -201,6 +201,7 @@ public:
|
|||||||
m_ownsImageListState;
|
m_ownsImageListState;
|
||||||
wxListHeaderWindow *m_headerWin;
|
wxListHeaderWindow *m_headerWin;
|
||||||
wxListMainWindow *m_mainWin;
|
wxListMainWindow *m_mainWin;
|
||||||
|
wxCoord m_headerHeight;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// return the text for the given column of the given item
|
// return the text for the given column of the given item
|
||||||
@@ -222,6 +223,9 @@ private:
|
|||||||
// create the header window
|
// create the header window
|
||||||
void CreateHeaderWindow();
|
void CreateHeaderWindow();
|
||||||
|
|
||||||
|
// calculate and set height of the header
|
||||||
|
void CalculateAndSetHeaderHeight();
|
||||||
|
|
||||||
// reposition the header and the main window in the report view depending
|
// reposition the header and the main window in the report view depending
|
||||||
// on whether it should be shown or not
|
// on whether it should be shown or not
|
||||||
void ResizeReportView(bool showHeader);
|
void ResizeReportView(bool showHeader);
|
||||||
|
@@ -103,8 +103,8 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_CACHE_HINT)
|
|||||||
// constants
|
// constants
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
// the height of the header window (FIXME: should depend on its font!)
|
// // the height of the header window (FIXME: should depend on its font!)
|
||||||
static const int HEADER_HEIGHT = 23;
|
// static const int HEADER_HEIGHT = 23;
|
||||||
|
|
||||||
// the scrollbar units
|
// the scrollbar units
|
||||||
static const int SCROLL_UNIT_X = 15;
|
static const int SCROLL_UNIT_X = 15;
|
||||||
@@ -4429,6 +4429,7 @@ wxGenericListCtrl::wxGenericListCtrl()
|
|||||||
|
|
||||||
m_mainWin = (wxListMainWindow*) NULL;
|
m_mainWin = (wxListMainWindow*) NULL;
|
||||||
m_headerWin = (wxListHeaderWindow*) NULL;
|
m_headerWin = (wxListHeaderWindow*) NULL;
|
||||||
|
m_headerHeight = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGenericListCtrl::~wxGenericListCtrl()
|
wxGenericListCtrl::~wxGenericListCtrl()
|
||||||
@@ -4441,15 +4442,25 @@ wxGenericListCtrl::~wxGenericListCtrl()
|
|||||||
delete m_imageListState;
|
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()
|
void wxGenericListCtrl::CreateHeaderWindow()
|
||||||
{
|
{
|
||||||
m_headerWin = new wxListHeaderWindow
|
m_headerWin = new wxListHeaderWindow
|
||||||
(
|
(
|
||||||
this, -1, m_mainWin,
|
this, -1, m_mainWin,
|
||||||
wxPoint(0, 0),
|
wxPoint(0, 0),
|
||||||
wxSize(GetClientSize().x, HEADER_HEIGHT),
|
wxSize(GetClientSize().x, m_headerHeight),
|
||||||
wxTAB_TRAVERSAL
|
wxTAB_TRAVERSAL
|
||||||
);
|
);
|
||||||
|
CalculateAndSetHeaderHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxGenericListCtrl::Create(wxWindow *parent,
|
bool wxGenericListCtrl::Create(wxWindow *parent,
|
||||||
@@ -4676,7 +4687,7 @@ bool wxGenericListCtrl::GetItemRect( long item, wxRect &rect, int WXUNUSED(code
|
|||||||
{
|
{
|
||||||
m_mainWin->GetItemRect( item, rect );
|
m_mainWin->GetItemRect( item, rect );
|
||||||
if ( m_mainWin->HasHeader() )
|
if ( m_mainWin->HasHeader() )
|
||||||
rect.y += HEADER_HEIGHT + 1;
|
rect.y += m_headerHeight + 1;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5008,8 +5019,8 @@ void wxGenericListCtrl::ResizeReportView(bool showHeader)
|
|||||||
|
|
||||||
if ( showHeader )
|
if ( showHeader )
|
||||||
{
|
{
|
||||||
m_headerWin->SetSize( 0, 0, cw, HEADER_HEIGHT );
|
m_headerWin->SetSize( 0, 0, cw, m_headerHeight );
|
||||||
m_mainWin->SetSize( 0, HEADER_HEIGHT + 1, cw, ch - HEADER_HEIGHT - 1 );
|
m_mainWin->SetSize( 0, m_headerHeight + 1, cw, ch - m_headerHeight - 1 );
|
||||||
}
|
}
|
||||||
else // no header window
|
else // no header window
|
||||||
{
|
{
|
||||||
@@ -5076,8 +5087,11 @@ bool wxGenericListCtrl::SetFont( const wxFont &font )
|
|||||||
if (m_headerWin)
|
if (m_headerWin)
|
||||||
{
|
{
|
||||||
m_headerWin->SetFont( font );
|
m_headerWin->SetFont( font );
|
||||||
|
CalculateAndSetHeaderHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Refresh();
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user