Allow hiding/showing already hidden/shown wxGrid rows/columns.
Don't assert if an already hidden/shown row/column is being hidden/shown again but simply don't do anything. This is more convenient because the code outside wxGrid has no efficient way to only hide a row/column if it's currently shown. Closes #14960. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73366 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -2988,8 +2988,7 @@ public:
|
|||||||
To show the column later you need to call SetColSize() with non-0
|
To show the column later you need to call SetColSize() with non-0
|
||||||
width or ShowCol() to restore the previous column width.
|
width or ShowCol() to restore the previous column width.
|
||||||
|
|
||||||
Notice that this method shouldn't be called if the column is already
|
If the column is already hidden, this method doesn't do anything.
|
||||||
hidden.
|
|
||||||
|
|
||||||
@param col
|
@param col
|
||||||
The column index.
|
The column index.
|
||||||
@@ -3002,8 +3001,7 @@ public:
|
|||||||
The column is shown again with the same width that it had before
|
The column is shown again with the same width that it had before
|
||||||
HideCol() call.
|
HideCol() call.
|
||||||
|
|
||||||
Notice that this method shouldn't be called if the column is not
|
If the column is currently shown, this method doesn't do anything.
|
||||||
currently hidden.
|
|
||||||
|
|
||||||
@see HideCol(), SetColSize()
|
@see HideCol(), SetColSize()
|
||||||
*/
|
*/
|
||||||
@@ -3073,6 +3071,8 @@ public:
|
|||||||
To show the row later you need to call SetRowSize() with non-0
|
To show the row later you need to call SetRowSize() with non-0
|
||||||
width or ShowRow() to restore its original height.
|
width or ShowRow() to restore its original height.
|
||||||
|
|
||||||
|
If the row is already hidden, this method doesn't do anything.
|
||||||
|
|
||||||
@param col
|
@param col
|
||||||
The row index.
|
The row index.
|
||||||
*/
|
*/
|
||||||
@@ -3084,6 +3084,8 @@ public:
|
|||||||
The row is shown again with the same height that it had before
|
The row is shown again with the same height that it had before
|
||||||
HideRow() call.
|
HideRow() call.
|
||||||
|
|
||||||
|
If the row is currently shown, this method doesn't do anything.
|
||||||
|
|
||||||
@see HideRow(), SetRowSize()
|
@see HideRow(), SetRowSize()
|
||||||
*/
|
*/
|
||||||
void ShowRow(int col);
|
void ShowRow(int col);
|
||||||
|
@@ -211,6 +211,11 @@ BEGIN_EVENT_TABLE( GridFrame, wxFrame )
|
|||||||
EVT_MENU( ID_SIZE_LABELS_ROW, GridFrame::AutoSizeLabelsRow )
|
EVT_MENU( ID_SIZE_LABELS_ROW, GridFrame::AutoSizeLabelsRow )
|
||||||
EVT_MENU( ID_SIZE_GRID, GridFrame::AutoSizeTable )
|
EVT_MENU( ID_SIZE_GRID, GridFrame::AutoSizeTable )
|
||||||
|
|
||||||
|
EVT_MENU( ID_HIDECOL, GridFrame::HideCol )
|
||||||
|
EVT_MENU( ID_SHOWCOL, GridFrame::ShowCol )
|
||||||
|
EVT_MENU( ID_HIDEROW, GridFrame::HideRow )
|
||||||
|
EVT_MENU( ID_SHOWROW, GridFrame::ShowRow )
|
||||||
|
|
||||||
EVT_MENU( ID_SET_HIGHLIGHT_WIDTH, GridFrame::OnSetHighlightWidth)
|
EVT_MENU( ID_SET_HIGHLIGHT_WIDTH, GridFrame::OnSetHighlightWidth)
|
||||||
EVT_MENU( ID_SET_RO_HIGHLIGHT_WIDTH, GridFrame::OnSetROHighlightWidth)
|
EVT_MENU( ID_SET_RO_HIGHLIGHT_WIDTH, GridFrame::OnSetROHighlightWidth)
|
||||||
|
|
||||||
@@ -293,7 +298,10 @@ GridFrame::GridFrame()
|
|||||||
viewMenu->AppendCheckItem(ID_AUTOSIZECOLS, "&Auto-size cols");
|
viewMenu->AppendCheckItem(ID_AUTOSIZECOLS, "&Auto-size cols");
|
||||||
viewMenu->AppendCheckItem(ID_CELLOVERFLOW, "&Overflow cells");
|
viewMenu->AppendCheckItem(ID_CELLOVERFLOW, "&Overflow cells");
|
||||||
viewMenu->AppendCheckItem(ID_RESIZECELL, "&Resize cell (7,1)");
|
viewMenu->AppendCheckItem(ID_RESIZECELL, "&Resize cell (7,1)");
|
||||||
|
viewMenu->Append(ID_HIDECOL, "&Hide column A");
|
||||||
|
viewMenu->Append(ID_SHOWCOL, "&Show column A");
|
||||||
|
viewMenu->Append(ID_HIDEROW, "&Hide row 2");
|
||||||
|
viewMenu->Append(ID_SHOWROW, "&Show row 2");
|
||||||
wxMenu *rowLabelMenu = new wxMenu;
|
wxMenu *rowLabelMenu = new wxMenu;
|
||||||
|
|
||||||
viewMenu->Append( ID_ROWLABELALIGN, wxT("R&ow label alignment"),
|
viewMenu->Append( ID_ROWLABELALIGN, wxT("R&ow label alignment"),
|
||||||
@@ -2309,3 +2317,23 @@ void GridFrame::OnRenderPaint( wxPaintEvent& event )
|
|||||||
m_gridBitmap.GetHeight(),
|
m_gridBitmap.GetHeight(),
|
||||||
&memDc, 0, 0 );
|
&memDc, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GridFrame::HideCol( wxCommandEvent& WXUNUSED(event) )
|
||||||
|
{
|
||||||
|
grid->HideCol(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GridFrame::ShowCol( wxCommandEvent& WXUNUSED(event) )
|
||||||
|
{
|
||||||
|
grid->ShowCol(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GridFrame::HideRow( wxCommandEvent& WXUNUSED(event) )
|
||||||
|
{
|
||||||
|
grid->HideRow(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GridFrame::ShowRow( wxCommandEvent& WXUNUSED(event) )
|
||||||
|
{
|
||||||
|
grid->ShowRow(1);
|
||||||
|
}
|
||||||
|
@@ -88,6 +88,12 @@ class GridFrame : public wxFrame
|
|||||||
void AutoSizeLabelsRow(wxCommandEvent& event);
|
void AutoSizeLabelsRow(wxCommandEvent& event);
|
||||||
void AutoSizeTable(wxCommandEvent& event);
|
void AutoSizeTable(wxCommandEvent& event);
|
||||||
|
|
||||||
|
void HideCol(wxCommandEvent& event);
|
||||||
|
void ShowCol(wxCommandEvent& event);
|
||||||
|
void HideRow(wxCommandEvent& event);
|
||||||
|
void ShowRow(wxCommandEvent& event);
|
||||||
|
|
||||||
|
|
||||||
void OnLabelLeftClick( wxGridEvent& );
|
void OnLabelLeftClick( wxGridEvent& );
|
||||||
void OnCellLeftClick( wxGridEvent& );
|
void OnCellLeftClick( wxGridEvent& );
|
||||||
void OnRowSize( wxGridSizeEvent& );
|
void OnRowSize( wxGridSizeEvent& );
|
||||||
@@ -131,6 +137,10 @@ public:
|
|||||||
ID_TOGGLEGRIDLINES,
|
ID_TOGGLEGRIDLINES,
|
||||||
ID_AUTOSIZECOLS,
|
ID_AUTOSIZECOLS,
|
||||||
ID_CELLOVERFLOW,
|
ID_CELLOVERFLOW,
|
||||||
|
ID_HIDECOL,
|
||||||
|
ID_SHOWCOL,
|
||||||
|
ID_HIDEROW,
|
||||||
|
ID_SHOWROW,
|
||||||
ID_RESIZECELL,
|
ID_RESIZECELL,
|
||||||
ID_SETLABELCOLOUR,
|
ID_SETLABELCOLOUR,
|
||||||
ID_SETLABELTEXTCOLOUR,
|
ID_SETLABELTEXTCOLOUR,
|
||||||
|
@@ -8106,8 +8106,11 @@ int UpdateRowOrColSize(int& sizeCurrent, int sizeNew)
|
|||||||
// We're showing back a previously hidden row/column.
|
// We're showing back a previously hidden row/column.
|
||||||
wxASSERT_MSG( sizeNew == -1, wxS("New size must be positive or -1.") );
|
wxASSERT_MSG( sizeNew == -1, wxS("New size must be positive or -1.") );
|
||||||
|
|
||||||
wxASSERT_MSG( sizeCurrent < 0, wxS("May only show back if hidden.") );
|
// If it's already visible, simply do nothing.
|
||||||
|
if ( sizeCurrent >= 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// Otherwise show it by restoring its old size.
|
||||||
sizeCurrent = -sizeCurrent;
|
sizeCurrent = -sizeCurrent;
|
||||||
|
|
||||||
// This is positive which is correct.
|
// This is positive which is correct.
|
||||||
@@ -8116,8 +8119,13 @@ int UpdateRowOrColSize(int& sizeCurrent, int sizeNew)
|
|||||||
else if ( sizeNew == 0 )
|
else if ( sizeNew == 0 )
|
||||||
{
|
{
|
||||||
// We're hiding a row/column.
|
// We're hiding a row/column.
|
||||||
wxASSERT_MSG( sizeCurrent > 0, wxS("Can't hide if already hidden.") );
|
|
||||||
|
|
||||||
|
// If it's already hidden, simply do nothing.
|
||||||
|
if ( sizeCurrent <= 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// Otherwise hide it and also remember the shown size to be able to
|
||||||
|
// restore it later.
|
||||||
sizeCurrent = -sizeCurrent;
|
sizeCurrent = -sizeCurrent;
|
||||||
|
|
||||||
// This is negative which is correct.
|
// This is negative which is correct.
|
||||||
|
Reference in New Issue
Block a user