X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4ea3479cb58063abf7968d7c6fbaef672e9894a8..d1d738f18c7dbcc58604b6f3ba73ceebef656dc2:/src/generic/grid.cpp diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 511bed5c93..43e4e40dc2 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -69,7 +69,8 @@ // array classes // ---------------------------------------------------------------------------- -WX_DEFINE_EXPORTED_ARRAY(wxGridCellAttr *, wxArrayAttrs); +WX_DEFINE_ARRAY_WITH_DECL_NO_PTR(wxGridCellAttr *, wxArrayAttrs, + class WXDLLIMPEXP_ADV); struct wxGridCellWithAttr { @@ -91,7 +92,8 @@ struct wxGridCellWithAttr // without rewriting the macros, which require a public copy constructor. }; -WX_DECLARE_EXPORTED_OBJARRAY(wxGridCellWithAttr, wxGridCellWithAttrArray); +WX_DECLARE_OBJARRAY_WITH_DECL(wxGridCellWithAttr, wxGridCellWithAttrArray, + class WXDLLIMPEXP_ADV); #include "wx/arrimpl.cpp" @@ -123,7 +125,7 @@ DEFINE_EVENT_TYPE(wxEVT_GRID_EDITOR_CREATED) // private classes // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxGridRowLabelWindow : public wxWindow +class WXDLLIMPEXP_ADV wxGridRowLabelWindow : public wxWindow { public: wxGridRowLabelWindow() { m_owner = (wxGrid *)NULL; } @@ -145,7 +147,7 @@ private: }; -class WXDLLEXPORT wxGridColLabelWindow : public wxWindow +class WXDLLIMPEXP_ADV wxGridColLabelWindow : public wxWindow { public: wxGridColLabelWindow() { m_owner = (wxGrid *)NULL; } @@ -167,7 +169,7 @@ private: }; -class WXDLLEXPORT wxGridCornerLabelWindow : public wxWindow +class WXDLLIMPEXP_ADV wxGridCornerLabelWindow : public wxWindow { public: wxGridCornerLabelWindow() { m_owner = (wxGrid *)NULL; } @@ -188,7 +190,7 @@ private: DECLARE_NO_COPY_CLASS(wxGridCornerLabelWindow) }; -class WXDLLEXPORT wxGridWindow : public wxWindow +class WXDLLIMPEXP_ADV wxGridWindow : public wxWindow { public: wxGridWindow() @@ -263,7 +265,7 @@ END_EVENT_TABLE() // ---------------------------------------------------------------------------- // this class stores attributes set for cells -class WXDLLEXPORT wxGridCellAttrData +class WXDLLIMPEXP_ADV wxGridCellAttrData { public: void SetAttr(wxGridCellAttr *attr, int row, int col); @@ -279,7 +281,7 @@ private: }; // this class stores attributes set for rows or columns -class WXDLLEXPORT wxGridRowOrColAttrData +class WXDLLIMPEXP_ADV wxGridRowOrColAttrData { public: // empty ctor to suppress warnings @@ -297,7 +299,7 @@ private: // NB: this is just a wrapper around 3 objects: one which stores cell // attributes, and 2 others for row/col ones -class WXDLLEXPORT wxGridCellAttrProviderData +class WXDLLIMPEXP_ADV wxGridCellAttrProviderData { public: wxGridCellAttrData m_cellAttrs; @@ -332,10 +334,11 @@ struct wxGridDataTypeInfo }; -WX_DEFINE_EXPORTED_ARRAY(wxGridDataTypeInfo*, wxGridDataTypeInfoArray); +WX_DEFINE_ARRAY_WITH_DECL_NO_PTR(wxGridDataTypeInfo*, wxGridDataTypeInfoArray, + class WXDLLIMPEXP_ADV); -class WXDLLEXPORT wxGridTypeRegistry +class WXDLLIMPEXP_ADV wxGridTypeRegistry { public: wxGridTypeRegistry() {} @@ -717,7 +720,7 @@ bool wxGridCellTextEditor::IsAcceptedKey(wxKeyEvent& event) default: // accept 8 bit chars too if isprint() agrees - if ( (keycode < 255) && (isprint(keycode)) ) + if ( (keycode < 255) && (wxIsprint(keycode)) ) return TRUE; } } @@ -911,7 +914,7 @@ bool wxGridCellNumberEditor::IsAcceptedKey(wxKeyEvent& event) return TRUE; default: - if ( (keycode < 128) && isdigit(keycode) ) + if ( (keycode < 128) && wxIsdigit(keycode) ) return TRUE; } } @@ -924,7 +927,7 @@ void wxGridCellNumberEditor::StartingKey(wxKeyEvent& event) if ( !HasRange() ) { int keycode = event.GetKeyCode(); - if ( isdigit(keycode) || keycode == '+' || keycode == '-' + if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-' || keycode == WXK_NUMPAD0 || keycode == WXK_NUMPAD1 || keycode == WXK_NUMPAD2 @@ -1064,7 +1067,7 @@ void wxGridCellFloatEditor::Reset() void wxGridCellFloatEditor::StartingKey(wxKeyEvent& event) { int keycode = event.GetKeyCode(); - if ( isdigit(keycode) || keycode == '+' || keycode == '-' || keycode == '.' + if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-' || keycode == '.' || keycode == WXK_NUMPAD0 || keycode == WXK_NUMPAD1 || keycode == WXK_NUMPAD2 @@ -1166,7 +1169,7 @@ bool wxGridCellFloatEditor::IsAcceptedKey(wxKeyEvent& event) default: // additionally accept 'e' as in '1e+6' if ( (keycode < 128) && - (isdigit(keycode) || tolower(keycode) == 'e') ) + (wxIsdigit(keycode) || tolower(keycode) == 'e') ) return TRUE; } } @@ -3913,14 +3916,19 @@ bool wxGrid::SetTable( wxGridTableBase *table, bool takeOwnership, { if ( m_created ) { - if (m_ownTable) - delete m_table; + // stop all processing + m_created = FALSE; + + if (m_ownTable) + { + wxGridTableBase *t=m_table; + m_table=0; + delete t; + } delete m_selection; - // stop all processing m_table=0; m_selection=0; - m_created = FALSE; m_numRows=0; m_numCols=0; } @@ -5770,7 +5778,6 @@ bool wxGrid::InsertRows( int pos, int numRows, bool WXUNUSED(updateLabels) ) DisableCellEditControl(); bool done = m_table->InsertRows( pos, numRows ); - m_numRows = m_table->GetNumberRows(); return done; // the table will have sent the results of the insert row @@ -5793,7 +5800,6 @@ bool wxGrid::AppendRows( int numRows, bool WXUNUSED(updateLabels) ) if ( m_table ) { bool done = m_table && m_table->AppendRows( numRows ); - m_numRows = m_table->GetNumberRows(); return done; // the table will have sent the results of the append row // operation to this view object as a grid table message @@ -5818,7 +5824,6 @@ bool wxGrid::DeleteRows( int pos, int numRows, bool WXUNUSED(updateLabels) ) DisableCellEditControl(); bool done = m_table->DeleteRows( pos, numRows ); - m_numRows = m_table->GetNumberRows(); return done; // the table will have sent the results of the delete row // operation to this view object as a grid table message @@ -5843,7 +5848,6 @@ bool wxGrid::InsertCols( int pos, int numCols, bool WXUNUSED(updateLabels) ) DisableCellEditControl(); bool done = m_table->InsertCols( pos, numCols ); - m_numCols = m_table->GetNumberCols(); return done; // the table will have sent the results of the insert col // operation to this view object as a grid table message @@ -5865,7 +5869,6 @@ bool wxGrid::AppendCols( int numCols, bool WXUNUSED(updateLabels) ) if ( m_table ) { bool done = m_table->AppendCols( numCols ); - m_numCols = m_table->GetNumberCols(); return done; // the table will have sent the results of the append col // operation to this view object as a grid table message @@ -5890,7 +5893,6 @@ bool wxGrid::DeleteCols( int pos, int numCols, bool WXUNUSED(updateLabels) ) DisableCellEditControl(); bool done = m_table->DeleteCols( pos, numCols ); - m_numCols = m_table->GetNumberCols(); return done; // the table will have sent the results of the delete col // operation to this view object as a grid table message @@ -9378,27 +9380,27 @@ void wxGrid::SetColSize( int col, int width ) void wxGrid::SetColMinimalWidth( int col, int width ) { if (width > GetColMinimalAcceptableWidth()) { - m_colMinWidths.Put(col, width); + m_colMinWidths[col] = width; } } void wxGrid::SetRowMinimalHeight( int row, int width ) { if (width > GetRowMinimalAcceptableHeight()) { - m_rowMinHeights.Put(row, width); + m_rowMinHeights[row] = width; } } int wxGrid::GetColMinimalWidth(int col) const { - long value = m_colMinWidths.Get(col); - return value != wxNOT_FOUND ? (int)value : m_minAcceptableColWidth; + wxLongToLongHashMap::const_iterator it = m_colMinWidths.find(col); + return it != m_colMinWidths.end() ? (int)it->second : m_minAcceptableColWidth; } int wxGrid::GetRowMinimalHeight(int row) const { - long value = m_rowMinHeights.Get(row); - return value != wxNOT_FOUND ? (int)value : m_minAcceptableRowHeight; + wxLongToLongHashMap::const_iterator it = m_rowMinHeights.find(row); + return it != m_rowMinHeights.end() ? (int)it->second : m_minAcceptableRowHeight; } void wxGrid::SetColMinimalAcceptableWidth( int width )