private void RecalcBorderRange()
{
if (IsEmpty())
{
mRangeHighlight.Range = Range.Empty;
}
else
{
if (BorderMode == SelectionBorderMode.FocusCell)
{
if (m_ActivePosition.IsEmpty() == false)
{
mRangeHighlight.Range = Grid.PositionToCellRange(m_ActivePosition);
}
else
{
mRangeHighlight.Range = Range.Empty;
}
}
else if (BorderMode == SelectionBorderMode.FocusRange)
{
RangeCollection selectedRanges = GetRanges();
for (int i = 0; i < selectedRanges.Count; i++)
{
Range range = selectedRanges[i];
if (range.Contains(m_ActivePosition))
{
mRangeHighlight.Range = range;
return;
}
}
mRangeHighlight.Range = Range.Empty;
}
else if (BorderMode == SelectionBorderMode.UniqueRange)
{
RangeCollection selectedRanges = GetRanges();
if (selectedRanges.Count == 1)
{
mRangeHighlight.Range = selectedRanges[0];
}
else
{
mRangeHighlight.Range = Range.Empty;
}
}
else if (BorderMode == SelectionBorderMode.Auto)
{
RangeCollection selectedRanges = GetRanges();
if (selectedRanges.Count == 1)
{
mRangeHighlight.Range = selectedRanges[0];
}
else if (m_ActivePosition.IsEmpty() == false)
{
mRangeHighlight.Range = Grid.PositionToCellRange(m_ActivePosition);
}
else
{
mRangeHighlight.Range = Range.Empty;
}
}
else
{
mRangeHighlight.Range = Range.Empty;
}
//Set if the selected cells have the OwnerDrawSelectionBorder enabled.
if (mRangeHighlight.Range.ColumnsCount == 1 && mRangeHighlight.Range.RowsCount == 1)
{
SourceGrid.Cells.ICellVirtual cell = Grid.GetCell(mRangeHighlight.Range.Start);
if (cell != null && cell.View.OwnerDrawSelectionBorder)
{
mRangeHighlight.Range = Range.Empty;
}
}
}
}