@@ -55,8 +55,8 @@ module ViewChat =
55 | None -> ()
55 | None -> ()
56 , Avalonia.Threading.DispatcherPriority.Background) |> ignore
56 , Avalonia.Threading.DispatcherPriority.Background) |> ignore
58− let private opacityTransition =
58+ let private strokeTransition =
59− DoubleTransition(Avalonia.Visual.OpacityProperty, System.TimeSpan.FromMilliseconds 500.)
59+ DoubleTransition(Avalonia.Controls.Shapes.Shape.StrokeThicknessProperty, System.TimeSpan.FromMilliseconds 800.)
61 let private messageItem m =
61 let private messageItem m =
62 let align, cols, col =
62 let align, cols, col =
@@ -82,18 +82,15 @@ module ViewChat =
82 Rectangle()
82 Rectangle()
83 .stroke(Avalonia.Media.Colors.Black)
83 .stroke(Avalonia.Media.Colors.Black)
84 .strokeThickness(4.)
84 .strokeThickness(4.)
85+ .strokeDashArray([ 4.; 2. ])
85 .isHitTestVisible(false)
86 .isHitTestVisible(false)
86− .opacity(if isSent then 0. else 1.)
87+ .classes("marching")
87− .transition (opacityTransition)
89 Rectangle()
89 Rectangle()
90 .stroke(Avalonia.Media.Colors.Black)
90 .stroke(Avalonia.Media.Colors.Black)
91− .strokeThickness(4.)
91+ .strokeThickness(if isSent then 0. else 4.)
92− .strokeDashArray([ 4.; 2. ])
93 .isHitTestVisible(false)
92 .isHitTestVisible(false)
94− .opacity(if isSent then 1. else 0.)
93+ .transition (strokeTransition)
96− .transition (opacityTransition)
97 | Incoming ->
94 | Incoming ->
98 Rectangle()
95 Rectangle()
99 .stroke(Avalonia.Media.Colors.Black)
96 .stroke(Avalonia.Media.Colors.Black)