diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index d7a3890764..d92ad689f4 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -2951,6 +2951,8 @@ private: wxGridWindow* gridWindow); // Update the width/height of the column/row being drag-resized. + // Should be only called when m_dragRowOrCol != -1, i.e. dragging is + // actually in progress. void DoGridDragResize(const wxPoint& position, const wxGridOperations& oper, wxGridWindow* gridWindow); @@ -2989,6 +2991,8 @@ private: void DoStartResizeRowOrCol(int col); void DoStartMoveCol(int col); + // These functions should only be called when actually resizing/moving, + // i.e. m_dragRowOrCol and m_dragMoveCol, respectively, are valid. void DoEndDragResizeRow(const wxMouseEvent& event, wxGridWindow *gridWindow); void DoEndDragResizeCol(const wxMouseEvent& event, wxGridWindow *gridWindow); void DoEndMoveCol(int pos); diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index dff8accf66..b4b4fcdcc8 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -4707,11 +4707,13 @@ bool wxGrid::DoGridDragEvent(wxMouseEvent& event, return DoGridCellDrag(event, coords, isFirstDrag); case WXGRID_CURSOR_RESIZE_ROW: - DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow); + if ( m_dragRowOrCol != -1 ) + DoGridDragResize(event.GetPosition(), wxGridRowOperations(), gridWindow); break; case WXGRID_CURSOR_RESIZE_COL: - DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow); + if ( m_dragRowOrCol != -1 ) + DoGridDragResize(event.GetPosition(), wxGridColumnOperations(), gridWindow); break; default: @@ -4864,12 +4866,14 @@ wxGrid::DoGridCellLeftUp(wxMouseEvent& event, else if ( m_cursorMode == WXGRID_CURSOR_RESIZE_ROW ) { ChangeCursorMode(WXGRID_CURSOR_SELECT_CELL); - DoEndDragResizeRow(event, gridWindow); + if ( m_dragRowOrCol != -1 ) + DoEndDragResizeRow(event, gridWindow); } else if ( m_cursorMode == WXGRID_CURSOR_RESIZE_COL ) { ChangeCursorMode(WXGRID_CURSOR_SELECT_CELL); - DoEndDragResizeCol(event, gridWindow); + if ( m_dragRowOrCol != -1 ) + DoEndDragResizeCol(event, gridWindow); } m_dragLastPos = -1; @@ -5047,6 +5051,9 @@ void wxGrid::DoGridDragResize(const wxPoint& position, const wxGridOperations& oper, wxGridWindow* gridWindow) { + wxCHECK_RET( m_dragRowOrCol != -1, + "shouldn't be called when not drag resizing" ); + // Get the logical position from the physical one we're passed. const wxPoint logicalPos = CalcGridWindowUnscrolledPosition(position, gridWindow);