adapting grid-cell dragging according to discussion on wx-dev along the behaviour of treecontrolg

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70825 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2012-03-06 10:23:44 +00:00
parent e0564c1c2f
commit 0cbcb12d8f
2 changed files with 23 additions and 6 deletions

View File

@@ -2160,7 +2160,7 @@ private:
// --------------------------------
// process mouse drag event in WXGRID_CURSOR_SELECT_CELL mode
void DoGridCellDrag(wxMouseEvent& event,
bool DoGridCellDrag(wxMouseEvent& event,
const wxGridCellCoords& coords,
bool isFirstDrag);

View File

@@ -3647,13 +3647,15 @@ void wxGrid::ChangeCursorMode(CursorMode mode,
// grid mouse event processing
// ----------------------------------------------------------------------------
void
bool
wxGrid::DoGridCellDrag(wxMouseEvent& event,
const wxGridCellCoords& coords,
bool isFirstDrag)
{
bool performDefault = true ;
if ( coords == wxGridNoCellCoords )
return; // we're outside any valid cell
return performDefault; // we're outside any valid cell
// Hide the edit control, so it won't interfere with drag-shrinking.
if ( IsCellEditControlShown() )
@@ -3678,8 +3680,11 @@ wxGrid::DoGridCellDrag(wxMouseEvent& event,
if ( m_selectedBlockCorner == wxGridNoCellCoords)
m_selectedBlockCorner = coords;
SendEvent(wxEVT_GRID_CELL_BEGIN_DRAG, coords, event);
return;
// if event is handled by user code, no further processing
if ( SendEvent(wxEVT_GRID_CELL_BEGIN_DRAG, coords, event) == 1 )
performDefault = false;
return performDefault;
}
}
@@ -3690,6 +3695,8 @@ wxGrid::DoGridCellDrag(wxMouseEvent& event,
// we don't handle the other key modifiers
event.Skip();
}
return performDefault;
}
void wxGrid::DoGridLineDrag(wxMouseEvent& event, const wxGridOperations& oper)
@@ -3742,7 +3749,9 @@ void wxGrid::DoGridDragEvent(wxMouseEvent& event, const wxGridCellCoords& coords
switch ( m_cursorMode )
{
case WXGRID_CURSOR_SELECT_CELL:
DoGridCellDrag(event, coords, isFirstDrag);
// no further handling if handled by user
if ( DoGridCellDrag(event, coords, isFirstDrag) == false )
return;
break;
case WXGRID_CURSOR_RESIZE_ROW:
@@ -4396,6 +4405,14 @@ wxGrid::SendEvent(const wxEventType type,
mouseEv.GetY() + GetColLabelSize(),
false,
mouseEv);
if ( type == wxEVT_GRID_CELL_BEGIN_DRAG )
{
// by default the dragging is not supported, the user code must
// explicitly allow the event for it to take place
gridEvt.Veto();
}
claimed = GetEventHandler()->ProcessEvent(gridEvt);
vetoed = !gridEvt.IsAllowed();
}