From 84912ef8b796a7c8d06171d43ae26f18b65a28e1 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 11 Nov 2000 23:57:16 +0000 Subject: [PATCH] Allow a NULL editor and/or renderer to be passed to RegisterDataType and not crash when it tries to get them later. (If NULL it falls back to the grid's default like it used to before the type registry was added.) Added wxTE_PROCESS_TAB to wxTextCtrl style for MSW. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/grid.cpp | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 5e8559b6c4..c51c40cd96 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -502,7 +502,8 @@ void wxGridCellTextEditor::Create(wxWindow* parent, m_control = new wxTextCtrl(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize #if defined(__WXMSW__) - , wxTE_MULTILINE | wxTE_NO_VSCROLL | wxTE_AUTO_SCROLL + , wxTE_PROCESS_TAB | wxTE_MULTILINE | + wxTE_NO_VSCROLL | wxTE_AUTO_SCROLL #endif ); @@ -538,9 +539,9 @@ void wxGridCellTextEditor::SetSize(const wxRect& rectOrig) } #else // !GTK int extra_x = ( rect.x > 2 )? 2 : 1; - -// MB: treat MSW separately here otherwise the caret doesn't show -// when the editor is in the first row. + +// MB: treat MSW separately here otherwise the caret doesn't show +// when the editor is in the first row. #if defined(__WXMSW__) int extra_y = 2; #else @@ -2417,14 +2418,16 @@ int wxGridTypeRegistry::FindOrCloneDataType(const wxString& typeName) wxGridCellRenderer* wxGridTypeRegistry::GetRenderer(int index) { wxGridCellRenderer* renderer = m_typeinfo[index]->m_renderer; - renderer->IncRef(); + if (renderer) + renderer->IncRef(); return renderer; } wxGridCellEditor* wxGridTypeRegistry::GetEditor(int index) { wxGridCellEditor* editor = m_typeinfo[index]->m_editor; - editor->IncRef(); + if (editor) + editor->IncRef(); return editor; } @@ -3831,8 +3834,8 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) wxGridCellAttrProvider * attrProvider = m_table->GetAttrProvider(); if (attrProvider) { attrProvider->UpdateAttrRows( pos, -((int)numRows) ); -// ifdef'd out following patch from Paul Gammans -#if 0 +// ifdef'd out following patch from Paul Gammans +#if 0 // No need to touch column attributes, unless we // removed _all_ rows, in this case, we remove // all column attributes. @@ -3840,7 +3843,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) // needed data is not available inside UpdateAttrRows. if ( !GetNumberRows() ) attrProvider->UpdateAttrCols( 0, -GetNumberCols() ); -#endif +#endif } if ( !GetBatchCount() ) { @@ -3967,8 +3970,8 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) wxGridCellAttrProvider * attrProvider = m_table->GetAttrProvider(); if (attrProvider) { attrProvider->UpdateAttrCols( pos, -((int)numCols) ); -// ifdef'd out following patch from Paul Gammans -#if 0 +// ifdef'd out following patch from Paul Gammans +#if 0 // No need to touch row attributes, unless we // removed _all_ columns, in this case, we remove // all row attributes. @@ -3976,7 +3979,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg ) // needed data is not available inside UpdateAttrCols. if ( !GetNumberCols() ) attrProvider->UpdateAttrRows( 0, -GetNumberRows() ); -#endif +#endif } if ( !GetBatchCount() ) { @@ -5615,7 +5618,7 @@ void wxGrid::SetCurrentCell( const wxGridCellCoords& coords ) } CalcCellsExposed( r ); - + // Otherwise refresh redraws the highlight! m_currentCellCoords = coords; @@ -7344,14 +7347,14 @@ void wxGrid::SetRowLabelAlignment( int horiz, int vert ) case wxRIGHT: horiz = wxALIGN_RIGHT; break; case wxCENTRE: horiz = wxALIGN_CENTRE; break; } - + switch ( vert ) { case wxTOP: vert = wxALIGN_TOP; break; case wxBOTTOM: vert = wxALIGN_BOTTOM; break; case wxCENTRE: vert = wxALIGN_CENTRE; break; } - + if ( horiz == wxALIGN_LEFT || horiz == wxALIGN_CENTRE || horiz == wxALIGN_RIGHT ) { m_rowLabelHorizAlign = horiz; @@ -7377,14 +7380,14 @@ void wxGrid::SetColLabelAlignment( int horiz, int vert ) case wxRIGHT: horiz = wxALIGN_RIGHT; break; case wxCENTRE: horiz = wxALIGN_CENTRE; break; } - + switch ( vert ) { case wxTOP: vert = wxALIGN_TOP; break; case wxBOTTOM: vert = wxALIGN_BOTTOM; break; case wxCENTRE: vert = wxALIGN_CENTRE; break; } - + if ( horiz == wxALIGN_LEFT || horiz == wxALIGN_CENTRE || horiz == wxALIGN_RIGHT ) { m_colLabelHorizAlign = horiz; @@ -8253,14 +8256,14 @@ void wxGrid::SelectCol( int col, bool addToSelected ) } -void wxGrid::SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol, +void wxGrid::SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol, bool addToSelected ) { if ( IsSelection() && !addToSelected ) ClearSelection(); - m_selection->SelectBlock( topRow, leftCol, bottomRow, rightCol, - FALSE, addToSelected ); + m_selection->SelectBlock( topRow, leftCol, bottomRow, rightCol, + FALSE, addToSelected ); } -- 2.45.2