From de617de3d72f310126ab767571642f3a6f8fab04 Mon Sep 17 00:00:00 2001 From: affederaffe <68356204+affederaffe@users.noreply.github.com> Date: Tue, 23 May 2023 12:39:53 +0200 Subject: [PATCH] Don't create DBus Tray Icon when not connected --- src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs b/src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs index 43ae48341c..9abf4f97a7 100644 --- a/src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs +++ b/src/Avalonia.FreeDesktop/DBusTrayIconImpl.cs @@ -4,7 +4,6 @@ using System.Threading.Tasks; using Avalonia.Controls.Platform; using Avalonia.Logging; using Avalonia.Platform; -using Avalonia.Threading; using Tmds.DBus.Protocol; using Tmds.DBus.SourceGenerator; @@ -57,15 +56,6 @@ namespace Avalonia.FreeDesktop WatchAsync(); } - private void InitializeSNWService() - { - if (_connection is null || _isDisposed) - return; - - _statusNotifierWatcher = new OrgKdeStatusNotifierWatcher(_connection, "org.kde.StatusNotifierWatcher", "/StatusNotifierWatcher"); - _serviceConnected = true; - } - private async void WatchAsync() { try @@ -84,13 +74,13 @@ namespace Avalonia.FreeDesktop private void OnNameChange(string? newOwner) { - if (_isDisposed) + if (_isDisposed || _connection is null) return; if (!_serviceConnected & newOwner is not null) { _serviceConnected = true; - InitializeSNWService(); + _statusNotifierWatcher = new OrgKdeStatusNotifierWatcher(_connection, "org.kde.StatusNotifierWatcher", "/StatusNotifierWatcher"); DestroyTrayIcon(); @@ -182,8 +172,11 @@ namespace Avalonia.FreeDesktop public void SetIsVisible(bool visible) { - if (_isDisposed) + if (_isDisposed || !_serviceConnected) + { + _isVisible = visible; return; + } switch (visible) {