diff --git a/src/Artemis.Core/Models/Profile/Layer.cs b/src/Artemis.Core/Models/Profile/Layer.cs index 85683eb49..58c13265f 100644 --- a/src/Artemis.Core/Models/Profile/Layer.cs +++ b/src/Artemis.Core/Models/Profile/Layer.cs @@ -18,7 +18,7 @@ public sealed class Layer : RenderProfileElement { private const string BROKEN_STATE_BRUSH_NOT_FOUND = "Failed to load layer brush, ensure the plugin is enabled"; private const string BROKEN_STATE_INIT_FAILED = "Failed to initialize layer brush"; - + private readonly List _renderCopies = new(); private LayerGeneralProperties _general = new(); private LayerTransformProperties _transform = new(); @@ -735,6 +735,9 @@ public sealed class Layer : RenderProfileElement if (Disposed) throw new ObjectDisposedException("Layer"); + if (_leds.Contains(led)) + return; + _leds.Add(led); CalculateRenderProperties(); } @@ -761,7 +764,9 @@ public sealed class Layer : RenderProfileElement if (Disposed) throw new ObjectDisposedException("Layer"); - _leds.Remove(led); + if (!_leds.Remove(led)) + return; + CalculateRenderProperties(); } @@ -773,6 +778,9 @@ public sealed class Layer : RenderProfileElement if (Disposed) throw new ObjectDisposedException("Layer"); + if (!_leds.Any()) + return; + _leds.Clear(); CalculateRenderProperties(); } @@ -790,7 +798,7 @@ public sealed class Layer : RenderProfileElement { ArtemisLed? match = availableLeds.FirstOrDefault(a => a.Device.Identifier == ledEntity.DeviceIdentifier && a.RgbLed.Id.ToString() == ledEntity.LedName); - if (match != null) + if (match != null && !leds.Contains(match)) leds.Add(match); else _missingLeds.Add(ledEntity); diff --git a/src/Artemis.UI/Screens/Settings/Tabs/AccountTabView.axaml b/src/Artemis.UI/Screens/Settings/Tabs/AccountTabView.axaml index 4339aaf79..c27ce59bc 100644 --- a/src/Artemis.UI/Screens/Settings/Tabs/AccountTabView.axaml +++ b/src/Artemis.UI/Screens/Settings/Tabs/AccountTabView.axaml @@ -5,6 +5,7 @@ xmlns:settings="clr-namespace:Artemis.UI.Screens.Settings" xmlns:asyncImageLoader="clr-namespace:AsyncImageLoader;assembly=AsyncImageLoader.Avalonia" xmlns:loaders="clr-namespace:AsyncImageLoader.Loaders;assembly=AsyncImageLoader.Avalonia" + xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="800" x:Class="Artemis.UI.Screens.Settings.AccountTabView" x:DataType="settings:AccountTabViewModel"> @@ -34,9 +35,9 @@ - + - + @@ -45,7 +46,7 @@ - + @@ -54,11 +55,27 @@ + + + + Credentials + + + +