private static IndexRange ChangeRangeSizeToEncompass(IndexRange range1, IndexRange range2)
{
var startPosition1 = range1.StartOffset;
var start1 = range1.StartValue;
var endPosition1 = range1.EndOffset;
var end1 = range1.EndValue;
var startPosition2 = range2.StartOffset;
var start2 = range2.StartValue;
var endPosition2 = range2.EndOffset;
var end2 = range2.EndValue;
if (!start1.Equals(IndexRange.FirstInSet)) {
if (!start2.Equals(IndexRange.FirstInSet)) {
var cell = start1;
int c = cell.CompareTo(start2);
if (c > 0 ||
c == 0 && startPosition1 == RangeFieldOffset.AfterLastValue &&
startPosition2 == RangeFieldOffset.FirstValue) {
start1 = start2;
startPosition1 = startPosition2;
}
} else {
start1 = start2;
startPosition1 = startPosition2;
}
}
if (!end1.Equals(IndexRange.LastInSet)) {
if (!end2.Equals(IndexRange.LastInSet)) {
var cell = end1;
int c = cell.CompareTo(end2);
if (c < 0 ||
c == 0 && endPosition1 == RangeFieldOffset.BeforeFirstValue &&
endPosition2 == RangeFieldOffset.LastValue) {
end1 = end2;
endPosition1 = endPosition2;
}
} else {
end1 = end2;
endPosition1 = endPosition2;
}
}
return new IndexRange(startPosition1, start1, endPosition1, end1);
}