/// <summary> /// Calculates bounds of the selection area used for selection overlay drag operation, depending on drag starting /// point coordinates and current drag coordinates. /// </summary> /// <returns>Bounds of the selection area, relative to the content scroll area.</returns> private Rect2I CalculateSelectionArea() { Rect2I selectionArea = new Rect2I(); if (dragSelectionStart.x < dragSelectionEnd.x) { selectionArea.x = dragSelectionStart.x; selectionArea.width = dragSelectionEnd.x - dragSelectionStart.x; } else { selectionArea.x = dragSelectionEnd.x; selectionArea.width = dragSelectionStart.x - dragSelectionEnd.x; } if (dragSelectionStart.y < dragSelectionEnd.y) { selectionArea.y = dragSelectionStart.y; selectionArea.height = dragSelectionEnd.y - dragSelectionStart.y; } else { selectionArea.y = dragSelectionEnd.y; selectionArea.height = dragSelectionStart.y - dragSelectionEnd.y; } Rect2I maxBounds = contentScrollArea.Layout.Bounds; maxBounds.x = 0; maxBounds.y = 0; selectionArea.Clip(maxBounds); return selectionArea; }