diff --git a/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml b/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml index 5a5c6d457..f41b9b272 100644 --- a/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml +++ b/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml @@ -2,13 +2,16 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:aedit="https://github.com/avaloniaui/avaloniaedit" - xmlns:controls="clr-namespace:Artemis.UI.Controls" xmlns:logs="clr-namespace:Artemis.UI.Screens.Debugger.Logs" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="Artemis.UI.Screens.Debugger.Logs.LogsDebugView" x:DataType="logs:LogsDebugViewModel"> - + \ No newline at end of file diff --git a/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml.cs b/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml.cs index 219215877..26d8ab003 100644 --- a/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml.cs +++ b/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml.cs @@ -10,50 +10,17 @@ namespace Artemis.UI.Screens.Debugger.Logs; public partial class LogsDebugView : ReactiveUserControl { - private int _lineCount; - public LogsDebugView() { - _lineCount = 0; InitializeComponent(); } - protected override void OnInitialized() { base.OnInitialized(); Dispatcher.UIThread.Post(() => LogsScrollViewer.ScrollToEnd(), DispatcherPriority.ApplicationIdle); } - // private void OnTextChanged(object? sender, EventArgs e) - // { - // if (LogTextEditor.ExtentHeight == 0) - // return; - // - // int linesAdded = LogTextEditor.LineCount - _lineCount; - // double lineHeight = LogTextEditor.ExtentHeight / LogTextEditor.LineCount; - // double outOfScreenTextHeight = LogTextEditor.ExtentHeight - LogTextEditor.VerticalOffset - LogTextEditor.ViewportHeight; - // double outOfScreenLines = outOfScreenTextHeight / lineHeight; - // - // //we need this help distance because of rounding. - // //if we scroll slightly above the end, we still want it - // //to scroll down to the new lines. - // const double GRACE_DISTANCE = 1d; - // - // //if we were at the bottom of the log and - // //if the last log event was 5 lines long - // //we will be 5 lines out sync. - // //if this is the case, scroll down. - // - // //if we are more than that out of sync, - // //the user scrolled up and we should not - // //mess with anything. - // if (_lineCount == 0 || linesAdded + GRACE_DISTANCE > outOfScreenLines) - // { - // Dispatcher.UIThread.Post(() => LogTextEditor.ScrollToEnd(), DispatcherPriority.ApplicationIdle); - // _lineCount = LogTextEditor.LineCount; - // } - // } private void Control_OnSizeChanged(object? sender, SizeChangedEventArgs e) { if (!(LogsScrollViewer.Extent.Height - LogsScrollViewer.Offset.Y - LogsScrollViewer.Bounds.Bottom <= 60)) diff --git a/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugViewModel.cs b/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugViewModel.cs index 4df1be54e..47309a3ad 100644 --- a/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugViewModel.cs +++ b/src/Artemis.UI/Screens/Debugger/Tabs/Logs/LogsDebugViewModel.cs @@ -7,7 +7,9 @@ using ReactiveUI; using Serilog.Events; using Serilog.Formatting.Display; using System.IO; +using System.Linq; using System.Reactive.Disposables; +using System.Text; using Avalonia.Controls.Documents; using Avalonia.Media; @@ -54,8 +56,14 @@ public class LogsDebugViewModel : ActivatableViewModelBase _formatter.Format(logEvent, writer); string line = writer.ToString(); + StringBuilder builder = new(); - Lines.Add(new Run(line.TrimEnd('\r', '\n') + '\n') + //hack: https://github.com/AvaloniaUI/Avalonia/issues/10913 + string paddedLine2 = line.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries) + .Aggregate(builder, (sb, s) => sb.Append(s).Append(' ', 400 - s.Length).AppendLine()) + .ToString(); + + Lines.Add(new Run(paddedLine2) { Foreground = logEvent.Level switch {