// draw the text and image clipping them so that they
// don't overwrite the column boundary
- wxDCClipper clipper(dc, x, HEADER_OFFSET_Y, cw, h - 4 );
+ wxDCClipper clipper(dc, x, HEADER_OFFSET_Y, cw, h);
// if we have an image, draw it on the right of the label
if ( imageList )
image,
dc,
xAligned + wLabel - ix - HEADER_IMAGE_MARGIN_IN_REPORT_MODE,
- HEADER_OFFSET_Y + (h - 4 - iy)/2,
+ HEADER_OFFSET_Y + (h - iy)/2,
wxIMAGELIST_DRAW_TRANSPARENT
);
}
dc.DrawText( item.GetText(),
- xAligned + EXTRA_WIDTH, h / 2 - hLabel / 2 ); //HEADER_OFFSET_Y + EXTRA_HEIGHT );
+ xAligned + EXTRA_WIDTH, (h - hLabel) / 2 );
x += wCol;
}
delete m_renameTimer;
}
+void wxListMainWindow::SetReportView(bool inReportView)
+{
+ const size_t count = m_lines.size();
+ for ( size_t n = 0; n < count; n++ )
+ {
+ m_lines[n].SetReportView(inReportView);
+ }
+}
+
void wxListMainWindow::CacheLineData(size_t line)
{
wxGenericListCtrl *listctrl = GetListCtrl();
m_mainWin = NULL;
m_headerWin = NULL;
- m_headerHeight = wxRendererNative::Get().GetHeaderButtonHeight(this);
}
wxGenericListCtrl::~wxGenericListCtrl()
(
this, wxID_ANY, m_mainWin,
wxPoint(0,0),
- wxSize(GetClientSize().x, m_headerHeight),
+ wxSize
+ (
+ GetClientSize().x,
+ wxRendererNative::Get().GetHeaderButtonHeight(this)
+ ),
wxTAB_TRAVERSAL
);
#if defined( __WXMAC__ )
- wxFont font;
- font.CreateSystemFont( wxOSX_SYSTEM_FONT_SMALL );
+ static wxFont font( wxOSX_SYSTEM_FONT_SMALL );
m_headerWin->SetFont( font );
#endif
void wxGenericListCtrl::SetWindowStyleFlag( long flag )
{
+ const bool wasInReportView = HasFlag(wxLC_REPORT);
+
+ // update the window style first so that the header is created or destroyed
+ // corresponding to the new style
+ wxWindow::SetWindowStyleFlag( flag );
+
if (m_mainWin)
{
+ const bool inReportView = (flag & wxLC_REPORT) != 0;
+ if ( inReportView != wasInReportView )
+ {
+ // we need to notify the main window about this change as it must
+ // update its data structures
+ m_mainWin->SetReportView(inReportView);
+ }
+
// m_mainWin->DeleteEverything(); wxMSW doesn't do that
CreateOrDestroyHeaderWindowAsNeeded();
GetSizer()->Layout();
}
-
- wxWindow::SetWindowStyleFlag( flag );
}
bool wxGenericListCtrl::GetColumn(int col, wxListItem &item) const
return false;
if ( m_mainWin->HasHeader() )
- rect.y += m_headerHeight + 1;
+ rect.y += m_headerWin->GetSize().y + 1;
return true;
}