wxGrid: implement wxGridMoveEvent #24392
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When working with
EVT_GRID_ROW_MOVE
I noticed two problems:When I did PR #22260, in
wxGrid::DoEndMoveRow(int pos)
I made a mistake with the arguments toSendEvent(wxEVT_GRID_ROW_MOVE, -1, m_dragMoveRow)
.Therefore, in an event handler
event.GetRow()
would always return -1 andevent.GetCol()
needs to be used instead.The bigger issue is that there is no easy way to retrieve the target row number.
This PR adds a new event class
wxGridMoveEvent
which allows retrieveal of old and new positions usingGetRowOrCol()
andGetNewRowOrCol()
.The huge disadvantage of this approach is that existing C++ code needs to change the argument type of event handlers.
E.g. in the grid sample:
void OnGridColMove(wxGridEvent& event)
->void OnGridRowMove(wxGridMoveEvent& event)
I'm not a C++ guy. When creating the new class, I just copied the code from
wxGridSizeEvent
. I was surprised that there is no inheritance between the different grid event classes. BothwxGridEvent
andwxGridSizeEvent
are derived fromwxNotifyEvent
.Could
wxGridMoveEvent
be changed to derive fromwxGridEvent
to be backward compatible or would that inheritance break something else? The API could be changed toGetNewRow()
andGetNewCol()
.(If the change can't be done, I would remove the
GetCol()
method from the PR as at the moment it's a bit pointless.)