Add helper AcceptCellEditControlIfShown() function

This is just another refactoring in order to avoid duplicating calls to
HideCellEditControl() and SaveEditControlValue() in several different
places.

Also call DoSaveEditControlValue() because if the editor is shown, it is
also necessarily enabled and there is no need to check for this.
This commit is contained in:
Vadim Zeitlin
2020-06-27 16:57:40 +02:00
parent 0fb153a2bd
commit 3a874471c3
2 changed files with 18 additions and 23 deletions

View File

@@ -2908,6 +2908,10 @@ private:
); );
} }
// Accept the changes in the edit control, if it's currently shown, and
// dismiss it.
void AcceptCellEditControlIfShown();
// Unlike the public SaveEditControlValue(), this method doesn't check if // Unlike the public SaveEditControlValue(), this method doesn't check if
// the edit control is shown, but just supposes that it is. // the edit control is shown, but just supposes that it is.
void DoSaveEditControlValue(); void DoSaveEditControlValue();

View File

@@ -3966,11 +3966,7 @@ void wxGrid::DoStartResizeRowOrCol(int col)
{ {
// Hide the editor if it's currently shown to avoid any weird interactions // Hide the editor if it's currently shown to avoid any weird interactions
// with it while dragging the row/column separator. // with it while dragging the row/column separator.
if ( IsCellEditControlShown() ) AcceptCellEditControlIfShown();
{
HideCellEditControl();
SaveEditControlValue();
}
m_dragRowOrCol = col; m_dragRowOrCol = col;
} }
@@ -4481,11 +4477,7 @@ wxGrid::DoGridCellDrag(wxMouseEvent& event,
if ( isFirstDrag ) if ( isFirstDrag )
{ {
// Hide the edit control, so it won't interfere with drag-shrinking. // Hide the edit control, so it won't interfere with drag-shrinking.
if ( IsCellEditControlShown() ) AcceptCellEditControlIfShown();
{
HideCellEditControl();
SaveEditControlValue();
}
switch ( event.GetModifiers() ) switch ( event.GetModifiers() )
{ {
@@ -7419,6 +7411,15 @@ void wxGrid::HideCellEditControl()
} }
} }
void wxGrid::AcceptCellEditControlIfShown()
{
if ( IsCellEditControlShown() )
{
HideCellEditControl();
DoSaveEditControlValue();
}
}
void wxGrid::SaveEditControlValue() void wxGrid::SaveEditControlValue()
{ {
if ( IsCellEditControlEnabled() ) if ( IsCellEditControlEnabled() )
@@ -9951,9 +9952,7 @@ wxGrid::AutoSizeColOrRow(int colOrRow, bool setAsMin, wxGridDirection direction)
wxClientDC dc(m_gridWin); wxClientDC dc(m_gridWin);
// cancel editing of cell AcceptCellEditControlIfShown();
HideCellEditControl();
SaveEditControlValue();
// initialize both of them just to avoid compiler warnings even if only // initialize both of them just to avoid compiler warnings even if only
// really needs to be initialized here // really needs to be initialized here
@@ -10272,11 +10271,7 @@ void wxGrid::AutoSizeRowLabelSize( int row )
{ {
// Hide the edit control, so it // Hide the edit control, so it
// won't interfere with drag-shrinking. // won't interfere with drag-shrinking.
if ( IsCellEditControlShown() ) AcceptCellEditControlIfShown();
{
HideCellEditControl();
SaveEditControlValue();
}
// autosize row height depending on label text // autosize row height depending on label text
SetRowSize(row, -1); SetRowSize(row, -1);
@@ -10288,11 +10283,7 @@ void wxGrid::AutoSizeColLabelSize( int col )
{ {
// Hide the edit control, so it // Hide the edit control, so it
// won't interfere with drag-shrinking. // won't interfere with drag-shrinking.
if ( IsCellEditControlShown() ) AcceptCellEditControlIfShown();
{
HideCellEditControl();
SaveEditControlValue();
}
// autosize column width depending on label text // autosize column width depending on label text
SetColSize(col, -1); SetColSize(col, -1);