From 4f8192768580116d5ee5d80ae3b7535cc4c6443e Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Fri, 17 Jan 2025 21:52:09 +0100 Subject: [PATCH 1/3] Fix: Don't allow reconnect while connecting --- .../Controls/DragablzTabHostWindow.xaml.cs | 31 +++++++++---------- .../Controls/RemoteDesktopControl.xaml.cs | 8 +++++ .../ViewModels/RemoteDesktopHostViewModel.cs | 4 +-- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/Source/NETworkManager/Controls/DragablzTabHostWindow.xaml.cs b/Source/NETworkManager/Controls/DragablzTabHostWindow.xaml.cs index 8558a9b368..1853dbecc4 100644 --- a/Source/NETworkManager/Controls/DragablzTabHostWindow.xaml.cs +++ b/Source/NETworkManager/Controls/DragablzTabHostWindow.xaml.cs @@ -1,4 +1,12 @@ -using System; +using Dragablz; +using MahApps.Metro.Controls.Dialogs; +using NETworkManager.Localization; +using NETworkManager.Localization.Resources; +using NETworkManager.Models; +using NETworkManager.Models.RemoteDesktop; +using NETworkManager.Settings; +using NETworkManager.Utilities; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; @@ -9,15 +17,6 @@ using System.Windows.Forms; using System.Windows.Input; using System.Windows.Interop; -using Dragablz; -using MahApps.Metro.Controls.Dialogs; -using NETworkManager.Localization; -using NETworkManager.Localization.Resources; -using NETworkManager.Models; -using NETworkManager.Models.RemoteDesktop; -using NETworkManager.Settings; -using NETworkManager.Utilities; -using Application = System.Windows.Application; namespace NETworkManager.Controls; @@ -71,7 +70,7 @@ private async void FocusEmbeddedWindow() // Focus embedded window in the selected tab (((DragablzTabItem)tabablzControl.SelectedItem)?.View as IEmbeddedWindow)?.FocusEmbeddedWindow(); - + break; } } @@ -169,7 +168,7 @@ private bool RemoteDesktop_IsConnected_CanExecute(object view) private bool RemoteDesktop_IsDisconnected_CanExecute(object view) { if (view is RemoteDesktopControl control) - return !control.IsConnected; + return !control.IsConnected && !control.IsConnecting; return false; } @@ -376,8 +375,8 @@ private void DragablzTabHostWindow_OnClosing(object sender, CancelEventArgs e) { // Find all TabablzControl in the active window foreach (var tabablzControl in VisualTreeHelper.FindVisualChildren(this)) - foreach (var tabItem in tabablzControl.Items.OfType()) - ((IDragablzTabItem)tabItem.View).CloseTab(); + foreach (var tabItem in tabablzControl.Items.OfType()) + ((IDragablzTabItem)tabItem.View).CloseTab(); // Reset the dragging state switch (ApplicationName) @@ -481,14 +480,14 @@ private IntPtr HwndHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref } private void UpdateOnWindowResize() - { + { // Find all TabablzControl foreach (var tabablzControl in VisualTreeHelper.FindVisualChildren(this)) { // Skip if no items if (tabablzControl.Items.Count == 0) continue; - + foreach (var item in tabablzControl.Items.OfType()) { if (item.View is RemoteDesktopControl control) diff --git a/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs b/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs index 98d9e24d8d..2646cd4668 100644 --- a/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs +++ b/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs @@ -8,6 +8,7 @@ using NETworkManager.Settings; using NETworkManager.Utilities; using System; +using System.Diagnostics; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; @@ -65,6 +66,8 @@ public bool IsConnected if (value == _isConnected) return; + Debug.WriteLine("IsConnected: " + value); + _isConnected = value; OnPropertyChanged(); } @@ -80,6 +83,8 @@ public bool IsConnecting if (value == _isConnecting) return; + Debug.WriteLine("IsConnecting: " + value); + _isConnecting = value; OnPropertyChanged(); } @@ -327,6 +332,9 @@ private void Connect() private void Reconnect() { + if (IsConnecting) + return; + if (IsConnected) return; diff --git a/Source/NETworkManager/ViewModels/RemoteDesktopHostViewModel.cs b/Source/NETworkManager/ViewModels/RemoteDesktopHostViewModel.cs index 66d4ec1058..06b8e44942 100644 --- a/Source/NETworkManager/ViewModels/RemoteDesktopHostViewModel.cs +++ b/Source/NETworkManager/ViewModels/RemoteDesktopHostViewModel.cs @@ -245,7 +245,7 @@ private bool IsConnected_CanExecute(object view) private bool IsDisconnected_CanExecute(object view) { if (view is RemoteDesktopControl control) - return !control.IsConnected; + return !control.IsConnected && !control.IsConnecting; return false; } @@ -281,7 +281,7 @@ private void FullscreenAction(object view) private void AdjustScreenAction(object view) { if (view is RemoteDesktopControl control) - control.AdjustScreen(force:true); + control.AdjustScreen(force: true); } public ICommand SendCtrlAltDelCommand => new RelayCommand(SendCtrlAltDelAction, IsConnected_CanExecute); From 672fc7d00887503779dce1343691ab62fb035a0b Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Fri, 17 Jan 2025 21:52:45 +0100 Subject: [PATCH 2/3] Chore: Remove debug --- Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs b/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs index 2646cd4668..3ad004fdac 100644 --- a/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs +++ b/Source/NETworkManager/Controls/RemoteDesktopControl.xaml.cs @@ -8,7 +8,6 @@ using NETworkManager.Settings; using NETworkManager.Utilities; using System; -using System.Diagnostics; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; @@ -66,8 +65,6 @@ public bool IsConnected if (value == _isConnected) return; - Debug.WriteLine("IsConnected: " + value); - _isConnected = value; OnPropertyChanged(); } @@ -83,8 +80,6 @@ public bool IsConnecting if (value == _isConnecting) return; - Debug.WriteLine("IsConnecting: " + value); - _isConnecting = value; OnPropertyChanged(); } From 3e95a43acb1f1ff06836108877be6902b972b83e Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Fri, 17 Jan 2025 21:58:38 +0100 Subject: [PATCH 3/3] Docs: #2988 --- Website/docs/changelog/next-release.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index f21450391a..dbc1144ea0 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -60,6 +60,10 @@ Release date: **xx.xx.2024** - Fixed two `NullReferenceException` in ICMP & NETBIOS for some IP addresses. [#2964](https://github.com/BornToBeRoot/NETworkManager/pull/2964) +- **Remote Desktop** + + - Fixed an app crash when a reconnect was triggered while it was already trying to connect. [#2988](https://github.com/BornToBeRoot/NETworkManager/pull/2988) + ## Dependencies, Refactoring & Documentation - Migrated code for some loading indicators from the library [LoadingIndicators.WPF] (https://github.com/zeluisping/LoadingIndicators.WPF) to the NETworkManager repo, as the original repo looks unmaintained and has problems with MahApps.Metro version 2 and later. [#2963](https://github.com/BornToBeRoot/NETworkManager/pull/2963)