// Purpose: generic implementation of wxListCtrl
// Author: Robert Roebling
// Vadim Zeitlin (virtual list control support)
-// Id: $Id$
// Copyright: (c) 1998 Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
m_resizeCursor = NULL;
}
-wxListHeaderWindow::wxListHeaderWindow( wxWindow *win,
- wxWindowID id,
- wxListMainWindow *owner,
- const wxPoint& pos,
- const wxSize& size,
- long style,
- const wxString &name )
- : wxWindow( win, id, pos, size, style, name )
+bool wxListHeaderWindow::Create( wxWindow *win,
+ wxWindowID id,
+ wxListMainWindow *owner,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxString &name )
{
+ if ( !wxWindow::Create(win, id, pos, size, style, name) )
+ return false;
+
Init();
m_owner = owner;
if (!m_hasFont)
SetOwnFont( wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT ));
#endif
+
+ return true;
}
wxListHeaderWindow::~wxListHeaderWindow()
if (needs_header)
{
- m_headerWin = new wxListHeaderWindow
+ // Notice that we must initialize m_headerWin first, and create the
+ // real window only later, so that the test in the beginning of the
+ // function blocks repeated creation of the header as it could happen
+ // before via wxNavigationEnabled::AddChild() -> ToggleWindowStyle() ->
+ // SetWindowStyleFlag().
+ m_headerWin = new wxListHeaderWindow();
+ m_headerWin->Create
(
this, wxID_ANY, m_mainWin,
wxPoint(0,0),
),
wxTAB_TRAVERSAL
);
-
+
#if defined( __WXMAC__ )
static wxFont font( wxOSX_SYSTEM_FONT_SMALL );
m_headerWin->SetFont( font );
#endif
}
-void wxGenericListCtrl::DoClientToScreen( int *x, int *y ) const
-{
- // It's not clear whether this can be called before m_mainWin is created
- // but it seems better to be on the safe side and check.
- if ( m_mainWin )
- m_mainWin->DoClientToScreen(x, y);
- else
- wxListCtrlBase::DoClientToScreen(x, y);
-}
-
-void wxGenericListCtrl::DoScreenToClient( int *x, int *y ) const
-{
- // At least in wxGTK/Univ build this method can be called before m_mainWin
- // is created so avoid crashes in this case.
- if ( m_mainWin )
- m_mainWin->DoScreenToClient(x, y);
- else
- wxListCtrlBase::DoScreenToClient(x, y);
-}
-
wxSize wxGenericListCtrl::DoGetBestClientSize() const
{
// The base class version can compute the best size in report view only.