Changed wxGridCellCoords from long to int (get rid of most HP warnings?)

Added Shift/Control+Click handling for labels.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6589 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis 2000-03-10 12:27:27 +00:00
parent 2c4ad28347
commit e32352cf66
4 changed files with 71 additions and 33 deletions

View File

@ -699,8 +699,8 @@ public:
// You must override these functions in a derived table class
//
virtual long GetNumberRows() = 0;
virtual long GetNumberCols() = 0;
virtual int GetNumberRows() = 0;
virtual int GetNumberCols() = 0;
virtual bool IsEmptyCell( int row, int col ) = 0;
virtual wxString GetValue( int row, int col ) = 0;
virtual void SetValue( int row, int col, const wxString& value ) = 0;
@ -843,8 +843,8 @@ public:
// these are pure virtual in wxGridTableBase
//
long GetNumberRows();
long GetNumberCols();
int GetNumberRows();
int GetNumberCols();
wxString GetValue( int row, int col );
void SetValue( int row, int col, const wxString& s );
bool IsEmptyCell( int row, int col );
@ -894,11 +894,11 @@ public:
// default copy ctor is ok
long GetRow() const { return m_row; }
void SetRow( long n ) { m_row = n; }
long GetCol() const { return m_col; }
void SetCol( long n ) { m_col = n; }
void Set( long row, long col ) { m_row = row; m_col = col; }
int GetRow() const { return m_row; }
void SetRow( int n ) { m_row = n; }
int GetCol() const { return m_col; }
void SetCol( int n ) { m_col = n; }
void Set( int row, int col ) { m_row = row; m_col = col; }
wxGridCellCoords& operator=( const wxGridCellCoords& other )
{
@ -926,8 +926,8 @@ public:
}
private:
long m_row;
long m_col;
int m_row;
int m_col;
};

View File

@ -572,6 +572,7 @@ void GridFrame::OnLabelLeftClick( wxGridEvent& ev )
}
if ( ev.ShiftDown() ) logBuf << " (shift down)";
if ( ev.ControlDown() ) logBuf << " (control down)";
wxLogMessage( "%s", logBuf.c_str() );
// you must call event skip if you want default grid processing
@ -911,12 +912,12 @@ wxString BugsGridTable::GetTypeName(int WXUNUSED(row), int col)
return wxEmptyString;
}
long BugsGridTable::GetNumberRows()
int BugsGridTable::GetNumberRows()
{
return WXSIZEOF(gs_dataBugsGrid);
}
long BugsGridTable::GetNumberCols()
int BugsGridTable::GetNumberCols()
{
return Col_Max;
}

View File

