void FDockingDragOperation::SetHoveredTarget( const FDockTarget& InTarget, const FInputEvent& InputEvent ) { if ( HoveredDockTarget != InTarget ) { HoveredDockTarget = InTarget; TSharedPtr<SDockingNode> HoveredTargetNode = InTarget.TargetNode.Pin(); FCurveSequence Sequence; Sequence.AddCurve( 0, 0.1f, ECurveEaseFunction::QuadOut ); if ( HoveredTargetNode.IsValid() ) { const FGeometry TargetDockNodeGeometry = InputEvent.FindGeometry( HoveredTargetNode.ToSharedRef() ); FSlateRect TabStackArea = GetPreviewAreaForDirection( TargetDockNodeGeometry.GetClippingRect(), InTarget.DockDirection ); const float TargetOpacity = CursorDecoratorWindow->GetOpacity(); CursorDecoratorWindow->MorphToShape( Sequence, TargetOpacity, TabStackArea ); CursorDecoratorWindow->SetColorAndOpacity( FCoreStyle::Get().GetColor( TEXT("Docking.Cross.PreviewWindowTint") ) ); TabBeingDragged->SetDraggedOverDockArea( HoveredTargetNode->GetDockArea() ); } else { CursorDecoratorWindow->MorphToShape( Sequence, CursorDecoratorWindow->GetOpacity(), CursorDecoratorWindow->GetMorphTargetShape() ); CursorDecoratorWindow->SetColorAndOpacity( FLinearColor::White ); TabBeingDragged->SetDraggedOverDockArea( NULL ); } } }