diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index 02ae6d2554..b6121f0083 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -97,6 +97,7 @@ class WXDLLIMPEXP_FWD_CORE wxGridCellAttr; class WXDLLIMPEXP_FWD_CORE wxGridCellAttrProviderData; class WXDLLIMPEXP_FWD_CORE wxGridColLabelWindow; class WXDLLIMPEXP_FWD_CORE wxGridCornerLabelWindow; +class WXDLLIMPEXP_FWD_CORE wxGridEvent; class WXDLLIMPEXP_FWD_CORE wxGridRowLabelWindow; class WXDLLIMPEXP_FWD_CORE wxGridWindow; class WXDLLIMPEXP_FWD_CORE wxGridTypeRegistry; @@ -2552,8 +2553,11 @@ protected: bool Redimension( wxGridTableMessage& ); - // generate the appropriate grid event and return -1 if it was vetoed, 1 if - // it was processed (but not vetoed) and 0 if it wasn't processed + // Send the given grid event and return -1 if it was vetoed, 1 if + // it was processed (but not vetoed) and 0 if it wasn't processed. + int DoSendEvent(wxGridEvent& gridEvt); + + // Generate an event of the given type and call DoSendEvent(). int SendEvent(wxEventType evtType, int row, int col, const wxMouseEvent& e); diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index adbf19cc61..d40c00549a 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -5293,16 +5293,27 @@ wxGrid::SendGridSizeEvent(wxEventType type, return GetEventHandler()->ProcessEvent(gridEvt); } -// Generate a grid event based on a mouse event and return: +// Process the event and return // -1 if the event was vetoed // +1 if the event was processed (but not vetoed) // 0 if the event wasn't handled +int wxGrid::DoSendEvent(wxGridEvent& gridEvt) +{ + const bool claimed = GetEventHandler()->ProcessEvent(gridEvt); + + // A Veto'd event may not be `claimed' so test this first + if ( !gridEvt.IsAllowed() ) + return -1; + + return claimed ? 1 : 0; +} + +// Generate a grid event based on a mouse event and call DoSendEvent() with it. int wxGrid::SendEvent(wxEventType type, int row, int col, const wxMouseEvent& mouseEv) { - bool claimed, vetoed; if ( type == wxEVT_GRID_LABEL_LEFT_CLICK || type == wxEVT_GRID_LABEL_LEFT_DCLICK || @@ -5324,8 +5335,8 @@ wxGrid::SendEvent(wxEventType type, pos.y, false, mouseEv); - claimed = GetEventHandler()->ProcessEvent(gridEvt); - vetoed = !gridEvt.IsAllowed(); + + return DoSendEvent(gridEvt); } else { @@ -5345,15 +5356,8 @@ wxGrid::SendEvent(wxEventType type, gridEvt.Veto(); } - claimed = GetEventHandler()->ProcessEvent(gridEvt); - vetoed = !gridEvt.IsAllowed(); + return DoSendEvent(gridEvt); } - - // A Veto'd event may not be `claimed' so test this first - if (vetoed) - return -1; - - return claimed ? 1 : 0; } // Generate a grid event of specified type, return value same as above @@ -5364,13 +5368,7 @@ wxGrid::SendEvent(wxEventType type, int row, int col, const wxString& s) wxGridEvent gridEvt( GetId(), type, this, row, col ); gridEvt.SetString(s); - const bool claimed = GetEventHandler()->ProcessEvent(gridEvt); - - // A Veto'd event may not be `claimed' so test this first - if ( !gridEvt.IsAllowed() ) - return -1; - - return claimed ? 1 : 0; + return DoSendEvent(gridEvt); } void wxGrid::Refresh(bool eraseb, const wxRect* rect)