@ -141,8 +141,8 @@ class BigGridTable : public wxGridTableBase
public:
BigGridTable(long sizeGrid) { m_sizeGrid = sizeGrid; }
long GetNumberRows() { return m_sizeGrid; }
long GetNumberCols() { return m_sizeGrid; }
int GetNumberRows() { return m_sizeGrid; }
int GetNumberCols() { return m_sizeGrid; }
wxString GetValue( int row, int col )
{
return wxString::Format("(%d, %d)", row, col);
@ -190,8 +190,8 @@ class BugsGridTable : public wxGridTableBase
public:
BugsGridTable();
virtual long GetNumberRows();
virtual long GetNumberCols();
virtual int GetNumberRows();
virtual int GetNumberCols();
virtual bool IsEmptyCell( int row, int col );
virtual wxString GetValue( int row, int col );
virtual void SetValue( int row, int col, const wxString& value );

View File

@ -2456,12 +2456,12 @@ wxGridStringTable::~wxGridStringTable()
{
}
long wxGridStringTable::GetNumberRows()
int wxGridStringTable::GetNumberRows()
{
return m_data.GetCount();
}
long wxGridStringTable::GetNumberCols()
int wxGridStringTable::GetNumberCols()
{
if ( m_data.GetCount() > 0 )
return m_data[0].GetCount();
@ -3803,10 +3803,13 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
break;
case WXGRID_CURSOR_SELECT_ROW:
if ( (row = YToRow( y )) >= 0 &&
!IsInSelection( row, 0 ) )
{
SelectRow( row, TRUE );
if ( (row = YToRow( y )) >= 0 )
{
m_selection->SelectRow( row,
event.ControlDown(),
event.ShiftDown(),
event.AltDown(),
event.MetaDown() );
}
// default label to suppress warnings about "enumeration value
@ -3843,7 +3846,23 @@ void wxGrid::ProcessRowLabelMouseEvent( wxMouseEvent& event )
if ( row >= 0 &&
!SendEvent( wxEVT_GRID_LABEL_LEFT_CLICK, row, -1, event ) )
{
SelectRow( row, event.ShiftDown() );
if ( !event.ShiftDown() && !event.ControlDown() )
ClearSelection();
if ( event.ShiftDown() )
m_selection->SelectBlock( m_currentCellCoords.GetRow(),
0,
row,
GetNumberCols() - 1,
event.ControlDown(),
event.ShiftDown(),
event.AltDown(),
event.MetaDown() );
else
m_selection->SelectRow( row,
event.ControlDown(),
event.ShiftDown(),
event.AltDown(),
event.MetaDown() );
ChangeCursorMode(WXGRID_CURSOR_SELECT_ROW, m_rowLabelWin);
}
}
@ -3970,10 +3989,13 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
break;
case WXGRID_CURSOR_SELECT_COL:
if ( (col = XToCol( x )) >= 0 &&
!IsInSelection( 0, col ) )
{
SelectCol( col, TRUE );
if ( (col = XToCol( x )) >= 0 )
{
m_selection->SelectCol( col,
event.ControlDown(),
event.ShiftDown(),
event.AltDown(),
event.MetaDown() );
}
// default label to suppress warnings about "enumeration value
@ -4010,7 +4032,22 @@ void wxGrid::ProcessColLabelMouseEvent( wxMouseEvent& event )
if ( col >= 0 &&
!SendEvent( wxEVT_GRID_LABEL_LEFT_CLICK, -1, col, event ) )
{
SelectCol( col, event.ShiftDown() );
if ( !event.ShiftDown() && !event.ControlDown() )
ClearSelection();
if ( event.ShiftDown() )
m_selection->SelectBlock( 0,
m_currentCellCoords.GetCol(),
GetNumberRows() - 1, col,
event.ControlDown(),
event.ShiftDown(),
event.AltDown(),
event.MetaDown() );
else
m_selection->SelectCol( col,
event.ControlDown(),
event.ShiftDown(),
event.AltDown(),
event.MetaDown() );
ChangeCursorMode(WXGRID_CURSOR_SELECT_COL, m_colLabelWin);
}
}
@ -4268,7 +4305,7 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event )
{
MakeCellVisible(coords);
// TODO: need to introduce a delay or something here. The
// scrolling is way to fast, at least on MSW.
// scrolling is way to fast, at least on MSW - also on GTK.
}
}
}
@ -5105,7 +5142,7 @@ void wxGrid::OnKeyDown( wxKeyEvent& event )
break;
case WXK_ESCAPE:
m_selection->ClearSelection();
ClearSelection();
break;
case WXK_TAB:
@ -7585,7 +7622,7 @@ void wxGrid::SetCellValue( int row, int col, const wxString& s )
void wxGrid::SelectRow( int row, bool addToSelected )
{
if ( IsSelection() && !addToSelected )
m_selection->ClearSelection();
ClearSelection();
m_selection->SelectRow( row );
}
@ -7594,7 +7631,7 @@ void wxGrid::SelectRow( int row, bool addToSelected )
void wxGrid::SelectCol( int col, bool addToSelected )
{
if ( IsSelection() && !addToSelected )
m_selection->ClearSelection();
ClearSelection();
m_selection->SelectCol( col );
}