Initializing more variables in wxGrid::Create()
Minor fixes for crashes under wxMotif when setting attributes before the grid has been first painted. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5920 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -449,7 +449,7 @@ public:
|
|||||||
|
|
||||||
void DrawGridCellArea( wxDC& dc );
|
void DrawGridCellArea( wxDC& dc );
|
||||||
void DrawCellBorder( wxDC& dc, const wxGridCellCoords& );
|
void DrawCellBorder( wxDC& dc, const wxGridCellCoords& );
|
||||||
void DrawAllGridLines( wxDC& dc, const wxRegion & reg = wxRegion() );
|
void DrawAllGridLines( wxDC& dc, const wxRegion & reg );
|
||||||
void DrawCell( wxDC& dc, const wxGridCellCoords& );
|
void DrawCell( wxDC& dc, const wxGridCellCoords& );
|
||||||
void DrawCellBackground( wxDC& dc, const wxGridCellCoords& );
|
void DrawCellBackground( wxDC& dc, const wxGridCellCoords& );
|
||||||
void DrawCellValue( wxDC& dc, const wxGridCellCoords& );
|
void DrawCellValue( wxDC& dc, const wxGridCellCoords& );
|
||||||
@@ -859,6 +859,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_created;
|
bool m_created;
|
||||||
|
bool m_displayed;
|
||||||
|
|
||||||
wxGridWindow *m_gridWin;
|
wxGridWindow *m_gridWin;
|
||||||
wxGridRowLabelWindow *m_rowLabelWin;
|
wxGridRowLabelWindow *m_rowLabelWin;
|
||||||
|
@@ -940,6 +940,16 @@ wxGrid::~wxGrid()
|
|||||||
|
|
||||||
void wxGrid::Create()
|
void wxGrid::Create()
|
||||||
{
|
{
|
||||||
|
m_created = FALSE; // set to TRUE by CreateGrid
|
||||||
|
m_displayed = FALSE; // set to TRUE by OnPaint
|
||||||
|
|
||||||
|
m_table = (wxGridTableBase *) NULL;
|
||||||
|
m_cellEditCtrl = (wxWindow *) NULL;
|
||||||
|
|
||||||
|
m_numRows = 0;
|
||||||
|
m_numCols = 0;
|
||||||
|
m_currentCellCoords = wxGridNoCellCoords;
|
||||||
|
|
||||||
int colLblH = WXGRID_DEFAULT_COL_LABEL_HEIGHT;
|
int colLblH = WXGRID_DEFAULT_COL_LABEL_HEIGHT;
|
||||||
int rowLblW = WXGRID_DEFAULT_ROW_LABEL_WIDTH;
|
int rowLblW = WXGRID_DEFAULT_ROW_LABEL_WIDTH;
|
||||||
|
|
||||||
@@ -1119,6 +1129,10 @@ void wxGrid::Init()
|
|||||||
|
|
||||||
void wxGrid::CalcDimensions()
|
void wxGrid::CalcDimensions()
|
||||||
{
|
{
|
||||||
|
// This avoids a crash in SetScrollbars
|
||||||
|
//
|
||||||
|
if ( !m_displayed ) return;
|
||||||
|
|
||||||
int cw, ch;
|
int cw, ch;
|
||||||
GetClientSize( &cw, &ch );
|
GetClientSize( &cw, &ch );
|
||||||
|
|
||||||
@@ -2381,6 +2395,8 @@ void wxGrid::OnPaint( wxPaintEvent& WXUNUSED(event) )
|
|||||||
SetEditControlValue();
|
SetEditControlValue();
|
||||||
ShowCellEditControl();
|
ShowCellEditControl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_displayed = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2540,10 +2556,8 @@ void wxGrid::SetCurrentCell( const wxGridCellCoords& coords )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxClientDC dc( m_gridWin );
|
if ( m_displayed &&
|
||||||
PrepareDC( dc );
|
m_currentCellCoords != wxGridNoCellCoords )
|
||||||
|
|
||||||
if ( m_currentCellCoords != wxGridNoCellCoords )
|
|
||||||
{
|
{
|
||||||
HideCellEditControl();
|
HideCellEditControl();
|
||||||
SaveEditControlValue();
|
SaveEditControlValue();
|
||||||
@@ -2552,6 +2566,9 @@ void wxGrid::SetCurrentCell( const wxGridCellCoords& coords )
|
|||||||
m_currentCellCoords = coords;
|
m_currentCellCoords = coords;
|
||||||
|
|
||||||
SetEditControlValue();
|
SetEditControlValue();
|
||||||
|
|
||||||
|
if ( m_displayed )
|
||||||
|
{
|
||||||
ShowCellEditControl();
|
ShowCellEditControl();
|
||||||
|
|
||||||
if ( IsSelection() )
|
if ( IsSelection() )
|
||||||
@@ -2561,6 +2578,7 @@ void wxGrid::SetCurrentCell( const wxGridCellCoords& coords )
|
|||||||
if ( !GetBatchCount() ) m_gridWin->Refresh( FALSE, &r );
|
if ( !GetBatchCount() ) m_gridWin->Refresh( FALSE, &r );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
Reference in New Issue
Block a user