// Internal helper macros for simpler use of that function
static int CoordToRowOrCol(int coord, int defaultDist, int minDist,
- wxArrayInt BorderArray, bool maxOnOverflow);
+ const wxArrayInt& BorderArray, bool maxOnOverflow);
#define internalXToCol(x) CoordToRowOrCol(x, m_defaultColWidth, \
WXGRID_MIN_COL_WIDTH, \
if ( event.Dragging() )
{
- m_isDragging = TRUE;
+ if (!m_isDragging)
+ {
+ m_isDragging = TRUE;
+ m_rowLabelWin->CaptureMouse();
+ }
if ( event.LeftIsDown() )
{
return;
}
- m_isDragging = FALSE;
+ if ( m_isDragging && (event.Entering() || event.Leaving()) )
+ return;
+ if (m_isDragging)
+ {
+ m_rowLabelWin->ReleaseMouse();
+ m_isDragging = FALSE;
+ }
// ------------ Entering or leaving the window
//
if ( event.Dragging() )
{
- m_isDragging = TRUE;
+ if (!m_isDragging)
+ {
+ m_isDragging = TRUE;
+ m_colLabelWin->CaptureMouse();
+ }
if ( event.LeftIsDown() )
{
return;
}
- m_isDragging = FALSE;
+ if ( m_isDragging && (event.Entering() || event.Leaving()) )
+ return;
+ if (m_isDragging)
+ {
+ m_colLabelWin->ReleaseMouse();
+ m_isDragging = FALSE;
+ }
// ------------ Entering or leaving the window
//
// of m_rowBottoms/m_ColRights to speed up the search!
static int CoordToRowOrCol(int coord, int defaultDist, int minDist,
- wxArrayInt BorderArray, bool maxOnOverflow)
+ const wxArrayInt& BorderArray, bool maxOnOverflow)
{
if (!defaultDist)
defaultDist = 1;
- int i_max = coord / defaultDist,
- i_min = 0;
+ size_t i_max = coord / defaultDist,
+ i_min = 0;
if (BorderArray.IsEmpty())
{
return i_max;
i_max = BorderArray.GetCount() - 1;
}
if ( coord >= BorderArray[i_max])
- return (maxOnOverflow ? i_max : -1);
+ return maxOnOverflow ? (int)i_max : -1;
if ( coord < BorderArray[0] )
return 0;