Fix infinite recursion if wxGrid is modified from event handler
Calling wxGrid::{Insert,Delete}{Rows,Cols}() from wxEVT_GRID_CELL_CHANGE event handler resulted in infinite recursion because it tried to hide the grid editor control again, which resulted in another CELL_CHANGE event being generated and so on. Break this infinite recursion in the usual way, i.e. by updating the state of wxGrid before invoking the user-defined event handler. This required separating SaveEditControlValue() in 2 functions, the main one retaining IsCellEditControlEnabled() check for compatibility, and the new DoSaveEditControlValue() that can be called even after disabling the editor. Closes #2287. Closes https://github.com/wxWidgets/wxWidgets/pull/1540
This commit is contained in:
@@ -2482,6 +2482,10 @@ private:
|
||||
void SetNativeHeaderColCount();
|
||||
void SetNativeHeaderColOrder();
|
||||
|
||||
// Unlike the public SaveEditControlValue(), this method doesn't check if
|
||||
// the edit control is shown, but just supposes that it is.
|
||||
void DoSaveEditControlValue();
|
||||
|
||||
// these sets contain the indices of fixed, i.e. non-resizable
|
||||
// interactively, grid rows or columns and are NULL if there are no fixed
|
||||
// elements (which is the default)
|
||||
|
Reference in New Issue
Block a user