From 06e3372526dc2fa878b403c7259457cc5828bd75 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Wed, 11 Jul 2007 08:32:10 +0000 Subject: [PATCH] Avoid a crash due to OnSize being called before initialisation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@47330 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/grid.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 27e49d3253..d8a9701f88 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -4188,6 +4188,7 @@ bool wxGrid::Create(wxWindow *parent, wxWindowID id, Create(); SetInitialSize(size); + CalcDimensions(); return true; } @@ -4368,7 +4369,7 @@ bool wxGrid::SetTable( wxGridTableBase *table, bool takeOwnership, // stop all processing m_created = false; - if (m_table) + if (m_table) { m_table->SetView(0); if( m_ownTable ) @@ -4406,7 +4407,7 @@ bool wxGrid::SetTable( wxGridTableBase *table, bool takeOwnership, // original one current cell and selection regions // might be invalid, m_selectingKeyboard = wxGridNoCellCoords; - m_currentCellCoords = + m_currentCellCoords = wxGridCellCoords(wxMin(m_numRows, m_currentCellCoords.GetRow()), wxMin(m_numCols, m_currentCellCoords.GetCol())); if (m_selectingTopLeft.GetRow() >= m_numRows || @@ -5974,7 +5975,7 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event ) m_winCapture->CaptureMouse(); } - + } else if ( m_cursorMode == WXGRID_CURSOR_RESIZE_ROW ) { @@ -6737,7 +6738,7 @@ int wxGrid::SendEvent( const wxEventType type, pos.y += GetColLabelSize(); if ( mouseEv.GetEventObject() == GetGridColLabelWindow() ) pos.x += GetRowLabelSize(); - + wxGridEvent gridEvt( GetId(), type, this, @@ -6905,8 +6906,11 @@ void wxGrid::Refresh(bool eraseb, const wxRect* rect) void wxGrid::OnSize( wxSizeEvent& WXUNUSED(event) ) { - // update our children window positions and scrollbars - CalcDimensions(); + if (m_targetWindow != this) // check whether initialisation has been done + { + // update our children window positions and scrollbars + CalcDimensions(); + } } void wxGrid::OnKeyDown( wxKeyEvent& event ) @@ -6934,7 +6938,7 @@ void wxGrid::OnKeyDown( wxKeyEvent& event ) else if (event.GetKeyCode() == WXK_LEFT) event.m_keyCode = WXK_RIGHT; } - + // try local handlers switch ( event.GetKeyCode() ) {