diff --git a/v2rayN/v2rayN.Desktop/App.axaml.cs b/v2rayN/v2rayN.Desktop/App.axaml.cs index b7cb8d74..b797c90b 100644 --- a/v2rayN/v2rayN.Desktop/App.axaml.cs +++ b/v2rayN/v2rayN.Desktop/App.axaml.cs @@ -63,6 +63,10 @@ public partial class App : Application if (desktop.MainWindow != null) { var clipboardData = await AvaUtils.GetClipboardData(desktop.MainWindow); + if (clipboardData.IsNullOrEmpty()) + { + return; + } var service = Locator.Current.GetService(); if (service != null) { diff --git a/v2rayN/v2rayN.Desktop/Common/AvaUtils.cs b/v2rayN/v2rayN.Desktop/Common/AvaUtils.cs index ab3d8d81..5b56f277 100644 --- a/v2rayN/v2rayN.Desktop/Common/AvaUtils.cs +++ b/v2rayN/v2rayN.Desktop/Common/AvaUtils.cs @@ -14,7 +14,10 @@ namespace v2rayN.Desktop.Common { var clipboard = TopLevel.GetTopLevel(owner)?.Clipboard; if (clipboard == null) + { return null; + } + return await clipboard.GetTextAsync(); } catch diff --git a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs index ee08d281..10798d01 100644 --- a/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs @@ -247,7 +247,7 @@ namespace v2rayN.Desktop.Views case EViewAction.AddServerViaClipboard: var clipboardData = await AvaUtils.GetClipboardData(this); - if (ViewModel != null) + if (clipboardData.IsNotEmpty() && ViewModel != null) { await ViewModel.AddServerViaClipboardAsync(clipboardData); } @@ -315,7 +315,7 @@ namespace v2rayN.Desktop.Views { case Key.V: var clipboardData = await AvaUtils.GetClipboardData(this); - if (ViewModel != null) + if (clipboardData.IsNotEmpty() && ViewModel != null) { await ViewModel.AddServerViaClipboardAsync(clipboardData); } diff --git a/v2rayN/v2rayN.Desktop/Views/RoutingRuleSettingWindow.axaml.cs b/v2rayN/v2rayN.Desktop/Views/RoutingRuleSettingWindow.axaml.cs index 019026c7..cc9bb9b9 100644 --- a/v2rayN/v2rayN.Desktop/Views/RoutingRuleSettingWindow.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/RoutingRuleSettingWindow.axaml.cs @@ -109,13 +109,20 @@ namespace v2rayN.Desktop.Views case EViewAction.SetClipboardData: if (obj is null) + { return false; + } + await AvaUtils.SetClipboardData(this, (string)obj); break; case EViewAction.ImportRulesFromClipboard: var clipboardData = await AvaUtils.GetClipboardData(this); - ViewModel?.ImportRulesFromClipboardAsync(clipboardData); + if (clipboardData.IsNotEmpty()) + { + ViewModel?.ImportRulesFromClipboardAsync(clipboardData); + } + break; } diff --git a/v2rayN/v2rayN/Common/WindowsUtils.cs b/v2rayN/v2rayN/Common/WindowsUtils.cs index eb2e46f6..aa9200dc 100644 --- a/v2rayN/v2rayN/Common/WindowsUtils.cs +++ b/v2rayN/v2rayN/Common/WindowsUtils.cs @@ -18,11 +18,11 @@ namespace v2rayN /// public static string? GetClipboardData() { - string? strData = string.Empty; + var strData = string.Empty; try { - IDataObject data = Clipboard.GetDataObject(); - if (data.GetDataPresent(DataFormats.UnicodeText)) + var data = Clipboard.GetDataObject(); + if (data?.GetDataPresent(DataFormats.UnicodeText) == true) { strData = data.GetData(DataFormats.UnicodeText)?.ToString(); } diff --git a/v2rayN/v2rayN/Views/MainWindow.xaml.cs b/v2rayN/v2rayN/Views/MainWindow.xaml.cs index bf94a230..5b38dea4 100644 --- a/v2rayN/v2rayN/Views/MainWindow.xaml.cs +++ b/v2rayN/v2rayN/Views/MainWindow.xaml.cs @@ -232,7 +232,10 @@ namespace v2rayN.Views case EViewAction.AddServerViaClipboard: var clipboardData = WindowsUtils.GetClipboardData(); - ViewModel?.AddServerViaClipboardAsync(clipboardData); + if (clipboardData.IsNotEmpty()) + { + ViewModel?.AddServerViaClipboardAsync(clipboardData); + } break; case EViewAction.AdjustMainLvColWidth: @@ -284,11 +287,20 @@ namespace v2rayN.Views { case Key.V: if (Keyboard.FocusedElement is TextBox) + { return; + } + var clipboardData = WindowsUtils.GetClipboardData(); - var service = Locator.Current.GetService(); - if (service != null) - _ = service.AddServerViaClipboardAsync(clipboardData); + if (clipboardData.IsNotEmpty()) + { + var service = Locator.Current.GetService(); + if (service != null) + { + _ = service.AddServerViaClipboardAsync(clipboardData); + } + } + break; case Key.S: diff --git a/v2rayN/v2rayN/Views/RoutingRuleSettingWindow.xaml.cs b/v2rayN/v2rayN/Views/RoutingRuleSettingWindow.xaml.cs index 922e265b..aac11c23 100644 --- a/v2rayN/v2rayN/Views/RoutingRuleSettingWindow.xaml.cs +++ b/v2rayN/v2rayN/Views/RoutingRuleSettingWindow.xaml.cs @@ -110,7 +110,10 @@ namespace v2rayN.Views case EViewAction.ImportRulesFromClipboard: var clipboardData = WindowsUtils.GetClipboardData(); - ViewModel?.ImportRulesFromClipboardAsync(clipboardData); + if (clipboardData.IsNotEmpty()) + { + ViewModel?.ImportRulesFromClipboardAsync(clipboardData); + } break; }