From 426e2d459c24bdaea1d15cc5e530ec01b6353eb0 Mon Sep 17 00:00:00 2001 From: Antoine Aflalo Date: Thu, 28 Apr 2016 22:42:00 -0400 Subject: [PATCH] Fix always showing Tooltip See #88 --- .../TooltipInfoManager/TooltipInfoManager.cs | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/SoundSwitch/Framework/TooltipInfoManager/TooltipInfoManager.cs b/SoundSwitch/Framework/TooltipInfoManager/TooltipInfoManager.cs index 612ad053ec..5bab8a9b56 100644 --- a/SoundSwitch/Framework/TooltipInfoManager/TooltipInfoManager.cs +++ b/SoundSwitch/Framework/TooltipInfoManager/TooltipInfoManager.cs @@ -1,4 +1,5 @@ -using System.Windows.Forms; +using System; +using System.Windows.Forms; using SoundSwitch.Framework.Configuration; using SoundSwitch.Framework.TooltipInfoManager.TootipInfo; using SoundSwitch.Properties; @@ -9,11 +10,14 @@ public class TooltipInfoManager { private readonly NotifyIcon _icon; private readonly TooltipInfoFactory _tooltipInfoFactory; + private bool _isBallontipVisible; public TooltipInfoManager(NotifyIcon icon) { _icon = icon; _tooltipInfoFactory = new TooltipInfoFactory(); + _icon.BalloonTipShown += IconOnBalloonTipShown; + _icon.BalloonTipClosed += IconOnBalloonTipClosed; } public ToolTipInfoTypeEnum CurrentTooltipInfo @@ -26,18 +30,38 @@ public ToolTipInfoTypeEnum CurrentTooltipInfo } } + private void IconOnBalloonTipClosed(object sender, EventArgs eventArgs) + { + _isBallontipVisible = false; + } + + private void IconOnBalloonTipShown(object sender, EventArgs eventArgs) + { + _isBallontipVisible = true; + } + + /// /// Show the tooltip with the NotifyIcon /// public void ShowTooltipInfo() { + if (_isBallontipVisible) + return; + var tooltipInfo = _tooltipInfoFactory.Get(CurrentTooltipInfo); var text = tooltipInfo.TextToDisplay(); if (text == null) return; - _icon.ShowBalloonTip(1000, TooltipInfo.titleTooltip, text, ToolTipIcon.Info); + _icon.ShowBalloonTip(1000, $"{Application.ProductName}: {TooltipInfo.titleTooltip}", text, ToolTipIcon.Info); + } + + ~TooltipInfoManager() + { + _icon.BalloonTipClosed -= IconOnBalloonTipClosed; + _icon.BalloonTipShown -= IconOnBalloonTipShown; } } } \ No newline at end of file