mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 02:36:19 +02:00
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Implements comprehensive hotkey conflict detection and resolution system for PowerToys, providing real-time conflict checking and centralized management interface. ## PR Checklist - [ ] **Closes:** #xxx - [x] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [x] **Localization:** All end-user-facing strings can be localized - [x] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [x] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: [Shortcut conflict detction dev spec](https://github.com/MicrosoftDocs/windows-dev-docs/pull/5519) ## TODO Lists - [x] Add real-time hotkey validation functionality to the hotkey dialog - [x] Immediately detect conflicts and update shortcut conflict status after applying new shortcuts - [x] Return conflict list from runner hotkey conflict detector for conflict checking. - [x] Implement the Tooltip for every shortcut control - [x] Add dialog UI for showing all the shortcut conflicts - [x] Support changing shortcut directly inside the shortcut conflict window/dialog, no need to nav to the settings page. - [x] Redesign the `ShortcutConflictDialogContentControl` to align with the spec - [x] Add navigating and changing hotkey auctionability to the `ShortcutConflictDialogContentControl` - [x] Add telemetry. Impemented in [another PR](https://github.com/shuaiyuanxx/PowerToys/pull/47) ## Shortcut Conflict Support Modules  <details> <summary>Demo videos</summary> https://github.com/user-attachments/assets/476d992c-c6ca-4bcd-a3f2-b26cc612d1b9 https://github.com/user-attachments/assets/1c1a2537-de54-4db2-bdbf-6f1908ff1ce7 https://github.com/user-attachments/assets/9c992254-fc2b-402c-beec-20fceef25e6b https://github.com/user-attachments/assets/d66abc1c-b8bf-45f8-a552-ec989dab310f </details> <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Manually validation performed. --------- Signed-off-by: Shawn Yuan <shuaiyuan@microsoft.com> Signed-off-by: Shuai Yuan <shuai.yuan.zju@gmail.com> Co-authored-by: Niels Laute <niels.laute@live.nl>
145 lines
8.0 KiB
XML
145 lines
8.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<Import Project="..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.props')" />
|
|
<Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild">
|
|
<Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(SolutionDir)tools\build\convert-resx-to-rc.ps1 $(MSBuildThisFileDirectory) resource.base.h resource.h runner.base.rc runner.rc" />
|
|
</Target>
|
|
<PropertyGroup>
|
|
<NoWarn>81010002</NoWarn>
|
|
</PropertyGroup>
|
|
<PropertyGroup Label="Globals">
|
|
<VCProjectVersion>15.0</VCProjectVersion>
|
|
<ProjectGuid>{9412D5C6-2CF2-4FC2-A601-B55508EA9B27}</ProjectGuid>
|
|
<RootNamespace>powertoys</RootNamespace>
|
|
<ProjectName>runner</ProjectName>
|
|
</PropertyGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
<Import Project="..\..\deps\expected.props" />
|
|
<ImportGroup Label="Shared" />
|
|
<PropertyGroup Label="Configuration">
|
|
<ConfigurationType>Application</ConfigurationType>
|
|
<PlatformToolset>v143</PlatformToolset>
|
|
</PropertyGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
<ImportGroup Label="ExtensionSettings">
|
|
</ImportGroup>
|
|
<ImportGroup Label="Shared">
|
|
</ImportGroup>
|
|
<ImportGroup Label="PropertySheets">
|
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
</ImportGroup>
|
|
<PropertyGroup Label="UserMacros" />
|
|
<PropertyGroup>
|
|
<TargetName>PowerToys</TargetName>
|
|
</PropertyGroup>
|
|
<ItemDefinitionGroup>
|
|
<ClCompile>
|
|
<AdditionalIncludeDirectories>..\common\inc;..\common\os-detection;..\common\Telemetry;..;..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
</ClCompile>
|
|
<Link>
|
|
<UACExecutionLevel>AsInvoker</UACExecutionLevel>
|
|
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
|
<AdditionalDependencies>Shcore.lib;gdiplus.lib;Msi.lib;WindowsApp.lib;taskschd.lib;Rstrtmgr.lib;Shlwapi.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
</Link>
|
|
<Manifest>
|
|
<EnableDpiAwareness>false</EnableDpiAwareness>
|
|
</Manifest>
|
|
</ItemDefinitionGroup>
|
|
<ItemGroup>
|
|
<ClCompile Include="..\common\interop\two_way_pipe_message_ipc.cpp" />
|
|
<ClCompile Include="auto_start_helper.cpp" />
|
|
<ClCompile Include="bug_report.cpp" />
|
|
<ClCompile Include="centralized_hotkeys.cpp" />
|
|
<ClCompile Include="general_settings.cpp" />
|
|
<ClCompile Include="hotkey_conflict_detector.cpp" />
|
|
<ClCompile Include="pch.cpp">
|
|
<PrecompiledHeader Condition="'$(UsePrecompiledHeaders)' != 'false'">Create</PrecompiledHeader>
|
|
</ClCompile>
|
|
<ClCompile Include="powertoy_module.cpp" />
|
|
<ClCompile Include="main.cpp" />
|
|
<ClCompile Include="restart_elevated.cpp" />
|
|
<ClCompile Include="centralized_kb_hook.cpp" />
|
|
<ClCompile Include="settings_telemetry.cpp" />
|
|
<ClCompile Include="settings_window.cpp" />
|
|
<ClCompile Include="trace.cpp" />
|
|
<ClCompile Include="tray_icon.cpp" />
|
|
<ClCompile Include="unhandled_exception_handler.cpp" />
|
|
<ClCompile Include="UpdateUtils.cpp" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ClInclude Include="ActionRunnerUtils.h" />
|
|
<ClInclude Include="auto_start_helper.h" />
|
|
<ClInclude Include="bug_report.h" />
|
|
<ClInclude Include="centralized_hotkeys.h" />
|
|
<ClInclude Include="general_settings.h" />
|
|
<ClInclude Include="hotkey_conflict_detector.h" />
|
|
<ClInclude Include="pch.h" />
|
|
<ClInclude Include="centralized_kb_hook.h" />
|
|
<ClInclude Include="settings_telemetry.h" />
|
|
<ClInclude Include="UpdateUtils.h" />
|
|
<ClInclude Include="powertoy_module.h" />
|
|
<ClInclude Include="resource.h" />
|
|
<ClInclude Include="restart_elevated.h" />
|
|
<ClInclude Include="settings_window.h" />
|
|
<ClInclude Include="trace.h" />
|
|
<ClInclude Include="tray_icon.h" />
|
|
<ClInclude Include="unhandled_exception_handler.h" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<None Include="runner.base.rc" />
|
|
<ResourceCompile Include="Generated Files/runner.rc" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<CopyFileToFolders Include="svgs\icon.ico">
|
|
<DeploymentContent>true</DeploymentContent>
|
|
<FileType>Document</FileType>
|
|
<DestinationFolders>$(OutDir)\svgs</DestinationFolders>
|
|
</CopyFileToFolders>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\common\COMUtils\COMUtils.vcxproj">
|
|
<Project>{7319089e-46d6-4400-bc65-e39bdf1416ee}</Project>
|
|
</ProjectReference>
|
|
<ProjectReference Include="..\common\Display\Display.vcxproj">
|
|
<Project>{caba8dfb-823b-4bf2-93ac-3f31984150d9}</Project>
|
|
</ProjectReference>
|
|
<ProjectReference Include="..\common\logger\logger.vcxproj">
|
|
<Project>{d9b8fc84-322a-4f9f-bbb9-20915c47ddfd}</Project>
|
|
</ProjectReference>
|
|
<ProjectReference Include="..\common\notifications\notifications.vcxproj">
|
|
<Project>{1d5be09d-78c0-4fd7-af00-ae7c1af7c525}</Project>
|
|
</ProjectReference>
|
|
<ProjectReference Include="..\common\Telemetry\EtwTrace\EtwTrace.vcxproj">
|
|
<Project>{8f021b46-362b-485c-bfba-ccf83e820cbd}</Project>
|
|
</ProjectReference>
|
|
<ProjectReference Include="..\common\Themes\Themes.vcxproj">
|
|
<Project>{98537082-0fdb-40de-abd8-0dc5a4269bab}</Project>
|
|
</ProjectReference>
|
|
<ProjectReference Include="..\common\updating\updating.vcxproj">
|
|
<Project>{17da04df-e393-4397-9cf0-84dabe11032e}</Project>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<None Include="packages.config" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Manifest Include="PowerToys.exe.manifest" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<EmbeddedResource Include="Resources.resx" />
|
|
</ItemGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
<Import Project="..\..\deps\spdlog.props" />
|
|
<ImportGroup Label="ExtensionTargets">
|
|
<Import Project="..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.targets')" />
|
|
<Import Project="..\..\packages\Microsoft.Windows.ImplementationLibrary.1.0.231216.1\build\native\Microsoft.Windows.ImplementationLibrary.targets" Condition="Exists('..\..\packages\Microsoft.Windows.ImplementationLibrary.1.0.231216.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" />
|
|
</ImportGroup>
|
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
|
<PropertyGroup>
|
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
|
</PropertyGroup>
|
|
<Error Condition="!Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.props'))" />
|
|
<Error Condition="!Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.targets'))" />
|
|
<Error Condition="!Exists('..\..\packages\Microsoft.Windows.ImplementationLibrary.1.0.231216.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Windows.ImplementationLibrary.1.0.231216.1\build\native\Microsoft.Windows.ImplementationLibrary.targets'))" />
|
|
</Target>
|
|
</Project> |