From f97c0eacffd53b6a5a0c6f31229f21a9e7a02c0c Mon Sep 17 00:00:00 2001 From: mantaionut Date: Tue, 4 Mar 2025 17:18:35 +0200 Subject: [PATCH] Cancel previous ShowToolbar task if a new one is triggered --- .../poweraccent/PowerAccent.Core/PowerAccent.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs b/src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs index c2f0698f257a..7a8e094eedf9 100644 --- a/src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs +++ b/src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs @@ -41,6 +41,8 @@ public partial class PowerAccent : IDisposable private readonly CharactersUsageInfo _usageInfo; + private CancellationTokenSource _cancellationTokenSource; + public PowerAccent() { Logger.InitializeLogger("\\QuickAccent\\Logs"); @@ -100,9 +102,18 @@ private void ShowToolbar(LetterKey letterKey) _characterDescriptions = GetCharacterDescriptions(_characters); _showUnicodeDescription = _settingService.ShowUnicodeDescription; - Task.Delay(_settingService.InputTime).ContinueWith( + _cancellationTokenSource?.Cancel(); + _cancellationTokenSource = new CancellationTokenSource(); + + Task.Delay(_settingService.InputTime, _cancellationTokenSource.Token).ContinueWith( t => { + // Skip if the task was cancelled. + if (t.IsCanceled) + { + return; + } + if (_visible) { OnChangeDisplay?.Invoke(true, _characters);