[PR #19598] Add smooth tab reorder animation during drag #31886

Closed
opened 2026-01-31 09:50:10 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/microsoft/terminal/pull/19598

State: closed
Merged: No


Summary of the Pull Request

Adds smooth tab reorder animation during same-window tab dragging. When a tab is dragged, other tabs animate to show where the tab will be inserted, similar to Chrome/Edge behavior.

References and Relevant Issues

  • Related to #14900 (Tab drag/drop/tear-out gaps megathread)

Detailed Description of the Pull Request / Additional comments

  • Implements TabReorderAnimator class that uses TranslateTransform to animate tabs
  • Same-window drags: tabs shift left/right to create visual gap at insertion point
  • Cross-window drags: also animates to show insertion point
  • On drop: transforms snap back immediately to avoid conflicting with TabView's reorder animation
  • Respects DisableAnimations global setting (checked at init and on settings reload)
  • Disables TabView's built-in ItemContainerTransitions during drag to prevent conflicts

Validation Steps Performed

  • Same-window tab reordering animates smoothly
  • Cross-window tab drops animate correctly
  • Animation respects DisableAnimations setting
  • Drag leave resets animations properly
  • Rapid pointer movement doesn't leave tabs stuck (storyboard conflicts resolved)
  • Settings reload updates animation preference

PR Checklist

**Original Pull Request:** https://github.com/microsoft/terminal/pull/19598 **State:** closed **Merged:** No --- ## Summary of the Pull Request Adds smooth tab reorder animation during same-window tab dragging. When a tab is dragged, other tabs animate to show where the tab will be inserted, similar to Chrome/Edge behavior. ## References and Relevant Issues - Related to #14900 (Tab drag/drop/tear-out gaps megathread) ## Detailed Description of the Pull Request / Additional comments - Implements `TabReorderAnimator` class that uses `TranslateTransform` to animate tabs - Same-window drags: tabs shift left/right to create visual gap at insertion point - Cross-window drags: also animates to show insertion point - On drop: transforms snap back immediately to avoid conflicting with TabView's reorder animation - Respects `DisableAnimations` global setting (checked at init and on settings reload) - Disables TabView's built-in `ItemContainerTransitions` during drag to prevent conflicts ## Validation Steps Performed - [x] Same-window tab reordering animates smoothly - [x] Cross-window tab drops animate correctly - [x] Animation respects DisableAnimations setting - [x] Drag leave resets animations properly - [x] Rapid pointer movement doesn't leave tabs stuck (storyboard conflicts resolved) - [x] Settings reload updates animation preference ## PR Checklist - [x] Related to #14900 - [x] Tests added/passed (manual validation - UI animation feature) - [x] Documentation updated (N/A - internal implementation) - [x] Schema updated (N/A - no new settings)
claunia added the pull-request label 2026-01-31 09:50:10 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#31886