Skip to content

Commit 95575f9

Browse files
committed
boost(banner): Always have the latest banner at the top of the stack
Better user experience this way and easier to manage
1 parent e19a21d commit 95575f9

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

SoundSwitch/Framework/Banner/BannerForm.cs

+3-5
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,13 @@ public BannerForm()
7878
/// Called internally to configure pass notification parameters
7979
/// </summary>
8080
/// <param name="data">The configuration data to setup the notification UI</param>
81-
/// <param name="positionOffset"></param>
82-
internal void SetData(BannerData data, int positionOffset)
81+
internal void SetData(BannerData data)
8382
{
8483
if (_currentData != null && _currentData.Priority > data.Priority)
8584
{
8685
return;
8786
}
8887

89-
_currentOffset = positionOffset;
9088
_currentData = data;
9189
if (_timerHide == null)
9290
{
@@ -116,7 +114,7 @@ internal void SetData(BannerData data, int positionOffset)
116114

117115
var screen = GetScreen();
118116

119-
Location = data.Position.GetScreenPosition(screen, Height, Width, positionOffset);
117+
Location = data.Position.GetScreenPosition(screen, Height, Width, _currentOffset);
120118

121119
_timerHide.Enabled = true;
122120

@@ -130,7 +128,7 @@ internal void SetData(BannerData data, int positionOffset)
130128
public void UpdateLocation(int positionChange)
131129
{
132130
var screen = GetScreen();
133-
_currentOffset -= positionChange;
131+
_currentOffset += positionChange;
134132
Location = _currentData.Position.GetScreenPosition(screen, Height, Width, _currentOffset);
135133
}
136134

SoundSwitch/Framework/Banner/BannerManager.cs

+6-8
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ namespace SoundSwitch.Framework.Banner
2424
public class BannerManager
2525
{
2626
private static System.Threading.SynchronizationContext _syncContext;
27-
private int _currentOffset = 0;
2827
private readonly Dictionary<Guid, BannerForm> _bannerForms = new();
28+
private const int SPACING = 10;
2929

3030
/// <summary>
3131
/// Show a banner notification with the given data
@@ -39,15 +39,13 @@ public void ShowNotification(BannerData data)
3939
var banner = new BannerForm();
4040
banner.Disposed += (s, e) =>
4141
{
42-
_currentOffset -= banner.Height;
4342
_bannerForms.Remove(banner.Id);
44-
foreach (var bannerForm in _bannerForms.Values)
45-
{
46-
bannerForm.UpdateLocation(banner.Height);
47-
}
4843
};
49-
banner.SetData(data, _currentOffset);
50-
_currentOffset += banner.Height;
44+
banner.SetData(data);
45+
foreach (var bannerForm in _bannerForms.Values)
46+
{
47+
bannerForm.UpdateLocation(banner.Height + SPACING);
48+
}
5149
_bannerForms.Add(banner.Id, banner);
5250
}, null);
5351
}

0 commit comments

Comments
 (0)