/// <inheritdoc /> public override void OnMouseMove(Vector2 location) { // Cache mouse MousePosition = location; // Check if mouse is down if (IsMouseLeftButtonDown) { // Check if mouse is outside the header if (!HeaderRectangle.Contains(location)) { // Clear flag IsMouseLeftButtonDown = false; // Check tab under the mouse if (!IsMouseDownOverCross && MouseDownWindow != null) { StartDrag(MouseDownWindow); } MouseDownWindow = null; } // Check if has more than one tab to change order else if (MouseDownWindow != null && _panel.TabsCount > 1) { // Check if mouse left current tab rect Rectangle currWinRect; GetTabRect(MouseDownWindow, out currWinRect); if (!currWinRect.Contains(location)) { int index = _panel.GetTabIndex(MouseDownWindow); // Check if move right or left if (location.X < currWinRect.X) { // Move left _panel.MoveTabLeft(index); } else if (_panel.LastTab != MouseDownWindow) { // Move right _panel.MoveTabRight(index); } // Update _panel.PerformLayout(); } } } base.OnMouseMove(location); }