diff --git a/src/settings-ui/Settings.UI.Controls/QuickAccess/QuickAccessLauncher.cs b/src/settings-ui/Settings.UI.Controls/QuickAccess/QuickAccessLauncher.cs index bf3ce1e9608b..9259f350d45d 100644 --- a/src/settings-ui/Settings.UI.Controls/QuickAccess/QuickAccessLauncher.cs +++ b/src/settings-ui/Settings.UI.Controls/QuickAccess/QuickAccessLauncher.cs @@ -133,6 +133,13 @@ public virtual bool Launch(ModuleType moduleType) eventHandle.Set(); } + return true; + case ModuleType.MouseWithoutBorders: + using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.MWBReconnectEvent())) + { + eventHandle.Set(); + } + return true; default: return false; diff --git a/src/settings-ui/Settings.UI.Controls/QuickAccess/QuickAccessViewModel.cs b/src/settings-ui/Settings.UI.Controls/QuickAccess/QuickAccessViewModel.cs index e32ae0d4647e..1cb6e4eaad28 100644 --- a/src/settings-ui/Settings.UI.Controls/QuickAccess/QuickAccessViewModel.cs +++ b/src/settings-ui/Settings.UI.Controls/QuickAccess/QuickAccessViewModel.cs @@ -76,6 +76,7 @@ private void InitializeItems() AddFlyoutMenuItem(ModuleType.Hosts); AddFlyoutMenuItem(ModuleType.KeyboardManager); AddFlyoutMenuItem(ModuleType.LightSwitch); + AddFlyoutMenuItem(ModuleType.MouseWithoutBorders); // AddFlyoutMenuItem(ModuleType.PowerDisplay); // TEMPORARILY_DISABLED: PowerDisplay AddFlyoutMenuItem(ModuleType.PowerLauncher); @@ -169,6 +170,7 @@ private string GetModuleToolTip(ModuleType moduleType) ModuleType.Workspaces => SettingsRepository.GetInstance(SettingsUtils.Default).SettingsConfig.Properties.Hotkey.Value.ToString(), ModuleType.MeasureTool => SettingsRepository.GetInstance(SettingsUtils.Default).SettingsConfig.Properties.ActivationShortcut.ToString(), ModuleType.ShortcutGuide => GetShortcutGuideToolTip(), + ModuleType.MouseWithoutBorders => SettingsRepository.GetInstance(SettingsUtils.Default).SettingsConfig.Properties.ReconnectShortcut.ToString(), _ => string.Empty, }; } diff --git a/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs index 3d68dd9e2515..8bbb4064db80 100644 --- a/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs @@ -7,6 +7,7 @@ using System.Collections.ObjectModel; using System.IO.Abstractions; using System.Linq; +using System.Threading; using System.Threading.Tasks; using CommunityToolkit.WinUI.Controls; using global::PowerToys.GPOWrapper; @@ -23,6 +24,7 @@ using Microsoft.UI.Dispatching; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; +using PowerToys.Interop; using Settings.UI.Library; namespace Microsoft.PowerToys.Settings.UI.ViewModels @@ -503,6 +505,7 @@ private ObservableCollection GetModuleItems(ModuleType modu ModuleType.MouseHighlighter => GetModuleItemsMouseHighlighter(), ModuleType.MouseJump => GetModuleItemsMouseJump(), ModuleType.MousePointerCrosshairs => GetModuleItemsMousePointerCrosshairs(), + ModuleType.MouseWithoutBorders => GetModuleItemsMouseWithoutBorders(), ModuleType.Peek => GetModuleItemsPeek(), ModuleType.PowerDisplay => GetModuleItemsPowerDisplay(), ModuleType.PowerLauncher => GetModuleItemsPowerLauncher(), @@ -679,6 +682,22 @@ private ObservableCollection GetModuleItemsMousePointerCros return new ObservableCollection(list); } + private ObservableCollection GetModuleItemsMouseWithoutBorders() + { + var list = new List + { + new DashboardModuleButtonItem() + { + ButtonTitle = resourceLoader.GetString("MouseWithoutBorders_ReconnectButton/Text"), + IsButtonDescriptionVisible = true, + ButtonDescription = resourceLoader.GetString("MouseWithoutBorders_ReconnectTooltip/Text"), + ButtonGlyph = "ms-appx:///Assets/Settings/Icons/MouseWithoutBorders.png", + ButtonClickHandler = MouseWithoutBordersReconnectClicked, + }, + }; + return new ObservableCollection(list); + } + private ObservableCollection GetModuleItemsAdvancedPaste() { ISettingsRepository moduleSettingsRepository = SettingsRepository.GetInstance(SettingsUtils.Default); @@ -853,6 +872,12 @@ private void PowerDisplayLaunchClicked(object sender, RoutedEventArgs e) SendConfigMSG("{\"action\":{\"PowerDisplay\":{\"action_name\":\"" + actionName + "\", \"value\":\"\"}}}"); } + private void MouseWithoutBordersReconnectClicked(object sender, RoutedEventArgs e) + { + using var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.MWBReconnectEvent()); + eventHandle.Set(); + } + internal void DashboardListItemClick(object sender) { if (sender is ModuleType moduleType)