From dca8b7ac3560a77a57202398dd7e1e68e6eb9006 Mon Sep 17 00:00:00 2001 From: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com> Date: Thu, 26 Sep 2024 19:54:16 +0200 Subject: [PATCH 01/30] [Workspaces] implement standalone app handling (#34948) --- .github/actions/spell-check/expect.txt | 4 + .../WorkspacesSnapshotTool/SnapshotUtils.cpp | 85 +++++++++++++++++-- .../WindowArranger.cpp | 6 +- 3 files changed, 84 insertions(+), 11 deletions(-) diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt index 131d5fb8505c..1fca6be137a8 100644 --- a/.github/actions/spell-check/expect.txt +++ b/.github/actions/spell-check/expect.txt @@ -367,6 +367,7 @@ dllmain DNLEN DONOTROUND DONTVALIDATEPATH +DOPUS dotnet DPICHANGED DPIs @@ -1265,6 +1266,7 @@ PWSTR pwsz pwtd QDC +QDir qianlifeng qit QITAB @@ -1642,6 +1644,7 @@ toolkitconverters Toolset toolwindow TOPDOWNDIB +TOTALCMD TOUCHEVENTF TOUCHINPUT touchpad @@ -1908,6 +1911,7 @@ XLoc XNamespace XPels XPixel +xplorer XResource xsi XStr diff --git a/src/modules/Workspaces/WorkspacesSnapshotTool/SnapshotUtils.cpp b/src/modules/Workspaces/WorkspacesSnapshotTool/SnapshotUtils.cpp index 54f603dbc895..66aebb751bf1 100644 --- a/src/modules/Workspaces/WorkspacesSnapshotTool/SnapshotUtils.cpp +++ b/src/modules/Workspaces/WorkspacesSnapshotTool/SnapshotUtils.cpp @@ -19,6 +19,15 @@ namespace SnapshotUtils namespace NonLocalizable { const std::wstring ApplicationFrameHost = L"ApplicationFrameHost.exe"; + + namespace FileManagers + { + const std::wstring FileExplorer = L"EXPLORER"; // windows explorer + const std::wstring TotalCommander = L"TOTALCMD"; // total commander + const std::wstring DirectoryOpus = L"DOPUS"; // directory opus + const std::wstring QDir = L"Q-DIR"; // Q-Dir + const std::wstring Xplorer2 = L"XPLORER2"; // Xplorer2 + } } class WbemHelper @@ -191,6 +200,17 @@ namespace SnapshotUtils return res; } + bool IsFileManagerApp(std::wstring processPath) + { + std::wstring appName = std::filesystem::path(processPath).stem(); + std::transform(appName.begin(), appName.end(), appName.begin(), towupper); + return ((appName == NonLocalizable::FileManagers::FileExplorer) // windows explorer + || (appName.starts_with(NonLocalizable::FileManagers::TotalCommander)) // total commander + || (appName == NonLocalizable::FileManagers::DirectoryOpus) // directory opus + || (appName == NonLocalizable::FileManagers::QDir) // Q-Dir + || (appName.starts_with(NonLocalizable::FileManagers::Xplorer2))); // Xplorer2 + } + std::vector GetApps(const std::function getMonitorNumberFromWindowHandle) { std::vector apps{}; @@ -269,25 +289,72 @@ namespace SnapshotUtils if (!data.has_value() || data->name.empty()) { Logger::info(L"Installed app not found: {}, try parent process", processPath); - + + bool standaloneApp = false; + bool steamLikeApp = false; + // try with parent process (fix for Steam) auto parentPid = GetParentPid(pid); auto parentProcessPath = get_process_path(parentPid); - if (!parentProcessPath.empty()) + + // check if original process is in the subfolder of the parent process which is a sign of an steam-like app + std::wstring processDir = std::filesystem::path(processPath).parent_path().c_str(); + std::wstring parentProcessDir = std::filesystem::path(parentProcessPath).parent_path().c_str(); + + if (parentProcessPath == L"") { - data = Utils::Apps::GetApp(parentProcessPath, installedApps); - if (!data.has_value() || data->name.empty()) + if (processPath.ends_with(NonLocalizable::ApplicationFrameHost)) { - Logger::info(L"Installed parent app not found: {}", processPath); + // filter out ApplicationFrameHost.exe continue; } - - processPath = parentProcessPath; + else + { + Logger::info(L"parent process unknown, the parent app is an already closed file manager app, it is a standalone app"); + standaloneApp = true; + } + } + else if (processDir.starts_with(parentProcessDir)) + { + Logger::info(L"parent process: {}, original process is in the subfolder of the parent process, it is a steam-like app", parentProcessPath); + steamLikeApp = true; + } + else if (IsFileManagerApp(parentProcessPath)) + { + Logger::info(L"parent process: {}, The parent process is a known file manager app, it is a standalone app", parentProcessPath); + standaloneApp = true; } else { - Logger::info(L"Parent process path not found"); - continue; + Logger::info(L"parent process: {}, The parent process is NOT a known file manager app, it is a steam-like app", parentProcessPath); + steamLikeApp = true; + } + + if (standaloneApp) + { + data = Utils::Apps::AppData{ + .name = std::filesystem::path(processPath).stem(), + .installPath = processPath, + }; + } + else if (steamLikeApp) + { + if (!parentProcessPath.empty()) + { + data = Utils::Apps::GetApp(parentProcessPath, installedApps); + if (!data.has_value() || data->name.empty()) + { + Logger::info(L"Installed parent app not found: {}", processPath); + continue; + } + + processPath = parentProcessPath; + } + else + { + Logger::info(L"Parent process path not found"); + continue; + } } } diff --git a/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp b/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp index ba56dc18437a..96b68a9c914f 100644 --- a/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp +++ b/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp @@ -174,13 +174,15 @@ void WindowArranger::processWindow(HWND window) } auto data = Utils::Apps::GetApp(processPath, m_installedApps); - if (!data.has_value() || data->name.empty()) + if (!data.has_value()) { return; } auto iter = std::find_if(m_launchingApps.begin(), m_launchingApps.end(), [&](const auto& val) - { return val.second.state == LaunchingState::Waiting && val.first.name == data.value().name; }); + { + return val.second.state == LaunchingState::Waiting && !val.second.window && (val.first.name == data.value().name || val.first.path == data.value().installPath); + }); if (iter == m_launchingApps.end()) { Logger::info(L"A window of {} is not in the project", processPath); From e79b0163b7c8c5d553e5c4bf06cf068d20e03f6e Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Fri, 27 Sep 2024 04:26:47 -0500 Subject: [PATCH 02/30] [ci]Disable recompilation for the NuGet packages (#35085) -t:Pack is insufficient for packing a NuGet package after you've signed the DLLs. Without -p:NoBuild=true, sometimes it will rebuild (or re-link) them for you. --- .pipelines/v2/templates/job-build-project.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pipelines/v2/templates/job-build-project.yml b/.pipelines/v2/templates/job-build-project.yml index 88417ca983e2..d24158658b9b 100644 --- a/.pipelines/v2/templates/job-build-project.yml +++ b/.pipelines/v2/templates/job-build-project.yml @@ -224,7 +224,7 @@ jobs: inputs: solution: '**\HostsUILib.csproj' vsVersion: 17.0 - msbuildArgs: /p:CIBuild=true -t:pack /bl:$(LogOutputDirectory)\build-hosts.binlog + msbuildArgs: /p:CIBuild=true;NoBuild=true -t:pack /bl:$(LogOutputDirectory)\build-hosts.binlog configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true @@ -237,7 +237,7 @@ jobs: inputs: solution: '**\EnvironmentVariablesUILib.csproj' vsVersion: 17.0 - msbuildArgs: /p:CIBuild=true -t:pack /bl:$(LogOutputDirectory)\build-env-var-editor.binlog + msbuildArgs: /p:CIBuild=true;NoBuild=true -t:pack /bl:$(LogOutputDirectory)\build-env-var-editor.binlog configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true @@ -250,7 +250,7 @@ jobs: inputs: solution: '**\RegistryPreviewUILib.csproj' vsVersion: 17.0 - msbuildArgs: /p:CIBuild=true -t:pack /bl:$(LogOutputDirectory)\build-registry-preview.binlog + msbuildArgs: /p:CIBuild=true;NoBuild=true -t:pack /bl:$(LogOutputDirectory)\build-registry-preview.binlog configuration: $(BuildConfiguration) msbuildArchitecture: x64 maximumCpuCount: true From 474c6f732212eb5168d1dc2c92b70c8e616a3221 Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Fri, 27 Sep 2024 04:39:42 -0500 Subject: [PATCH 03/30] [Build]reintroduce variables.EnablePipelineCache (#35087) * build: reintroduce variables.EnablePipelineCache --- .pipelines/v2/ci.yml | 2 +- .pipelines/v2/templates/pipeline-ci-build.yml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pipelines/v2/ci.yml b/.pipelines/v2/ci.yml index 5e7bf266765e..268bea7d11ba 100644 --- a/.pipelines/v2/ci.yml +++ b/.pipelines/v2/ci.yml @@ -32,7 +32,7 @@ parameters: - name: enableMsBuildCaching type: boolean displayName: "Enable MSBuild Caching" - default: false + default: true - name: runTests type: boolean displayName: "Run Tests" diff --git a/.pipelines/v2/templates/pipeline-ci-build.yml b/.pipelines/v2/templates/pipeline-ci-build.yml index 73a3ff766d1e..17f4654ccda5 100644 --- a/.pipelines/v2/templates/pipeline-ci-build.yml +++ b/.pipelines/v2/templates/pipeline-ci-build.yml @@ -3,6 +3,9 @@ variables: value: false - name: EnablePipelineCache value: true + - ${{ if eq(parameters.enableMsBuildCaching, true) }}: + - name: EnablePipelineCache + value: true parameters: - name: buildPlatforms From ff17e3dec911d560eb964ef95f81c00b941e7e6a Mon Sep 17 00:00:00 2001 From: Den Delimarsky Date: Fri, 27 Sep 2024 12:38:42 -0700 Subject: [PATCH 04/30] [Awake]Log error with Logger instead of console (#35100) --- .pipelines/v2/ci.yml | 2 +- src/modules/awake/Awake/Core/Manager.cs | 1 - .../Core/Threading/SingleThreadSynchronizationContext.cs | 6 ++++-- src/modules/awake/Awake/Program.cs | 1 - 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.pipelines/v2/ci.yml b/.pipelines/v2/ci.yml index 268bea7d11ba..5e7bf266765e 100644 --- a/.pipelines/v2/ci.yml +++ b/.pipelines/v2/ci.yml @@ -32,7 +32,7 @@ parameters: - name: enableMsBuildCaching type: boolean displayName: "Enable MSBuild Caching" - default: true + default: false - name: runTests type: boolean displayName: "Run Tests" diff --git a/src/modules/awake/Awake/Core/Manager.cs b/src/modules/awake/Awake/Core/Manager.cs index ba69f9c8df5c..f23725063567 100644 --- a/src/modules/awake/Awake/Core/Manager.cs +++ b/src/modules/awake/Awake/Core/Manager.cs @@ -14,7 +14,6 @@ using System.Text; using System.Text.Json; using System.Threading; - using Awake.Core.Models; using Awake.Core.Native; using Awake.Properties; diff --git a/src/modules/awake/Awake/Core/Threading/SingleThreadSynchronizationContext.cs b/src/modules/awake/Awake/Core/Threading/SingleThreadSynchronizationContext.cs index 4b432320d906..04c28dfd34b8 100644 --- a/src/modules/awake/Awake/Core/Threading/SingleThreadSynchronizationContext.cs +++ b/src/modules/awake/Awake/Core/Threading/SingleThreadSynchronizationContext.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Threading; +using ManagedCommon; namespace Awake.Core.Threading { @@ -49,7 +50,7 @@ public void BeginMessageLoop() } catch (Exception e) { - Console.WriteLine("Error during execution: " + e.Message); + Logger.LogError("Error during execution of the STS context message loop: " + e.Message); } } } @@ -58,7 +59,8 @@ public void EndMessageLoop() { lock (queue) { - queue.Enqueue(null); // Signal the end of the message loop + // Signal the end of the message loop + queue.Enqueue(null); Monitor.Pulse(queue); } } diff --git a/src/modules/awake/Awake/Program.cs b/src/modules/awake/Awake/Program.cs index 2dd22db874bb..d1311ef51f03 100644 --- a/src/modules/awake/Awake/Program.cs +++ b/src/modules/awake/Awake/Program.cs @@ -15,7 +15,6 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; - using Awake.Core; using Awake.Core.Models; using Awake.Core.Native; From 6bab73777b5e2d6988c816a80a32cf270bdaf703 Mon Sep 17 00:00:00 2001 From: Seraphima Zykova Date: Sat, 28 Sep 2024 01:00:53 +0300 Subject: [PATCH 05/30] [Workspaces]Fix Steam repositioning (#35101) * moved and simplified logic * address PR comment --- .../Workspaces/WorkspacesLib/AppUtils.cpp | 75 ++++++++++- .../Workspaces/WorkspacesLib/AppUtils.h | 2 +- .../WorkspacesSnapshotTool/SnapshotUtils.cpp | 117 +----------------- .../WindowArranger.cpp | 12 +- 4 files changed, 80 insertions(+), 126 deletions(-) diff --git a/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp b/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp index 18067427dda0..7c9bfe332dd0 100644 --- a/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp +++ b/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp @@ -2,8 +2,9 @@ #include "AppUtils.h" #include -#include #include +#include +#include #include @@ -28,6 +29,7 @@ namespace Utils constexpr const wchar_t* PowerToys = L"PowerToys.exe"; constexpr const wchar_t* PowerToysSettingsUpper = L"POWERTOYS.SETTINGS.EXE"; constexpr const wchar_t* PowerToysSettings = L"PowerToys.Settings.exe"; + constexpr const wchar_t* ApplicationFrameHost = L"APPLICATIONFRAMEHOST.EXE"; } AppList IterateAppsFolder() @@ -184,11 +186,39 @@ namespace Utils return IterateAppsFolder(); } - std::optional GetApp(const std::wstring& appPath, const AppList& apps) + DWORD GetParentPid(DWORD pid) + { + DWORD res = 0; + HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + PROCESSENTRY32 pe = { 0 }; + pe.dwSize = sizeof(PROCESSENTRY32); + + if (Process32First(h, &pe)) + { + do + { + if (pe.th32ProcessID == pid) + { + res = pe.th32ParentProcessID; + } + } while (Process32Next(h, &pe)); + } + + CloseHandle(h); + return res; + } + + std::optional GetApp(const std::wstring& appPath, DWORD pid, const AppList& apps) { std::wstring appPathUpper(appPath); std::transform(appPathUpper.begin(), appPathUpper.end(), appPathUpper.begin(), towupper); + // filter out ApplicationFrameHost.exe + if (appPathUpper.ends_with(NonLocalizable::ApplicationFrameHost)) + { + return std::nullopt; + } + // edge case, "Windows Software Development Kit" has the same app path as "File Explorer" if (appPathUpper == NonLocalizable::FileExplorerPath) { @@ -217,6 +247,7 @@ namespace Utils } } + // search in apps list for (const auto& appData : apps) { if (!appData.installPath.empty()) @@ -251,11 +282,43 @@ namespace Utils if (appNameUpper == exeNameUpper) { - return appData; + auto result = appData; + result.installPath = appPath; + return result; } } + // try with parent process (fix for Steam) + auto parentPid = GetParentPid(pid); + auto parentProcessPath = get_process_path(parentPid); + + if (!parentProcessPath.empty()) + { + std::wstring parentDirUpper = std::filesystem::path(parentProcessPath).parent_path().c_str(); + std::transform(parentDirUpper.begin(), parentDirUpper.end(), parentDirUpper.begin(), towupper); + + if (appPathUpper.starts_with(parentDirUpper)) + { + Logger::info(L"original process is in the subfolder of the parent process"); + + for (const auto& appData : apps) + { + if (!appData.installPath.empty()) + { + std::wstring installDirUpper = std::filesystem::path(appData.installPath).parent_path().c_str(); + std::transform(installDirUpper.begin(), installDirUpper.end(), installDirUpper.begin(), towupper); + + if (installDirUpper == parentDirUpper) + { + return appData; + } + } + } + } + } + return AppData{ + .name = std::filesystem::path(appPath).stem(), .installPath = appPath }; } @@ -263,7 +326,11 @@ namespace Utils std::optional GetApp(HWND window, const AppList& apps) { std::wstring processPath = get_process_path(window); - return Utils::Apps::GetApp(processPath, apps); + + DWORD pid{}; + GetWindowThreadProcessId(window, &pid); + + return Utils::Apps::GetApp(processPath, pid, apps); } } } \ No newline at end of file diff --git a/src/modules/Workspaces/WorkspacesLib/AppUtils.h b/src/modules/Workspaces/WorkspacesLib/AppUtils.h index 4d01f9d4b9f6..596d7d0a8511 100644 --- a/src/modules/Workspaces/WorkspacesLib/AppUtils.h +++ b/src/modules/Workspaces/WorkspacesLib/AppUtils.h @@ -19,7 +19,7 @@ namespace Utils const std::wstring& GetCurrentFolderUpper(); AppList GetAppsList(); - std::optional GetApp(const std::wstring& appPath, const AppList& apps); + std::optional GetApp(const std::wstring& appPath, DWORD pid, const AppList& apps); std::optional GetApp(HWND window, const AppList& apps); } } \ No newline at end of file diff --git a/src/modules/Workspaces/WorkspacesSnapshotTool/SnapshotUtils.cpp b/src/modules/Workspaces/WorkspacesSnapshotTool/SnapshotUtils.cpp index 66aebb751bf1..4642a5952edb 100644 --- a/src/modules/Workspaces/WorkspacesSnapshotTool/SnapshotUtils.cpp +++ b/src/modules/Workspaces/WorkspacesSnapshotTool/SnapshotUtils.cpp @@ -12,22 +12,12 @@ #include #include -#include namespace SnapshotUtils { namespace NonLocalizable { const std::wstring ApplicationFrameHost = L"ApplicationFrameHost.exe"; - - namespace FileManagers - { - const std::wstring FileExplorer = L"EXPLORER"; // windows explorer - const std::wstring TotalCommander = L"TOTALCMD"; // total commander - const std::wstring DirectoryOpus = L"DOPUS"; // directory opus - const std::wstring QDir = L"Q-DIR"; // Q-Dir - const std::wstring Xplorer2 = L"XPLORER2"; // Xplorer2 - } } class WbemHelper @@ -178,39 +168,6 @@ namespace SnapshotUtils return false; } - DWORD GetParentPid(DWORD pid) - { - DWORD res = 0; - HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - PROCESSENTRY32 pe = { 0 }; - pe.dwSize = sizeof(PROCESSENTRY32); - - if (Process32First(h, &pe)) - { - do - { - if (pe.th32ProcessID == pid) - { - res = pe.th32ParentProcessID; - } - } while (Process32Next(h, &pe)); - } - - CloseHandle(h); - return res; - } - - bool IsFileManagerApp(std::wstring processPath) - { - std::wstring appName = std::filesystem::path(processPath).stem(); - std::transform(appName.begin(), appName.end(), appName.begin(), towupper); - return ((appName == NonLocalizable::FileManagers::FileExplorer) // windows explorer - || (appName.starts_with(NonLocalizable::FileManagers::TotalCommander)) // total commander - || (appName == NonLocalizable::FileManagers::DirectoryOpus) // directory opus - || (appName == NonLocalizable::FileManagers::QDir) // Q-Dir - || (appName.starts_with(NonLocalizable::FileManagers::Xplorer2))); // Xplorer2 - } - std::vector GetApps(const std::function getMonitorNumberFromWindowHandle) { std::vector apps{}; @@ -285,83 +242,17 @@ namespace SnapshotUtils continue; } - auto data = Utils::Apps::GetApp(processPath, installedApps); + auto data = Utils::Apps::GetApp(processPath, pid, installedApps); if (!data.has_value() || data->name.empty()) { - Logger::info(L"Installed app not found: {}, try parent process", processPath); - - bool standaloneApp = false; - bool steamLikeApp = false; - - // try with parent process (fix for Steam) - auto parentPid = GetParentPid(pid); - auto parentProcessPath = get_process_path(parentPid); - - // check if original process is in the subfolder of the parent process which is a sign of an steam-like app - std::wstring processDir = std::filesystem::path(processPath).parent_path().c_str(); - std::wstring parentProcessDir = std::filesystem::path(parentProcessPath).parent_path().c_str(); - - if (parentProcessPath == L"") - { - if (processPath.ends_with(NonLocalizable::ApplicationFrameHost)) - { - // filter out ApplicationFrameHost.exe - continue; - } - else - { - Logger::info(L"parent process unknown, the parent app is an already closed file manager app, it is a standalone app"); - standaloneApp = true; - } - } - else if (processDir.starts_with(parentProcessDir)) - { - Logger::info(L"parent process: {}, original process is in the subfolder of the parent process, it is a steam-like app", parentProcessPath); - steamLikeApp = true; - } - else if (IsFileManagerApp(parentProcessPath)) - { - Logger::info(L"parent process: {}, The parent process is a known file manager app, it is a standalone app", parentProcessPath); - standaloneApp = true; - } - else - { - Logger::info(L"parent process: {}, The parent process is NOT a known file manager app, it is a steam-like app", parentProcessPath); - steamLikeApp = true; - } - - if (standaloneApp) - { - data = Utils::Apps::AppData{ - .name = std::filesystem::path(processPath).stem(), - .installPath = processPath, - }; - } - else if (steamLikeApp) - { - if (!parentProcessPath.empty()) - { - data = Utils::Apps::GetApp(parentProcessPath, installedApps); - if (!data.has_value() || data->name.empty()) - { - Logger::info(L"Installed parent app not found: {}", processPath); - continue; - } - - processPath = parentProcessPath; - } - else - { - Logger::info(L"Parent process path not found"); - continue; - } - } + Logger::info(L"Installed app not found: {}", processPath); + continue; } WorkspacesData::WorkspacesProject::Application app{ .name = data.value().name, .title = title, - .path = processPath, + .path = data.value().installPath, .packageFullName = data.value().packageFullName, .appUserModelId = data.value().appUserModelId, .commandLineArgs = L"", // GetCommandLineArgs(pid, wbemHelper), diff --git a/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp b/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp index 96b68a9c914f..18bd2a049f82 100644 --- a/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp +++ b/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp @@ -161,19 +161,16 @@ void WindowArranger::processWindow(HWND window) return; } - std::wstring title = WindowUtils::GetWindowTitle(window); - if (title.empty()) - { - return; - } - std::wstring processPath = get_process_path(window); if (processPath.empty()) { return; } - auto data = Utils::Apps::GetApp(processPath, m_installedApps); + DWORD pid{}; + GetWindowThreadProcessId(window, &pid); + + auto data = Utils::Apps::GetApp(processPath, pid, m_installedApps); if (!data.has_value()) { return; @@ -189,7 +186,6 @@ void WindowArranger::processWindow(HWND window) return; } - Logger::debug(L"Move {}", title); iter->second.window = window; if (moveWindow(window, iter->first)) { From d527d9576d1564fecf294d58a87c7e16eec319db Mon Sep 17 00:00:00 2001 From: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:37:21 +0200 Subject: [PATCH 06/30] [Workspaces]Fix snapshot tool: update capturing windows settings app (#35140) * [Workspaces] fix snapshot tool: update capturing windows settings app * spell checker * spell checker * minor change in app utils, when the system settings app is captured --- .github/actions/spell-check/expect.txt | 2 +- src/modules/Workspaces/WorkspacesLib/AppUtils.cpp | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt index 1fca6be137a8..47662c376638 100644 --- a/.github/actions/spell-check/expect.txt +++ b/.github/actions/spell-check/expect.txt @@ -1590,7 +1590,7 @@ SYSKEYUP SYSLIB SYSMENU SYSTEMAPPS -systemsettings +SYSTEMSETTINGS SYSTEMTIME SYSTEMWOW tapp diff --git a/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp b/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp index 7c9bfe332dd0..389e54eae5ae 100644 --- a/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp +++ b/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp @@ -26,6 +26,7 @@ namespace Utils constexpr const wchar_t* FileExplorerName = L"File Explorer"; constexpr const wchar_t* FileExplorerPath = L"C:\\WINDOWS\\EXPLORER.EXE"; + constexpr const wchar_t* SystemSettingsPath = L"SYSTEMSETTINGS.EXE"; constexpr const wchar_t* PowerToys = L"PowerToys.exe"; constexpr const wchar_t* PowerToysSettingsUpper = L"POWERTOYS.SETTINGS.EXE"; constexpr const wchar_t* PowerToysSettings = L"PowerToys.Settings.exe"; @@ -257,6 +258,14 @@ namespace Utils if (appPathUpper.contains(installPathUpper)) { + // check if the found app is the System Settings. If yes, update the install path to the exe path + if (appPathUpper.ends_with(NonLocalizable::SystemSettingsPath)) + { + auto settingsAppData = appData; + settingsAppData.installPath = appPath; + return settingsAppData; + } + return appData; } From 9b41786c57adde72f5f107a0d6c9bc5f7cacfc81 Mon Sep 17 00:00:00 2001 From: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com> Date: Mon, 30 Sep 2024 16:00:50 +0200 Subject: [PATCH 07/30] [Deps]Revert CommunityToolkit update to fix ARM settings app crash (#35139) --- Directory.Packages.props | 16 ++++++++-------- NOTICE.md | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 9ec1d03bd9b6..0967532dc32c 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -6,14 +6,14 @@ - - - - - - - - + + + + + + + + diff --git a/NOTICE.md b/NOTICE.md index ca957e45ecdf..d4328bbfc40d 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -1299,14 +1299,14 @@ EXHIBIT A -Mozilla Public License. - Appium.WebDriver 4.4.5 - Azure.AI.OpenAI 1.0.0-beta.12 - CommunityToolkit.Mvvm 8.2.2 -- CommunityToolkit.WinUI.Animations 8.1.240821 -- CommunityToolkit.WinUI.Collections 8.1.240821 -- CommunityToolkit.WinUI.Controls.Primitives 8.1.240821 -- CommunityToolkit.WinUI.Controls.Segmented 8.1.240821 -- CommunityToolkit.WinUI.Controls.SettingsControls 8.1.240821 -- CommunityToolkit.WinUI.Controls.Sizers 8.1.240821 -- CommunityToolkit.WinUI.Converters 8.1.240821 -- CommunityToolkit.WinUI.Extensions 8.1.240821 +- CommunityToolkit.WinUI.Animations 8.0.240109 +- CommunityToolkit.WinUI.Collections 8.0.240109 +- CommunityToolkit.WinUI.Controls.Primitives 8.0.240109 +- CommunityToolkit.WinUI.Controls.Segmented 8.0.240109 +- CommunityToolkit.WinUI.Controls.SettingsControls 8.0.240109 +- CommunityToolkit.WinUI.Controls.Sizers 8.0.240109 +- CommunityToolkit.WinUI.Converters 8.0.240109 +- CommunityToolkit.WinUI.Extensions 8.0.240109 - CommunityToolkit.WinUI.UI.Controls.DataGrid 7.1.2 - CommunityToolkit.WinUI.UI.Controls.Markdown 7.1.2 - ControlzEx 6.0.0 From 77de44fdb4d73c53d9eb6897759fdf4d841072f8 Mon Sep 17 00:00:00 2001 From: Jaime Bernardo Date: Mon, 30 Sep 2024 16:54:07 +0100 Subject: [PATCH 08/30] [NewPlus]Normalize settings infrastructure (#35145) --- .../powertoys_module.cpp | 21 +++++-- .../NewShellExtensionContextMenu/settings.cpp | 62 ++++++++----------- .../Settings.UI.Library/NewPlusProperties.cs | 34 ++++++++++ .../Settings.UI.Library/NewPlusSettings.cs | 27 +++----- .../ViewModels/DashboardViewModel.cs | 2 +- .../ViewModels/NewPlusViewModel.cs | 27 +++----- 6 files changed, 93 insertions(+), 80 deletions(-) create mode 100644 src/settings-ui/Settings.UI.Library/NewPlusProperties.cs diff --git a/src/modules/NewPlus/NewShellExtensionContextMenu/powertoys_module.cpp b/src/modules/NewPlus/NewShellExtensionContextMenu/powertoys_module.cpp index 2962f236fc3b..2e6dccfdeecd 100644 --- a/src/modules/NewPlus/NewShellExtensionContextMenu/powertoys_module.cpp +++ b/src/modules/NewPlus/NewShellExtensionContextMenu/powertoys_module.cpp @@ -51,21 +51,30 @@ class NewModule : public PowertoyModuleIface return true; } - virtual void set_config(PCWSTR config) override + virtual void set_config(const wchar_t* config) override { // The following just checks to see if the Template Location was changed for metrics purposes // Note: We are not saving the settings here and instead relying on read/write of json in Settings App .cs code paths try { - json::JsonObject config_as_json = json::JsonValue::Parse(winrt::to_hstring(config)).GetObjectW(); + // Parse the input JSON string. + PowerToysSettings::PowerToyValues values = + PowerToysSettings::PowerToyValues::from_json_string(config, get_key()); - const auto latest_location_value = config_as_json.GetNamedString(newplus::constants::non_localizable::settings_json_key_template_location).data(); - const auto existing_location_value = NewSettingsInstance().GetTemplateLocation(); + values.save_to_settings_file(); + NewSettingsInstance().Load(); - if (!newplus::utilities::wstring_same_when_comparing_ignore_case(latest_location_value, existing_location_value)) + auto templateValue = values.get_string_value(newplus::constants::non_localizable::settings_json_key_template_location); + if (templateValue.has_value()) { - Trace::EventChangedTemplateLocation(); + const auto latest_location_value = templateValue.value(); + const auto existing_location_value = NewSettingsInstance().GetTemplateLocation(); + if (!newplus::utilities::wstring_same_when_comparing_ignore_case(latest_location_value, existing_location_value)) + { + Trace::EventChangedTemplateLocation(); + } } + } catch (std::exception& e) { diff --git a/src/modules/NewPlus/NewShellExtensionContextMenu/settings.cpp b/src/modules/NewPlus/NewShellExtensionContextMenu/settings.cpp index f1322caf1fc8..7dd5042c4da2 100644 --- a/src/modules/NewPlus/NewShellExtensionContextMenu/settings.cpp +++ b/src/modules/NewPlus/NewShellExtensionContextMenu/settings.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "settings.h" #include "constants.h" @@ -38,18 +39,13 @@ NewSettings::NewSettings() void NewSettings::Save() { - json::JsonObject new_settings_json_data; + PowerToysSettings::PowerToyValues values(newplus::constants::non_localizable::powertoy_key, newplus::constants::non_localizable::powertoy_key); - new_settings_json_data.SetNamedValue(newplus::constants::non_localizable::settings_json_key_hide_file_extension, - json::value(new_settings.hide_file_extension)); + values.add_property(newplus::constants::non_localizable::settings_json_key_hide_file_extension, new_settings.hide_file_extension); + values.add_property(newplus::constants::non_localizable::settings_json_key_hide_starting_digits, new_settings.hide_starting_digits); + values.add_property(newplus::constants::non_localizable::settings_json_key_template_location, new_settings.template_location); - new_settings_json_data.SetNamedValue(newplus::constants::non_localizable::settings_json_key_hide_starting_digits, - json::value(new_settings.hide_starting_digits)); - - new_settings_json_data.SetNamedValue(newplus::constants::non_localizable::settings_json_key_template_location, - json::value(new_settings.template_location)); - - json::to_file(new_settings_json_file_path, new_settings_json_data); + values.save_to_settings_file(); GetSystemTimeAsFileTime(&new_settings_last_loaded_timestamp); } @@ -122,35 +118,27 @@ void NewSettings::Reload() void NewSettings::ParseJson() { - auto json = json::from_file(new_settings_json_file_path); - if (json) + PowerToysSettings::PowerToyValues settings = + PowerToysSettings::PowerToyValues::load_from_settings_file(newplus::constants::non_localizable::powertoy_key); + + auto templateValue = settings.get_string_value(newplus::constants::non_localizable::settings_json_key_template_location); + if (templateValue.has_value()) + { + new_settings.template_location = templateValue.value(); + } + + auto hideFileExtensionValue = settings.get_bool_value(newplus::constants::non_localizable::settings_json_key_hide_file_extension); + if (hideFileExtensionValue.has_value()) { - try - { - const json::JsonObject& new_settings_json = json.value(); - - if (json::has(new_settings_json, newplus::constants::non_localizable::settings_json_key_hide_file_extension, json::JsonValueType::Boolean)) - { - new_settings.hide_file_extension = new_settings_json.GetNamedBoolean( - newplus::constants::non_localizable::settings_json_key_hide_file_extension); - } - - if (json::has(new_settings_json, newplus::constants::non_localizable::settings_json_key_hide_starting_digits, json::JsonValueType::Boolean)) - { - new_settings.hide_starting_digits = new_settings_json.GetNamedBoolean( - newplus::constants::non_localizable::settings_json_key_hide_starting_digits); - } - - if (json::has(new_settings_json, newplus::constants::non_localizable::settings_json_key_template_location, json::JsonValueType::String)) - { - new_settings.template_location = new_settings_json.GetNamedString( - newplus::constants::non_localizable::settings_json_key_template_location); - } - } - catch (const winrt::hresult_error&) - { - } + new_settings.hide_file_extension = hideFileExtensionValue.value(); } + + auto hideStartingDigitsValue = settings.get_bool_value(newplus::constants::non_localizable::settings_json_key_hide_starting_digits); + if (hideStartingDigitsValue.has_value()) + { + new_settings.hide_starting_digits = hideStartingDigitsValue.value(); + } + GetSystemTimeAsFileTime(&new_settings_last_loaded_timestamp); } diff --git a/src/settings-ui/Settings.UI.Library/NewPlusProperties.cs b/src/settings-ui/Settings.UI.Library/NewPlusProperties.cs new file mode 100644 index 000000000000..2a4970c69057 --- /dev/null +++ b/src/settings-ui/Settings.UI.Library/NewPlusProperties.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.IO; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Microsoft.PowerToys.Settings.UI.Library +{ + public class NewPlusProperties + { + public const string ModuleName = "NewPlus"; + + public NewPlusProperties() + { + HideFileExtension = new BoolProperty(true); + HideStartingDigits = new BoolProperty(true); + TemplateLocation = new StringProperty(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Microsoft", "PowerToys", "NewPlus", "Templates")); + } + + [JsonPropertyName("HideFileExtension")] + public BoolProperty HideFileExtension { get; set; } + + [JsonPropertyName("HideStartingDigits")] + public BoolProperty HideStartingDigits { get; set; } + + [JsonPropertyName("TemplateLocation")] + public StringProperty TemplateLocation { get; set; } + + public override string ToString() => JsonSerializer.Serialize(this); + } +} diff --git a/src/settings-ui/Settings.UI.Library/NewPlusSettings.cs b/src/settings-ui/Settings.UI.Library/NewPlusSettings.cs index 6010185f8ca6..2450898684d4 100644 --- a/src/settings-ui/Settings.UI.Library/NewPlusSettings.cs +++ b/src/settings-ui/Settings.UI.Library/NewPlusSettings.cs @@ -12,34 +12,27 @@ namespace Microsoft.PowerToys.Settings.UI.Library { - public class NewPlusSettings : ISettingsConfig + public class NewPlusSettings : BasePTModuleSettings, ISettingsConfig { public const string ModuleName = "NewPlus"; + public const string ModuleVersion = "1.0"; - public void InitializeWithDefaultSettings() - { - // This code path should never happen - } + [JsonPropertyName("properties")] + public NewPlusProperties Properties { get; set; } - public string ToJsonString() + public NewPlusSettings() { - return JsonSerializer.Serialize(this); + Name = ModuleName; + Version = ModuleVersion; + Properties = new NewPlusProperties(); } - [JsonPropertyName("HideFileExtension")] - public bool HideFileExtension { get; set; } - - [JsonPropertyName("HideStartingDigits")] - public bool HideStartingDigits { get; set; } - - [JsonPropertyName("TemplateLocation")] - public string TemplateLocation { get; set; } - public string GetModuleName() { - return ModuleName; + return Name; } + // This can be utilized in the future if the settings.json file is to be modified/deleted. public bool UpgradeSettingsConfiguration() { return false; diff --git a/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs index c72a52c7f786..7884a0994ff8 100644 --- a/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs @@ -130,7 +130,7 @@ private void EnabledChangedOnUI(DashboardListItem dashboardListItem) { var settingsUtils = new SettingsUtils(); var settings = NewPlusViewModel.LoadSettings(settingsUtils); - NewPlusViewModel.CopyTemplateExamples(settings.TemplateLocation); + NewPlusViewModel.CopyTemplateExamples(settings.Properties.TemplateLocation.Value); } } diff --git a/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs index b1cceb8afbf9..cab1a9df77cc 100644 --- a/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs @@ -47,9 +47,9 @@ public NewPlusViewModel(ISettingsUtils settingsUtils, ISettingsRepository(NewPlusSettings.ModuleName); - if (string.IsNullOrEmpty(settings.TemplateLocation)) + if (string.IsNullOrEmpty(settings.Properties.TemplateLocation.Value)) { // This can happen when running the DEBUG Settings application without first letting the runner create the default settings file. - settings.TemplateLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Microsoft", "PowerToys", "NewPlus", "Templates"); + settings.Properties.TemplateLocation.Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Microsoft", "PowerToys", "NewPlus", "Templates"); } } catch (Exception e) @@ -278,10 +272,5 @@ private async Task PickFolderDialog() var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(App.GetSettingsWindow()); return await Task.FromResult(GetFolderDialogWithFlags(hwnd, FolderDialogFlags._BIF_NEWDIALOGSTYLE)); } - - private void SaveSettingsToJson() - { - _settingsUtils.SaveSettings(Settings.ToJsonString(), ModuleName); - } } } From 28b90d5f4917c65183e7b65648254ef18bc6cc46 Mon Sep 17 00:00:00 2001 From: Seraphima Zykova Date: Mon, 30 Sep 2024 19:23:21 +0300 Subject: [PATCH 09/30] [Workspaces]Fix application icons on ARM (#35146) fixed app path --- src/modules/Workspaces/WorkspacesLib/AppUtils.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp b/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp index 389e54eae5ae..2d69d6f86ffe 100644 --- a/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp +++ b/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp @@ -26,11 +26,11 @@ namespace Utils constexpr const wchar_t* FileExplorerName = L"File Explorer"; constexpr const wchar_t* FileExplorerPath = L"C:\\WINDOWS\\EXPLORER.EXE"; - constexpr const wchar_t* SystemSettingsPath = L"SYSTEMSETTINGS.EXE"; constexpr const wchar_t* PowerToys = L"PowerToys.exe"; constexpr const wchar_t* PowerToysSettingsUpper = L"POWERTOYS.SETTINGS.EXE"; constexpr const wchar_t* PowerToysSettings = L"PowerToys.Settings.exe"; constexpr const wchar_t* ApplicationFrameHost = L"APPLICATIONFRAMEHOST.EXE"; + constexpr const wchar_t* Exe = L".EXE"; } AppList IterateAppsFolder() @@ -258,8 +258,8 @@ namespace Utils if (appPathUpper.contains(installPathUpper)) { - // check if the found app is the System Settings. If yes, update the install path to the exe path - if (appPathUpper.ends_with(NonLocalizable::SystemSettingsPath)) + // Update the install path to keep .exe in the path + if (!installPathUpper.ends_with(NonLocalizable::Exe)) { auto settingsAppData = appData; settingsAppData.installPath = appPath; From 6c17fae14855ec5f18f7fbe0253b5d3e7307b477 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Mon, 30 Sep 2024 11:04:49 -0700 Subject: [PATCH 10/30] Removed build status from readme (#35113) Removed build status --- README.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/README.md b/README.md index 7bdc0becf09b..c178872a616f 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,6 @@ [How to use PowerToys][usingPowerToys-docs-link] | [Downloads & Release notes][github-release-link] | [Contributing to PowerToys](#contributing) | [What's Happening](#whats-happening) | [Roadmap](#powertoys-roadmap) -## Build status - -| Architecture | Solution (Main) | Solution (Stable) | Installer (Main) | -|--------------|-----------------|-------------------|------------------| -| x64 | [![Build Status for Main](https://dev.azure.com/shine-oss/PowerToys/_apis/build/status%2FPowerToys%20CI?branchName=main&jobName=Build%20x64%20Release)](https://dev.azure.com/shine-oss/PowerToys/_build/latest?definitionId=3&branchName=main) | [![Build Status for Stable](https://dev.azure.com/shine-oss/PowerToys/_apis/build/status%2FPowerToys%20CI?branchName=stable&jobName=Build%20x64%20Release)](https://dev.azure.com/shine-oss/PowerToys/_build/latest?definitionId=3&branchName=stable) | [![Build Status Installer pipeline](https://dev.azure.com/microsoft/Dart/_apis/build/status/PowerToys/PowerToys%20Signed%20YAML%20Release%20Build?branchName=main&jobName=Build&configuration=Build%20Release_x64)](https://dev.azure.com/microsoft/Dart/_build/latest?definitionId=76541&branchName=main) | -| ARM64 | [![Build Status for Main](https://dev.azure.com/shine-oss/PowerToys/_apis/build/status%2FPowerToys%20CI?branchName=main&jobName=Build%20arm64%20Release)](https://dev.azure.com/shine-oss/PowerToys/_build/latest?definitionId=3&branchName=main) | [![Build Status for Stable](https://dev.azure.com/shine-oss/PowerToys/_apis/build/status%2FPowerToys%20CI?branchName=main&jobName=Build%20arm64%20Release)](https://dev.azure.com/shine-oss/PowerToys/_build/latest?definitionId=3&branchName=main) | [![Build Status Installer pipeline](https://dev.azure.com/microsoft/Dart/_apis/build/status/PowerToys/PowerToys%20Signed%20YAML%20Release%20Build?branchName=main&jobName=Build&configuration=Build%20Release_arm64)](https://dev.azure.com/microsoft/Dart/_build/latest?definitionId=76541&branchName=main) | - ## About Microsoft PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity. For more info on [PowerToys overviews and how to use the utilities][usingPowerToys-docs-link], or any other tools and resources for [Windows development environments](https://learn.microsoft.com/windows/dev-environment/overview), head over to [learn.microsoft.com][usingPowerToys-docs-link]! From ccdfbb0f685c42700e7ac0381edd5972cc645892 Mon Sep 17 00:00:00 2001 From: Laszlo Nemeth <57342539+donlaci@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:52:49 +0200 Subject: [PATCH 11/30] [Workspaces]Fix Workspace icon when installed, move to assets (#35163) * [Workspaces] fix defaulticon.ico, move it to the Assets directory * Move assets to single source of truth. Installer logic --------- Co-authored-by: Stefan Markovic --- .../PowerToysSetup/PowerToysInstaller.wixproj | 2 ++ installer/PowerToysSetup/Product.wxs | 1 + installer/PowerToysSetup/Workspaces.wxs | 31 ++++++++++++++++++ .../generateAllFileComponents.ps1 | 4 +++ .../PowerToysSetupCustomActions.vcxproj | 1 + .../Workspaces}/DefaultIcon.ico | Bin .../Assets/{ => Workspaces}/Workspaces.ico | Bin .../WorkspacesEditor/Models/Application.cs | 2 +- .../WorkspacesEditor/WorkspacesEditor.csproj | 15 +++------ .../WorkspacesEditor/images/Workspaces.ico | Bin 467385 -> 0 bytes .../WorkspacesLauncherResource.base.rc | Bin 2754 -> 2776 bytes .../Models/AppLaunching.cs | 2 +- .../WorkspacesLauncherUI.csproj | 18 ++++------ .../images/DefaultIcon.ico | Bin 112730 -> 0 bytes .../images/Workspaces.ico | Bin 467385 -> 0 bytes .../WorkspacesSnapshotToolResources.base.rc | Bin 2754 -> 2776 bytes .../WorkspacesWindowArrangerResource.base.rc | Bin 2754 -> 2776 bytes 17 files changed, 52 insertions(+), 24 deletions(-) create mode 100644 installer/PowerToysSetup/Workspaces.wxs rename src/modules/Workspaces/{WorkspacesEditor/images => Assets/Workspaces}/DefaultIcon.ico (100%) rename src/modules/Workspaces/Assets/{ => Workspaces}/Workspaces.ico (100%) delete mode 100644 src/modules/Workspaces/WorkspacesEditor/images/Workspaces.ico delete mode 100644 src/modules/Workspaces/WorkspacesLauncherUI/images/DefaultIcon.ico delete mode 100644 src/modules/Workspaces/WorkspacesLauncherUI/images/Workspaces.ico diff --git a/installer/PowerToysSetup/PowerToysInstaller.wixproj b/installer/PowerToysSetup/PowerToysInstaller.wixproj index 6d9ca4a6c53c..2826a68493e5 100644 --- a/installer/PowerToysSetup/PowerToysInstaller.wixproj +++ b/installer/PowerToysSetup/PowerToysInstaller.wixproj @@ -54,6 +54,7 @@ call powershell.exe -NonInteractive -executionpolicy Unrestricted -File $(MSBuil call move /Y ..\..\..\VideoConference.wxs.bk ..\..\..\VideoConference.wxs call move /Y ..\..\..\WinAppSDK.wxs.bk ..\..\..\WinAppSDK.wxs call move /Y ..\..\..\WinUI3Applications.wxs.bk ..\..\..\WinUI3Applications.wxs + call move /Y ..\..\..\Workspaces.wxs.bk ..\..\..\Workspaces.wxs @@ -125,6 +126,7 @@ call powershell.exe -NonInteractive -executionpolicy Unrestricted -File $(MSBuil + diff --git a/installer/PowerToysSetup/Product.wxs b/installer/PowerToysSetup/Product.wxs index 3a30002a37c1..7a3a6ee69730 100644 --- a/installer/PowerToysSetup/Product.wxs +++ b/installer/PowerToysSetup/Product.wxs @@ -79,6 +79,7 @@ + diff --git a/installer/PowerToysSetup/Workspaces.wxs b/installer/PowerToysSetup/Workspaces.wxs new file mode 100644 index 000000000000..4237aab94548 --- /dev/null +++ b/installer/PowerToysSetup/Workspaces.wxs @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/installer/PowerToysSetup/generateAllFileComponents.ps1 b/installer/PowerToysSetup/generateAllFileComponents.ps1 index 42864c392cc0..50ce0f2dd641 100644 --- a/installer/PowerToysSetup/generateAllFileComponents.ps1 +++ b/installer/PowerToysSetup/generateAllFileComponents.ps1 @@ -317,3 +317,7 @@ Generate-FileComponents -fileListName "SettingsV2AssetsFiles" -wxsFilePath $PSSc Generate-FileComponents -fileListName "SettingsV2AssetsModulesFiles" -wxsFilePath $PSScriptRoot\Settings.wxs -regroot $registryroot Generate-FileComponents -fileListName "SettingsV2OOBEAssetsModulesFiles" -wxsFilePath $PSScriptRoot\Settings.wxs -regroot $registryroot Generate-FileComponents -fileListName "SettingsV2OOBEAssetsFluentIconsFiles" -wxsFilePath $PSScriptRoot\Settings.wxs -regroot $registryroot + +#Workspaces +Generate-FileList -fileDepsJson "" -fileListName WorkspacesImagesComponentFiles -wxsFilePath $PSScriptRoot\Workspaces.wxs -depsPath "$PSScriptRoot..\..\..\$platform\Release\Assets\Workspaces\" +Generate-FileComponents -fileListName "WorkspacesImagesComponentFiles" -wxsFilePath $PSScriptRoot\Workspaces.wxs -regroot $registryroot diff --git a/installer/PowerToysSetupCustomActions/PowerToysSetupCustomActions.vcxproj b/installer/PowerToysSetupCustomActions/PowerToysSetupCustomActions.vcxproj index af6a0f184b09..959a600706ba 100644 --- a/installer/PowerToysSetupCustomActions/PowerToysSetupCustomActions.vcxproj +++ b/installer/PowerToysSetupCustomActions/PowerToysSetupCustomActions.vcxproj @@ -76,6 +76,7 @@ call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\VideoConference.wxs"" ""$(ProjectDir)..\PowerToysSetup\VideoConference.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\WinAppSDK.wxs"" ""$(ProjectDir)..\PowerToysSetup\WinAppSDK.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\WinUI3Applications.wxs"" ""$(ProjectDir)..\PowerToysSetup\WinUI3Applications.wxs.bk"""" + call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Workspaces.wxs"" ""$(ProjectDir)..\PowerToysSetup\Workspaces.wxs.bk"""" if not "$(NormalizedPerUserValue)" == "true" call powershell.exe -NonInteractive -executionpolicy Unrestricted -File ..\PowerToysSetup\generateAllFileComponents.ps1 -platform $(Platform) if "$(NormalizedPerUserValue)" == "true" call powershell.exe -NonInteractive -executionpolicy Unrestricted -File ..\PowerToysSetup\generateAllFileComponents.ps1 -platform $(Platform) -installscopeperuser $(NormalizedPerUserValue) diff --git a/src/modules/Workspaces/WorkspacesEditor/images/DefaultIcon.ico b/src/modules/Workspaces/Assets/Workspaces/DefaultIcon.ico similarity index 100% rename from src/modules/Workspaces/WorkspacesEditor/images/DefaultIcon.ico rename to src/modules/Workspaces/Assets/Workspaces/DefaultIcon.ico diff --git a/src/modules/Workspaces/Assets/Workspaces.ico b/src/modules/Workspaces/Assets/Workspaces/Workspaces.ico similarity index 100% rename from src/modules/Workspaces/Assets/Workspaces.ico rename to src/modules/Workspaces/Assets/Workspaces/Workspaces.ico diff --git a/src/modules/Workspaces/WorkspacesEditor/Models/Application.cs b/src/modules/Workspaces/WorkspacesEditor/Models/Application.cs index 9f7be1374273..c31087c20c70 100644 --- a/src/modules/Workspaces/WorkspacesEditor/Models/Application.cs +++ b/src/modules/Workspaces/WorkspacesEditor/Models/Application.cs @@ -247,7 +247,7 @@ public Icon Icon { Logger.LogWarning($"Icon not found on app path: {AppPath}. Using default icon"); IsNotFound = true; - _icon = new Icon(@"images\DefaultIcon.ico"); + _icon = new Icon(@"Assets\Workspaces\DefaultIcon.ico"); } } diff --git a/src/modules/Workspaces/WorkspacesEditor/WorkspacesEditor.csproj b/src/modules/Workspaces/WorkspacesEditor/WorkspacesEditor.csproj index 50ec21ea11df..aa359291eb59 100644 --- a/src/modules/Workspaces/WorkspacesEditor/WorkspacesEditor.csproj +++ b/src/modules/Workspaces/WorkspacesEditor/WorkspacesEditor.csproj @@ -23,16 +23,12 @@ - images\Workspaces.ico + ..\Assets\Workspaces\Workspaces.ico app.manifest PowerToys.WorkspacesEditor - - - - tlbimp @@ -54,10 +50,10 @@ - - Always + + Assets\Workspaces\%(Filename)%(Extension) + PreserveNewest - @@ -100,7 +96,4 @@ Settings.Designer.cs - - <_DeploymentManifestIconFile Remove="images\Workspaces.ico" /> - \ No newline at end of file diff --git a/src/modules/Workspaces/WorkspacesEditor/images/Workspaces.ico b/src/modules/Workspaces/WorkspacesEditor/images/Workspaces.ico deleted file mode 100644 index 14292758fa2a98ddd72db0cfa95c2cfa63997e1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467385 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 delta 11 Scmca1dPsD`7Ou&sxcC4cr39z| diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs b/src/modules/Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs index bd0f50b4674b..f3878a384758 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs @@ -58,7 +58,7 @@ public Icon Icon { Logger.LogWarning($"Icon not found on app path: {Application.ApplicationPath}. Using default icon"); IsNotFound = true; - _icon = new Icon(@"images\DefaultIcon.ico"); + _icon = new Icon(@"Assets\Workspaces\DefaultIcon.ico"); } } diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/WorkspacesLauncherUI.csproj b/src/modules/Workspaces/WorkspacesLauncherUI/WorkspacesLauncherUI.csproj index 146716b2017d..a915e0f0a393 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/WorkspacesLauncherUI.csproj +++ b/src/modules/Workspaces/WorkspacesLauncherUI/WorkspacesLauncherUI.csproj @@ -23,16 +23,20 @@ - images\Workspaces.ico + ..\Assets\Workspaces\Workspaces.ico app.manifest PowerToys.WorkspacesLauncherUI + - - + + Assets\Workspaces\%(Filename)%(Extension) + PreserveNewest + + tlbimp @@ -53,14 +57,6 @@ true - - - Always - - - Always - - diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/images/DefaultIcon.ico b/src/modules/Workspaces/WorkspacesLauncherUI/images/DefaultIcon.ico deleted file mode 100644 index 70279d6a4fc391900c32f61e8e124d6c070f6b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112730 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 IB+z&MKN#DTOaK4? diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/images/Workspaces.ico b/src/modules/Workspaces/WorkspacesLauncherUI/images/Workspaces.ico deleted file mode 100644 index 14292758fa2a98ddd72db0cfa95c2cfa63997e1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467385 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 delta 11 Scmca1dPsD`7Ou&sxcC4cr39z| diff --git a/src/modules/Workspaces/WorkspacesWindowArranger/WorkspacesWindowArrangerResource.base.rc b/src/modules/Workspaces/WorkspacesWindowArranger/WorkspacesWindowArrangerResource.base.rc index acbc7659d5b054fed671261969bad363a28f74d7..a93ab5827ddd43cde754d51a35ac184d51cd0f98 100644 GIT binary patch delta 11 ScmX>kdP8)>7Ou(jxKsci3j~q? delta 11 Scmca1dPsD`7Ou&sxcC4cr39z| From 6d69a79c7579e7876a0b0611feded5b5ec991f1a Mon Sep 17 00:00:00 2001 From: Jaime Bernardo Date: Tue, 1 Oct 2024 18:54:01 +0100 Subject: [PATCH 12/30] 0.85 changelog (#35095) * 0.85 changelog * Mention ZoomIt * Update README.md Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> * Address PR feedback * Update with latest repo changes * Update binary hashes * Fix spellcheck * GPO line in General instead --------- Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> --- README.md | 140 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 79 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index c178872a616f..c8d1fd21b2dc 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ Microsoft PowerToys is a set of utilities for power users to tune and streamline | [Environment Variables](https://aka.ms/PowerToysOverview_EnvironmentVariables) | [FancyZones](https://aka.ms/PowerToysOverview_FancyZones) | [File Explorer Add-ons](https://aka.ms/PowerToysOverview_FileExplorerAddOns) | | [File Locksmith](https://aka.ms/PowerToysOverview_FileLocksmith) | [Hosts File Editor](https://aka.ms/PowerToysOverview_HostsFileEditor) | [Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) | | [Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) | [Mouse utilities](https://aka.ms/PowerToysOverview_MouseUtilities) | [Mouse Without Borders](https://aka.ms/PowerToysOverview_MouseWithoutBorders) | -| [Peek](https://aka.ms/PowerToysOverview_Peek) | [Paste as Plain Text](https://aka.ms/PowerToysOverview_PastePlain) | [PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | -| [PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) | [Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) | [Registry Preview](https://aka.ms/PowerToysOverview_RegistryPreview) | -| [Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) | [Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) | [Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | -| [Video Conference Mute](https://aka.ms/PowerToysOverview_VideoConference) | [Workspaces](https://aka.ms/PowerToysOverview_Workspaces) | +| [New+](https://aka.ms/PowerToysOverview_NewPlus) | [Peek](https://aka.ms/PowerToysOverview_Peek) | [Paste as Plain Text](https://aka.ms/PowerToysOverview_PastePlain) | +| [PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | [PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) | [Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) | +| [Registry Preview](https://aka.ms/PowerToysOverview_RegistryPreview) | [Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) | [Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) | +| [Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | [Video Conference Mute](https://aka.ms/PowerToysOverview_VideoConference) | [Workspaces](https://aka.ms/PowerToysOverview_Workspaces) | ## Installing and running Microsoft PowerToys @@ -34,19 +34,19 @@ Microsoft PowerToys is a set of utilities for power users to tune and streamline Go to the [Microsoft PowerToys GitHub releases page][github-release-link] and click on `Assets` at the bottom to show the files available in the release. Please use the appropriate PowerToys installer that matches your machine's architecture and install scope. For most, it is `x64` and per-user. -[github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.85%22 -[github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.84%22 -[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.84.1/PowerToysUserSetup-0.84.1-x64.exe -[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.84.1/PowerToysUserSetup-0.84.1-arm64.exe -[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.84.1/PowerToysSetup-0.84.1-x64.exe -[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.84.1/PowerToysSetup-0.84.1-arm64.exe +[github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.86%22 +[github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.85%22 +[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.0/PowerToysUserSetup-0.85.0-x64.exe +[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.0/PowerToysUserSetup-0.85.0-arm64.exe +[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.0/PowerToysSetup-0.85.0-x64.exe +[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.0/PowerToysSetup-0.85.0-arm64.exe | Description | Filename | sha256 hash | |----------------|----------|-------------| -| Per user - x64 | [PowerToysUserSetup-0.84.1-x64.exe][ptUserX64] | 1CDAF3482B031D84DAE15188DE292FB44C5D211698089921040D94B256EBD3CA | -| Per user - ARM64 | [PowerToysUserSetup-0.84.1-arm64.exe][ptUserArm64] | E0207EF5147EE281D4F438E87A30586D8CAA24DE948950FF1B12E05454622CD9 | -| Machine wide - x64 | [PowerToysSetup-0.84.1-x64.exe][ptMachineX64] | 10DF9774DE1857051E135B9790A18A92C5C7F42587C733DEE991186E67231EE0 | -| Machine wide - ARM64 | [PowerToysSetup-0.84.1-arm64.exe][ptMachineArm64] | EB5DDA5EFBA17E813DBF24AFF668DDF5424ED3659234ABBC15441D478D812699 | +| Per user - x64 | [PowerToysUserSetup-0.85.0-x64.exe][ptUserX64] | 28A8BEA61040751287FF47C9BAC627A53A4670CFEA0C17B96EE947219E9A6EA9 | +| Per user - ARM64 | [PowerToysUserSetup-0.85.0-arm64.exe][ptUserArm64] | 2CA077E842B7C53BAFC75A25DBD16C1A4FCE20924C36FDA5AD8CF23CD836B855 | +| Machine wide - x64 | [PowerToysSetup-0.85.0-x64.exe][ptMachineX64] | 4A248AA914EEE339AA99D467FDFBDB1FCD7A49A8564DDBBB811D0EC69CEBAB75 | +| Machine wide - ARM64 | [PowerToysSetup-0.85.0-arm64.exe][ptMachineArm64] | B5FB04EAF44C4203E785411FF55025842B9C39D4970C0C934CB8ADBE79EF31AF | This is our preferred method. @@ -92,99 +92,117 @@ For guidance on developing for PowerToys, please read the [developer docs](/doc/ Our [prioritized roadmap][roadmap] of features and utilities that the core team is focusing on. -### 0.84 - August 2024 Update +### 0.85 - September 2024 Update -In this release, we focused on adding a new utility (PowerToys Workspaces), Advanced paste custom actions feature, stability, and improvements. +In this release, we focused on new features, stability, and improvements. **Highlights** - - New utility: PowerToys Workspaces - this utility can launch a set of applications to a custom layout and configuration on the desktop. App arrangements can be saved as a workspace and then relaunched with one click from the Workspaces Editor or from a desktop shortcut. In the editor, app configuration can be customized using CLI arguments and "launch as admin" modifiers, and app window sizes and positions can be updated as desired. This is our first public version of Workspaces and we are excited for you to try it out for yourself! Make sure to file issues you encounter on our GitHub so the team can continue to improve the utility. - - Known issues - the team is actively working on fixing these: - - Apps that launch as admin are unable to be repositioned to the desired layout. - - Border of "Remove" / "Add Back" app button in editor is not clearly visible on light themes. - - Added Awake --use-parent-pid CLI argument to attach to parent process. Thanks [@dend](https://github.com/dend)! - - Added custom actions - user-specified pre-defined prompts for the AI model. Additionally, actions (both standard and custom) are now searchable from prompt box and Ctrl + number in-app shortcuts are now applicable for first 9 search results. - - Ported all C++/CX code to C++/WinRT as part of a refactor and upgrade series aimed at enabling AOT (Ahead of Time) compilation for enhanced performance and reduced disk footprint. + - New utility: New+ - allows setting a personalized set of templates to quickly create files and folders from a File Explorer context menu. Thanks [@cgaarden](https://github.com/cgaarden)! + - Language selection - it's now possible to select which UI language should be used by PowerToys utilities. + - Lots of quality fixes for Workspaces, improving the number of supported applications. + - Reduced Peek memory usage by fixing image leaks. Thanks [@daverayment](https://github.com/daverayment)! ### General - - Added DSC support for ImageResizer resize sizes property. - + - Added a general setting to select which UI language should be used in PowerToys utilities. + - Fixed internal code of some policies for Group Policy Objects, that were reading registry entries using the wrong internal functions, and structured code better to avoid future mistakes of the same kind. Thanks [@htcfreek](https://github.com/htcfreek)! + ### Advanced Paste - - Added custom actions - user-specified pre-defined prompts for the AI model. Additionally, actions (both standard and custom) are now searchable from prompt box and Ctrl + number in-app shortcuts are now applicable for first 9 search results. + - Fixed some telemetry calls to signal Advanced Paste activation on the cases where a direct shortcut is being used without showing the UI. + - User-defined custom actions can only be used with AI turned on, so custom actions were disabled on Settings when AI is disabled and were hidden from the Advanced Paste UI. ### Awake - - Added --use-parent-pid CLI argument to attach to parent process and fixed issue causing tray icon to disappear. Thanks [@dend](https://github.com/dend)! + - Fixed tray icon behaviors, not appearing and showing incorrect time. Thanks [@dend](https://github.com/dend)! -### Hosts File Editor +### Environment Variables Editor - - Fixed save failure when the hosts file is hidden. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! + - Added the `_NT_SYMBOL_PATH`, `_NT_ALT_SYMBOL_PATH` and `_NT_SYMCACHE_PATH` as variables that are shown as lists. Thanks [@chwarr](https://github.com/chwarr)! -### File Explorer add-ons +### FancyZones - - Fixed multiple preview form positioning issues causing floating, detached windows, CoreWebView2 related exception and process leak. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! + - Allow snapping applications that were launched by Workspaces. -### Keyboard Manager +### File Locksmith - - Convert RemapBufferRow to a struct with descriptive field names. Thanks [@masaru-iritani](https://github.com/masaru-iritani)! - - Fixed issue causing stuck Ctrl key when shortcuts contain AltGr key. + - Fixed an issue causing File Locksmith to be triggered by unrelated verbs in the context menu. -### Peek +### Mouse Pointer Crosshairs - - Added long paths support. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! + - Allow crosshairs radius to be 0 pixels. Thanks [@octastylos-pseudodipteros](https://github.com/octastylos-pseudodipteros)! -### Quick Accent +### New+ - - Moved number superscripts and subscripts from Portuguese to all languages definition. Thanks [@octastylos-pseudodipteros](https://github.com/octastylos-pseudodipteros)! + - New utility - Allows setting a personalized set of templates to quickly create files and folders from a File Explorer context menu. Thanks [@cgaarden](https://github.com/cgaarden)! + - Added missing entry for New+ policy state reporting in the Bug Report tool. Thanks [@htcfreek](https://github.com/htcfreek)! + - Added a policy for enabling/disabling whether filename extensions should be shown. Thanks [@htcfreek](https://github.com/htcfreek)! -### PowerRename +### Peek - - Updated the tooltip text of the replace box info button. Thanks [@Agnibaan](https://github.com/Agnibaan)! + - Properly show file's modified date instead of creation date in the file previewer. Thanks [@daverayment](https://github.com/daverayment)! + - Fixed memory leak caused by unmanaged bitmap images not being freed. Thanks [@daverayment](https://github.com/daverayment)! + - Fixed an issue causing Peek to not be displayed the first time when using a preview handler to display files. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! + - Prevent tooltip in file previewer from overlapping with title bar controls. Thanks [@daverayment](https://github.com/daverayment)! + - Fixed memory leaks in thumbnails and refactored image previewer. Thanks [@daverayment](https://github.com/daverayment)! ### PowerToys Run - - Fixed window positioning on start-up introduced in 0.83. - - Improved default web browser detection. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! - - Fixed volume ounces conversion to support both imperial and metric. Thanks [@GhostVaibhav](https://github.com/GhostVaibhav)! - - Fixed thread-safety issue causing results not to be shown on first launch. + - Improved the message boxes to be more specific when PowerToys Run failed to initialize itself or any plugin. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! + - Use capital letters when showing degree results in the Unit Converter plugin. Thanks [@PesBandi](https://github.com/PesBandi)! -### Screen Ruler +### Quick Accent - - Added multiple measurements support for all measuring tools. + - Add the Middle Eastern Romanization character set. Thanks [@PesBandi](https://github.com/PesBandi)! + - Add the degree sign, integral and vertical ellipsis when "All Languages" is selected. Thanks [@rddunphy](https://github.com/rddunphy)! ### Settings - - Improved disabled animations InfoBar in Find My Mouse page. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! + - Fixed the link to the Workspaces documentation. (This was a hotfix for 0.84) + - Fixed flyout issues after the Windows App SDK upgrade. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! + - Fixed initialization for the New+ settings page. Thanks [@htcfreek](https://github.com/htcfreek)! + - Fixed enabled state of a control on the New+ settings page if the module is enabled by policy. Thanks [@htcfreek](https://github.com/htcfreek)! + - Fixed a crash when cancelling the template folder selection in the New+ settings page. ### Workspaces - - New utility: PowerToys Workspaces - this utility can launch a set of applications to a custom layout and configuration on the desktop. App arrangements can be saved as a workspace and then relaunched with one click from the Workspaces Editor or from a desktop shortcut. In the editor, app configuration can be customized using CLI arguments and "launch as admin" modifiers, and app window sizes and positions can be updated as desired. This is our first public version of Workspaces and we are excited for you to try it out for yourself! Make sure to file issues you encounter on our GitHub so the team can continue to improve the utility. + - Fixed detecting and snapping applications like Discord. (This was a hotfix for 0.84) + - Fixed detecting and snapping applications like Steam. (This was a hotfix for 0.84) + - Fixed button visibility in the UI. (This was a hotfix for 0.84) + - Fixed an issue launching the wrong project when the editor was closed without saving or cancelling a new project. + - Properly handle repositioning windows running as administrator. + - Properly handle cases where the monitor where a workspace was saved is no longer present. + - Fixed the workspace launcher restarting itself in a loop without success. + - Properly handle standalone applications. + - Fixed issues causing icons to not show. ### Documentation - - Added ChatGPTPowerToys plugin mention to thirdPartyRunPlugins.md. Thanks [@ferraridavide](https://github.com/ferraridavide)! + - Fixed the thirdPartyRunPlugins.md entry for the RDP plugin. Thanks [@YisroelTech](https://github.com/YisroelTech)! ### Development - - Ported all C++/CX code to C++/WinRT. - - Moved Version.props import to Directory.Build.props. - - Extracted self-containment related .csproj properties to src/Common.SelfContained.props. - - Unused and obsolete dependencies cleanup. Thanks [@davidegiacometti](https://github.com/davidegiacometti)! - - Extracted CSWinRT related .csproj properties to src/Common.Dotnet.CsWinRT.props. - - Upgraded Microsoft.Windows.CsWinRT to 2.0.8 and updated verifyDepsJsonLibraryVersions.ps1 to unblock PRs. - - Explicitly Set NuGet Audit Mode to Direct in Directory.Build.props to revert changes made with VS 17.12 update. Thanks [@snickler](https://github.com/snickler)! - - Upgraded UnitsNet to 5.56.0. + - Upgraded Windows App SDK to 1.6. + - Upgraded the Target Platform Version to 10.0.22621.0. + - Added a bot trigger to automatically add a label to Workspaces issues. Thanks [@plante-msft](https://github.com/plante-msft)! + - Fixed a regular expression in the bot triggers for wanting to submit community contributions. Thanks [@PesBandi](https://github.com/PesBandi)! + - Fixed analyzer errors after the Visual Studio 17.12 update. Thanks [@snickler](https://github.com/snickler)! + - Fixed the TSA configuration for release CI builds. + - Refactored automated file component generation during installer builds. + - Rewrote the Azure Devops build system to be more modular and share more definitions between PR CI and Release CI. + - Fixed debugging of the New+ page of the Settings application when a settings file was not present. + - Fixed setting the version of the App Manifest in the File Locksmith and New+ context menu app packages. + - Fixed abstracted UI library nuget package signing on release CI. + - Removed build status from GitHub README. -#### What is being planned for version 0.84 +#### What is being planned for version 0.86 -For [v0.85][github-next-release-work], we'll work on the items below: +For [v0.86][github-next-release-work], we'll work on the items below: - Stability / bug fixes - - Language selection - New module: File Actions Menu - - New module: New+ + - Integrate Sysinternals ZoomIt ## PowerToys Community From bcb5ce895ca4712a5f9f20dc00df3a3bacc7601a Mon Sep 17 00:00:00 2001 From: Jaime Bernardo Date: Thu, 3 Oct 2024 15:08:28 +0100 Subject: [PATCH 13/30] [New+]Fix call enabled telemetry event (#35236) --- .../powertoys_module.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/modules/NewPlus/NewShellExtensionContextMenu/powertoys_module.cpp b/src/modules/NewPlus/NewShellExtensionContextMenu/powertoys_module.cpp index 2e6dccfdeecd..303f072e3beb 100644 --- a/src/modules/NewPlus/NewShellExtensionContextMenu/powertoys_module.cpp +++ b/src/modules/NewPlus/NewShellExtensionContextMenu/powertoys_module.cpp @@ -91,6 +91,9 @@ class NewModule : public PowertoyModuleIface { Logger::info("New+ enabled via Settings UI"); + // Log telemetry + Trace::EventToggleOnOff(true); + newplus::utilities::register_msix_package(); powertoy_new_enabled = true; @@ -99,8 +102,7 @@ class NewModule : public PowertoyModuleIface virtual void disable() override { Logger::info("New+ disabled via Settings UI"); - - powertoy_new_enabled = false; + Disable(true); } virtual bool is_enabled() override @@ -125,12 +127,23 @@ class NewModule : public PowertoyModuleIface virtual void destroy() override { + Disable(false); delete this; } private: bool powertoy_new_enabled = false; + void Disable(bool const traceEvent) + { + // Log telemetry + if (traceEvent) + { + Trace::EventToggleOnOff(false); + } + powertoy_new_enabled = false; + } + void init_settings() { powertoy_new_enabled = NewSettingsInstance().GetEnabled(); From 577044163e53448f2bee154fd72d6e6e1e296cd0 Mon Sep 17 00:00:00 2001 From: Seraphima Zykova Date: Thu, 3 Oct 2024 17:09:13 +0300 Subject: [PATCH 14/30] [Workspaces]Fix launching incorrect workspace via shortcut (#35233) ensure one launcher instance is running --- src/modules/Workspaces/WorkspacesLauncher/main.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/modules/Workspaces/WorkspacesLauncher/main.cpp b/src/modules/Workspaces/WorkspacesLauncher/main.cpp index 38e88acd48cd..9f3d15109796 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/main.cpp +++ b/src/modules/Workspaces/WorkspacesLauncher/main.cpp @@ -16,6 +16,7 @@ const std::wstring moduleName = L"Workspaces\\WorkspacesLauncher"; const std::wstring internalPath = L""; +const std::wstring instanceMutexName = L"Local\\PowerToys_WorkspacesLauncher_InstanceMutex"; int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR cmdline, int cmdShow) { @@ -28,6 +29,18 @@ int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR cmdline, int cm return 0; } + auto mutex = CreateMutex(nullptr, true, instanceMutexName.c_str()); + if (mutex == nullptr) + { + Logger::error(L"Failed to create mutex. {}", get_last_error_or_default(GetLastError())); + } + + if (GetLastError() == ERROR_ALREADY_EXISTS) + { + Logger::warn(L"WorkspacesLauncher instance is already running"); + return 0; + } + std::wstring cmdLineStr{ GetCommandLineW() }; auto cmdArgs = split(cmdLineStr, L" "); if (cmdArgs.workspaceId.empty()) From e7175302c9226d7fab8ef3d9271abd188758ffbb Mon Sep 17 00:00:00 2001 From: Jaime Bernardo Date: Thu, 3 Oct 2024 17:24:23 +0100 Subject: [PATCH 15/30] [Settings]Fix crash showing non-existent New+ template folder (#35237) [Settings]Fix crash showing non-existent template folder --- .../ViewModels/NewPlusViewModel.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs index cab1a9df77cc..1a92af09daf4 100644 --- a/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs @@ -250,12 +250,21 @@ public void RefreshEnabledState() private void OpenNewTemplateFolder() { - var process = new ProcessStartInfo() + try + { + CopyTemplateExamples(_templateLocation); + + var process = new ProcessStartInfo() + { + FileName = _templateLocation, + UseShellExecute = true, + }; + Process.Start(process); + } + catch (Exception ex) { - FileName = _templateLocation, - UseShellExecute = true, - }; - Process.Start(process); + Logger.LogError("Failed to show NewPlus template folder.", ex); + } } private async void PickNewTemplateFolder() From 300d44f17bb1a631e3538d54369fc2cbf0a6e1e1 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Mon, 7 Oct 2024 09:44:25 -0700 Subject: [PATCH 16/30] Adjusting 8LWXpg user name in so it doesn't throw a spell check (#35221) * Update names.txt * Update expect.txt * Update expect.txt --- .github/actions/spell-check/allow/names.txt | 1 - .github/actions/spell-check/expect.txt | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/actions/spell-check/allow/names.txt b/.github/actions/spell-check/allow/names.txt index 95c1427b9daa..97638a1684ed 100644 --- a/.github/actions/spell-check/allow/names.txt +++ b/.github/actions/spell-check/allow/names.txt @@ -28,7 +28,6 @@ videoconference # USERS -LWXpg # (number eight)LWXpg is actual user name but spell checker throws error with a numeric leading value ... which is kinda odd Adoumie Advaith alekhyareddy diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt index 47662c376638..8ff275bc9582 100644 --- a/.github/actions/spell-check/expect.txt +++ b/.github/actions/spell-check/expect.txt @@ -1,6 +1,9 @@ # FALSE POSITIVES ## "PackagemanagerWrapper.cs" should be "PackageManagerWrapper.cs" ## NOTICE.MD > MOZILLA PUBLIC LICENSE v1.1 + +# user name but user folder causes a flag +8LWXpg aaaa abcdefghjkmnpqrstuvxyz abgr From 10b868717411f074c6cc1509c3b8182a05981a19 Mon Sep 17 00:00:00 2001 From: Ethan Fang <117125208+ethanfangg@users.noreply.github.com> Date: Mon, 7 Oct 2024 14:42:14 -0700 Subject: [PATCH 17/30] Updated README.md for 0.85.1 release (#35296) --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c8d1fd21b2dc..aa0648fb40f3 100644 --- a/README.md +++ b/README.md @@ -36,17 +36,17 @@ Go to the [Microsoft PowerToys GitHub releases page][github-release-link] and cl [github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.86%22 [github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.85%22 -[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.0/PowerToysUserSetup-0.85.0-x64.exe -[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.0/PowerToysUserSetup-0.85.0-arm64.exe -[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.0/PowerToysSetup-0.85.0-x64.exe -[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.0/PowerToysSetup-0.85.0-arm64.exe - +[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.1/PowerToysUserSetup-0.85.1-x64.exe +[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.1/PowerToysUserSetup-0.85.1-arm64.exe +[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.1/PowerToysSetup-0.85.1-x64.exe +[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.85.1/PowerToysSetup-0.85.1-arm64.exe + | Description | Filename | sha256 hash | |----------------|----------|-------------| -| Per user - x64 | [PowerToysUserSetup-0.85.0-x64.exe][ptUserX64] | 28A8BEA61040751287FF47C9BAC627A53A4670CFEA0C17B96EE947219E9A6EA9 | -| Per user - ARM64 | [PowerToysUserSetup-0.85.0-arm64.exe][ptUserArm64] | 2CA077E842B7C53BAFC75A25DBD16C1A4FCE20924C36FDA5AD8CF23CD836B855 | -| Machine wide - x64 | [PowerToysSetup-0.85.0-x64.exe][ptMachineX64] | 4A248AA914EEE339AA99D467FDFBDB1FCD7A49A8564DDBBB811D0EC69CEBAB75 | -| Machine wide - ARM64 | [PowerToysSetup-0.85.0-arm64.exe][ptMachineArm64] | B5FB04EAF44C4203E785411FF55025842B9C39D4970C0C934CB8ADBE79EF31AF | +| Per user - x64 | [PowerToysUserSetup-0.85.1-x64.exe][ptUserX64] | 5F287C34BF68972C55D7C26585EA5C449B0DBA7D458BF7039CFF448E1D7B732B | +| Per user - ARM64 | [PowerToysUserSetup-0.85.1-arm64.exe][ptUserArm64] | 6D5C3B24156E6E66FD38AD15076B8442F0A1C5CFCBBDC33AD478FB27E5E086AE | +| Machine wide - x64 | [PowerToysSetup-0.85.1-x64.exe][ptMachineX64] | 1CDD3C9602F6E5DDC19C66A4FDFE4231389C08E6A037DD22C0A6471F10C7BE02 | +| Machine wide - ARM64 | [PowerToysSetup-0.85.1-arm64.exe][ptMachineArm64] | 6F4DC0217495973B974B7AC1099FD01A2A0FCEE96E8719074EC97FBBC0ECAC4A | This is our preferred method. From 07ec7980d16ebe6376fe52c66c8115f445a1a891 Mon Sep 17 00:00:00 2001 From: "Dustin L. Howett" Date: Tue, 8 Oct 2024 14:12:54 -0500 Subject: [PATCH 18/30] ci: move the precheck dependency+condition up to the stage (#35321) This should prevent the tests from running (and failing) when PreCheck skips the build. --- .pipelines/v2/templates/pipeline-ci-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pipelines/v2/templates/pipeline-ci-build.yml b/.pipelines/v2/templates/pipeline-ci-build.yml index 17f4654ccda5..5410cd030ba0 100644 --- a/.pipelines/v2/templates/pipeline-ci-build.yml +++ b/.pipelines/v2/templates/pipeline-ci-build.yml @@ -32,12 +32,12 @@ stages: displayName: Build ${{ platform }} ${{ if ne(variables['Build.Reason'], 'Manual') }}: dependsOn: [Precheck] + condition: and(succeeded(), ne(dependencies.Precheck.outputs['Precheck.verifyBuildRequest.skipBuild'], 'Yes')) ${{ else }}: dependsOn: [] jobs: - template: job-build-project.yml parameters: - condition: and(succeeded(), or(eq(variables['Build.Reason'], 'Manual'), ne(stageDependencies.Precheck.Precheck.outputs['verifyBuildRequest.skipBuild'], 'Yes'))) pool: ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L From 2146dff3bfc374ceec466e4c6f091d47f08be130 Mon Sep 17 00:00:00 2001 From: Aaron Junker-Wildi Date: Thu, 10 Oct 2024 01:00:51 +0200 Subject: [PATCH 19/30] Add the new issue types to the issue templates (#35352) We added issue types to our GitHub org. This PR adds those to the corresponding issue templates. --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + .github/ISSUE_TEMPLATE/feature_request.yml | 1 + .github/ISSUE_TEMPLATE/translation_issue.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 56800fb1d6b8..f2eb897a4d56 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,5 +1,6 @@ name: "🕷️ Bug report" description: Report errors or unexpected behavior +type: Bug labels: - Issue-Bug - Needs-Triage diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index ade50bf5f52d..d7d092dbca85 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,5 +1,6 @@ name: "⭐ Feature or enhancement request" description: Propose something new. +type: Feature labels: - Needs-Triage body: diff --git a/.github/ISSUE_TEMPLATE/translation_issue.yml b/.github/ISSUE_TEMPLATE/translation_issue.yml index 7cb712df3015..69787a3ed685 100644 --- a/.github/ISSUE_TEMPLATE/translation_issue.yml +++ b/.github/ISSUE_TEMPLATE/translation_issue.yml @@ -1,5 +1,6 @@ name: "🌐 Localization/Translation issue" description: Report incorrect translations. +type: Bug labels: - Issue-Bug - Area-Localization From e1231235fe98eca4573f9ba40a71d4921bf5cf89 Mon Sep 17 00:00:00 2001 From: Jeremy Sinclair <4016293+snickler@users.noreply.github.com> Date: Thu, 10 Oct 2024 16:02:40 -0400 Subject: [PATCH 20/30] [Security][Deps]Update System.Text.Json, System.Runtime.Caching and their dependencies to latest versions (#35353) * [Deps] Update System.Text.Json to 8.0.5 * [Deps] Update System.Runtime.Caching to 8.0.1 * Update NOTICE.md * [Deps] Update Microsoft.Windows.Compatibility to 8.0.10 * Update NOTICE.md * Hack cleanup --------- Co-authored-by: Jaime Bernardo --- Directory.Packages.props | 20 +++++++--------- NOTICE.md | 16 ++++++------- .../Hosts/Hosts.Tests/Hosts.Tests.csproj | 4 ---- ....PowerToys.Run.Plugin.UnitConverter.csproj | 8 ------- ...werToys.Run.Plugin.VSCodeWorkspaces.csproj | 8 ------- ...PowerToys.Run.Plugin.ValueGenerator.csproj | 11 --------- ...nity.PowerToys.Run.Plugin.WebSearch.csproj | 11 --------- .../Microsoft.Plugin.Folder.csproj | 8 ------- .../Microsoft.Plugin.Indexer.csproj | 20 ---------------- .../Microsoft.Plugin.Program.csproj | 11 --------- .../Microsoft.Plugin.Shell.csproj | 11 --------- .../Microsoft.Plugin.Uri.csproj | 11 --------- .../Microsoft.Plugin.WindowWalker.csproj | 11 --------- ...oft.PowerToys.Run.Plugin.Calculator.csproj | 8 ------- ...rosoft.PowerToys.Run.Plugin.History.csproj | 24 ------------------- ...rosoft.PowerToys.Run.Plugin.OneNote.csproj | 8 ------- ...soft.PowerToys.Run.Plugin.PowerToys.csproj | 11 --------- ...osoft.PowerToys.Run.Plugin.Registry.csproj | 11 --------- ...rosoft.PowerToys.Run.Plugin.Service.csproj | 8 ------- ...crosoft.PowerToys.Run.Plugin.System.csproj | 11 --------- ...osoft.PowerToys.Run.Plugin.TimeDate.csproj | 11 --------- ...owerToys.Run.Plugin.WindowsSettings.csproj | 11 --------- ...owerToys.Run.Plugin.WindowsTerminal.csproj | 11 --------- .../PowerLauncher/PowerLauncher.csproj | 6 ----- .../Wox.Infrastructure.csproj | 8 ------- .../launcher/Wox.Plugin/Wox.Plugin.csproj | 8 ------- src/modules/launcher/Wox.Test/Wox.Test.csproj | 24 ------------------- .../Settings.UI.UnitTests.csproj | 8 ------- 28 files changed, 15 insertions(+), 303 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 0967532dc32c..767ffa86eeac 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -35,7 +35,7 @@ - + - - - + - - - - + + - + @@ -93,4 +89,4 @@ - \ No newline at end of file + diff --git a/NOTICE.md b/NOTICE.md index d4328bbfc40d..bdd5b0cbfa97 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -1327,7 +1327,7 @@ EXHIBIT A -Mozilla Public License. - Microsoft.Toolkit.Uwp.Notifications 7.1.2 - Microsoft.Web.WebView2 1.0.2739.15 - Microsoft.Win32.SystemEvents 8.0.0 -- Microsoft.Windows.Compatibility 8.0.7 +- Microsoft.Windows.Compatibility 8.0.10 - Microsoft.Windows.CsWin32 0.2.46-beta - Microsoft.Windows.CsWinRT 2.1.1 - Microsoft.Windows.SDK.BuildTools 10.0.22621.2428 @@ -1347,21 +1347,19 @@ EXHIBIT A -Mozilla Public License. - System.CodeDom 8.0.0 - System.CommandLine 2.0.0-beta4.22272.1 - System.ComponentModel.Composition 8.0.0 -- System.Configuration.ConfigurationManager 8.0.0 -- System.Data.OleDb 8.0.0 +- System.Configuration.ConfigurationManager 8.0.1 +- System.Data.OleDb 8.0.1 - System.Data.SqlClient 4.8.6 -- System.Diagnostics.EventLog 8.0.0 -- System.Diagnostics.PerformanceCounter 8.0.0 +- System.Diagnostics.EventLog 8.0.1 - System.Drawing.Common 8.0.6 - System.IO.Abstractions 17.2.3 - System.IO.Abstractions.TestingHelpers 17.2.3 - System.Management 8.0.0 - System.Reactive 6.0.1 -- System.Runtime.Caching 8.0.0 -- System.Security.Cryptography.ProtectedData 8.0.0 -- System.ServiceProcess.ServiceController 8.0.0 +- System.Runtime.Caching 8.0.1 +- System.ServiceProcess.ServiceController 8.0.1 - System.Text.Encoding.CodePages 8.0.0 -- System.Text.Json 8.0.4 +- System.Text.Json 8.0.5 - UnicodeInformation 2.6.0 - UnitsNet 5.56.0 - UTF.Unknown 2.5.1 diff --git a/src/modules/Hosts/Hosts.Tests/Hosts.Tests.csproj b/src/modules/Hosts/Hosts.Tests/Hosts.Tests.csproj index 9032f1ffc071..8d332f9ea520 100644 --- a/src/modules/Hosts/Hosts.Tests/Hosts.Tests.csproj +++ b/src/modules/Hosts/Hosts.Tests/Hosts.Tests.csproj @@ -20,10 +20,6 @@ runtime - - - runtime - diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj index 9e2f9e1c3667..8bfd37e7a8be 100644 --- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj +++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj @@ -32,14 +32,6 @@ - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.VSCodeWorkspaces/Community.PowerToys.Run.Plugin.VSCodeWorkspaces.csproj b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.VSCodeWorkspaces/Community.PowerToys.Run.Plugin.VSCodeWorkspaces.csproj index c61a0554ca3f..f482308c4255 100644 --- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.VSCodeWorkspaces/Community.PowerToys.Run.Plugin.VSCodeWorkspaces.csproj +++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.VSCodeWorkspaces/Community.PowerToys.Run.Plugin.VSCodeWorkspaces.csproj @@ -28,14 +28,6 @@ - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Community.PowerToys.Run.Plugin.ValueGenerator.csproj b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Community.PowerToys.Run.Plugin.ValueGenerator.csproj index 9db52b8c9f15..31ba1ce1e85a 100644 --- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Community.PowerToys.Run.Plugin.ValueGenerator.csproj +++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.ValueGenerator/Community.PowerToys.Run.Plugin.ValueGenerator.csproj @@ -23,17 +23,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.WebSearch/Community.PowerToys.Run.Plugin.WebSearch.csproj b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.WebSearch/Community.PowerToys.Run.Plugin.WebSearch.csproj index dc62d6f283bd..623ea6807537 100644 --- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.WebSearch/Community.PowerToys.Run.Plugin.WebSearch.csproj +++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.WebSearch/Community.PowerToys.Run.Plugin.WebSearch.csproj @@ -24,17 +24,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Microsoft.Plugin.Folder.csproj b/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Microsoft.Plugin.Folder.csproj index 0461e44c9f8e..9207e9dd560c 100644 --- a/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Microsoft.Plugin.Folder.csproj +++ b/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Microsoft.Plugin.Folder.csproj @@ -41,14 +41,6 @@ - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/Microsoft.Plugin.Indexer.csproj b/src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/Microsoft.Plugin.Indexer.csproj index af67ad5ef766..da4679274614 100644 --- a/src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/Microsoft.Plugin.Indexer.csproj +++ b/src/modules/launcher/Plugins/Microsoft.Plugin.Indexer/Microsoft.Plugin.Indexer.csproj @@ -17,26 +17,6 @@ - - - runtime - - - - runtime - - - - runtime - - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.Program/Microsoft.Plugin.Program.csproj b/src/modules/launcher/Plugins/Microsoft.Plugin.Program/Microsoft.Plugin.Program.csproj index 17e802bd5a41..bf0034286fa0 100644 --- a/src/modules/launcher/Plugins/Microsoft.Plugin.Program/Microsoft.Plugin.Program.csproj +++ b/src/modules/launcher/Plugins/Microsoft.Plugin.Program/Microsoft.Plugin.Program.csproj @@ -31,17 +31,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.Shell/Microsoft.Plugin.Shell.csproj b/src/modules/launcher/Plugins/Microsoft.Plugin.Shell/Microsoft.Plugin.Shell.csproj index 5e951fc92222..8ac68f7c1482 100644 --- a/src/modules/launcher/Plugins/Microsoft.Plugin.Shell/Microsoft.Plugin.Shell.csproj +++ b/src/modules/launcher/Plugins/Microsoft.Plugin.Shell/Microsoft.Plugin.Shell.csproj @@ -27,17 +27,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.Uri/Microsoft.Plugin.Uri.csproj b/src/modules/launcher/Plugins/Microsoft.Plugin.Uri/Microsoft.Plugin.Uri.csproj index 4dc88cfea406..876096794ea7 100644 --- a/src/modules/launcher/Plugins/Microsoft.Plugin.Uri/Microsoft.Plugin.Uri.csproj +++ b/src/modules/launcher/Plugins/Microsoft.Plugin.Uri/Microsoft.Plugin.Uri.csproj @@ -24,17 +24,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Microsoft.Plugin.WindowWalker.csproj b/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Microsoft.Plugin.WindowWalker.csproj index c8c249b57ea6..c814348273e5 100644 --- a/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Microsoft.Plugin.WindowWalker.csproj +++ b/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Microsoft.Plugin.WindowWalker.csproj @@ -30,17 +30,6 @@ - - - - runtime - - - - runtime - - - True diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Microsoft.PowerToys.Run.Plugin.Calculator.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Microsoft.PowerToys.Run.Plugin.Calculator.csproj index 2545b7c3bca1..9f4123d32af1 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Microsoft.PowerToys.Run.Plugin.Calculator.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Microsoft.PowerToys.Run.Plugin.Calculator.csproj @@ -32,14 +32,6 @@ - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.History/Microsoft.PowerToys.Run.Plugin.History.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.History/Microsoft.PowerToys.Run.Plugin.History.csproj index 7571643e157d..ae1fac179732 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.History/Microsoft.PowerToys.Run.Plugin.History.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.History/Microsoft.PowerToys.Run.Plugin.History.csproj @@ -39,30 +39,6 @@ runtime - - - runtime - - - - runtime - - - - runtime - - - - runtime - - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.OneNote/Microsoft.PowerToys.Run.Plugin.OneNote.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.OneNote/Microsoft.PowerToys.Run.Plugin.OneNote.csproj index 8cf3825c6a78..4cc88d06e631 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.OneNote/Microsoft.PowerToys.Run.Plugin.OneNote.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.OneNote/Microsoft.PowerToys.Run.Plugin.OneNote.csproj @@ -41,14 +41,6 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.PowerToys/Microsoft.PowerToys.Run.Plugin.PowerToys.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.PowerToys/Microsoft.PowerToys.Run.Plugin.PowerToys.csproj index 6ef6bb4899c9..d31dab3b808c 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.PowerToys/Microsoft.PowerToys.Run.Plugin.PowerToys.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.PowerToys/Microsoft.PowerToys.Run.Plugin.PowerToys.csproj @@ -31,17 +31,6 @@ - - - - runtime - - - - runtime - - - True diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Registry/Microsoft.PowerToys.Run.Plugin.Registry.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Registry/Microsoft.PowerToys.Run.Plugin.Registry.csproj index 08bc952a0cad..fba2adb1c8bb 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Registry/Microsoft.PowerToys.Run.Plugin.Registry.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Registry/Microsoft.PowerToys.Run.Plugin.Registry.csproj @@ -22,17 +22,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Service/Microsoft.PowerToys.Run.Plugin.Service.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Service/Microsoft.PowerToys.Run.Plugin.Service.csproj index b3570eb53f02..15a60dca2186 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Service/Microsoft.PowerToys.Run.Plugin.Service.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Service/Microsoft.PowerToys.Run.Plugin.Service.csproj @@ -20,14 +20,6 @@ - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Microsoft.PowerToys.Run.Plugin.System.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Microsoft.PowerToys.Run.Plugin.System.csproj index 186dd449f847..e868337841fb 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Microsoft.PowerToys.Run.Plugin.System.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Microsoft.PowerToys.Run.Plugin.System.csproj @@ -20,17 +20,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Microsoft.PowerToys.Run.Plugin.TimeDate.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Microsoft.PowerToys.Run.Plugin.TimeDate.csproj index 886b0f7cce59..423615676413 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Microsoft.PowerToys.Run.Plugin.TimeDate.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.TimeDate/Microsoft.PowerToys.Run.Plugin.TimeDate.csproj @@ -20,17 +20,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsSettings/Microsoft.PowerToys.Run.Plugin.WindowsSettings.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsSettings/Microsoft.PowerToys.Run.Plugin.WindowsSettings.csproj index ba25563be6aa..9e7d5d6d2a30 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsSettings/Microsoft.PowerToys.Run.Plugin.WindowsSettings.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsSettings/Microsoft.PowerToys.Run.Plugin.WindowsSettings.csproj @@ -29,17 +29,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.csproj b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.csproj index af3fed4e6849..25c35fceaa7e 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.csproj +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.csproj @@ -17,17 +17,6 @@ - - - - runtime - - - - runtime - - - PreserveNewest diff --git a/src/modules/launcher/PowerLauncher/PowerLauncher.csproj b/src/modules/launcher/PowerLauncher/PowerLauncher.csproj index 3f18eafe12e7..b093bbc5759d 100644 --- a/src/modules/launcher/PowerLauncher/PowerLauncher.csproj +++ b/src/modules/launcher/PowerLauncher/PowerLauncher.csproj @@ -59,14 +59,8 @@ - - - - - runtime - diff --git a/src/modules/launcher/Wox.Infrastructure/Wox.Infrastructure.csproj b/src/modules/launcher/Wox.Infrastructure/Wox.Infrastructure.csproj index e4496cd3a626..6490b7cee5a8 100644 --- a/src/modules/launcher/Wox.Infrastructure/Wox.Infrastructure.csproj +++ b/src/modules/launcher/Wox.Infrastructure/Wox.Infrastructure.csproj @@ -33,14 +33,6 @@ - - - runtime - - - - runtime - runtime diff --git a/src/modules/launcher/Wox.Plugin/Wox.Plugin.csproj b/src/modules/launcher/Wox.Plugin/Wox.Plugin.csproj index 16b906f63410..e9179e6ddf90 100644 --- a/src/modules/launcher/Wox.Plugin/Wox.Plugin.csproj +++ b/src/modules/launcher/Wox.Plugin/Wox.Plugin.csproj @@ -33,14 +33,6 @@ - - - runtime - - - - runtime - diff --git a/src/modules/launcher/Wox.Test/Wox.Test.csproj b/src/modules/launcher/Wox.Test/Wox.Test.csproj index c50c1b2ee4ab..788ade0136d0 100644 --- a/src/modules/launcher/Wox.Test/Wox.Test.csproj +++ b/src/modules/launcher/Wox.Test/Wox.Test.csproj @@ -31,33 +31,9 @@ - - - runtime - - - - runtime - - - - runtime - - - - runtime - - - - runtime - runtime - - - runtime - diff --git a/src/settings-ui/Settings.UI.UnitTests/Settings.UI.UnitTests.csproj b/src/settings-ui/Settings.UI.UnitTests/Settings.UI.UnitTests.csproj index 950cced18b77..d3709d8fcafc 100644 --- a/src/settings-ui/Settings.UI.UnitTests/Settings.UI.UnitTests.csproj +++ b/src/settings-ui/Settings.UI.UnitTests/Settings.UI.UnitTests.csproj @@ -16,14 +16,6 @@ - - - runtime - - - - runtime - From d3869942c38ac80acc6069877f03668f28f0eb1d Mon Sep 17 00:00:00 2001 From: 8LWXpg <105704427+8LWXpg@users.noreply.github.com> Date: Fri, 11 Oct 2024 06:18:49 +0800 Subject: [PATCH 21/30] [PTRun][Docs] Add HackMD to Third-Party plugins (#35275) Update thirdPartyRunPlugins.md --- doc/thirdPartyRunPlugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/thirdPartyRunPlugins.md b/doc/thirdPartyRunPlugins.md index 4db22a1c7e7f..4f58b1bea5c8 100644 --- a/doc/thirdPartyRunPlugins.md +++ b/doc/thirdPartyRunPlugins.md @@ -56,3 +56,4 @@ Below are community created plugins that target a website or software. They are | [Scoop](https://github.com/Quriz/PowerToysRunScoop) | [Quriz](https://github.com/Quriz) | Search and install packages from Scoop | | [Spotify](https://github.com/waaverecords/PowerToys-Run-Spotify) | [waaverecords](https://github.com/waaverecords) | Search Spotify and control its player | | [PowerSearch for 1Password](https://github.com/KairuDeibisu/PowerToysRunPlugin1Password) | [KairuDeibisu](https://github.com/KairuDeibisu) | An unofficial plugin for searching 1Password for usernames and passwords | +| [HackMD](https://github.com/8LWXpg/PowerToysRun-HackMD) | [8LWXpg](https://github.com/8LWXpg) | Open HackMD notes | From ca1b0acbc98bdbe3b2756c332e00a94d5245b024 Mon Sep 17 00:00:00 2001 From: gokcekantarci <115616017+gokcekantarci@users.noreply.github.com> Date: Fri, 11 Oct 2024 13:51:02 +0300 Subject: [PATCH 22/30] [Deps]Upgrade WpfUI to 3.0.5 --- Directory.Packages.props | 2 +- NOTICE.md | 2 +- .../colorPicker/ColorPickerUI/Views/ColorEditorView.xaml | 2 ++ src/modules/launcher/PowerLauncher/MainWindow.xaml | 3 ++- src/modules/launcher/PowerLauncher/ResultList.xaml | 2 ++ 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 767ffa86eeac..d4b27080d5cd 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -82,7 +82,7 @@ - + diff --git a/NOTICE.md b/NOTICE.md index bdd5b0cbfa97..ddc6de142e87 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -1364,4 +1364,4 @@ EXHIBIT A -Mozilla Public License. - UnitsNet 5.56.0 - UTF.Unknown 2.5.1 - WinUIEx 2.2.0 -- WPF-UI 3.0.0 +- WPF-UI 3.0.5 diff --git a/src/modules/colorPicker/ColorPickerUI/Views/ColorEditorView.xaml b/src/modules/colorPicker/ColorPickerUI/Views/ColorEditorView.xaml index 269805aec9ec..d63f83a40b20 100644 --- a/src/modules/colorPicker/ColorPickerUI/Views/ColorEditorView.xaml +++ b/src/modules/colorPicker/ColorPickerUI/Views/ColorEditorView.xaml @@ -46,6 +46,8 @@ VerticalAlignment="Top" VerticalContentAlignment="Top" AutomationProperties.Name="{x:Static p:Resources.Color_History}" + Background="Transparent" + BorderBrush="Transparent" ItemsSource="{Binding ColorsHistory}" KeyboardNavigation.DirectionalNavigation="Contained" MouseWheel="HistoryColors_OnMouseWheelScroll" diff --git a/src/modules/launcher/PowerLauncher/MainWindow.xaml b/src/modules/launcher/PowerLauncher/MainWindow.xaml index 764dee2bbacf..30acc5c3c050 100644 --- a/src/modules/launcher/PowerLauncher/MainWindow.xaml +++ b/src/modules/launcher/PowerLauncher/MainWindow.xaml @@ -72,9 +72,10 @@ x:Name="pluginsHintsList" Grid.Row="1" Margin="16,0,0,0" - Padding="0,0,32,0" ItemContainerStyle="{StaticResource PluginsListViewItemStyle}" ItemsSource="{Binding Plugins}" + Background="Transparent" + BorderBrush="Transparent" PreviewMouseLeftButtonUp="PluginsHintsList_PreviewMouseLeftButtonUp" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" diff --git a/src/modules/launcher/PowerLauncher/ResultList.xaml b/src/modules/launcher/PowerLauncher/ResultList.xaml index 7eda85a709fd..7e387e9807a6 100644 --- a/src/modules/launcher/PowerLauncher/ResultList.xaml +++ b/src/modules/launcher/PowerLauncher/ResultList.xaml @@ -32,6 +32,8 @@ Date: Fri, 11 Oct 2024 09:35:13 -0400 Subject: [PATCH 23/30] [Deps] WinAppSDK 1.6.1 and CsWinRT 2.1.5 update (#35381) * [Deps] Update CsWinRT to 2.1.5 * [Deps] Update WinAppSDK to 1.6.1 * [Props] Updated WindowsSdkPackageVersion to 22621.48 in Common.Dotnet.CsWinRT.props * Updated NOTICE.md * [Peek] Resolve ambiguity with Color struct --- Directory.Packages.props | 4 ++-- NOTICE.md | 4 ++-- src/Common.Dotnet.CsWinRT.props | 2 +- .../MeasureToolCore/PowerToys.MeasureToolCore.vcxproj | 8 ++++---- src/modules/MeasureTool/MeasureToolCore/packages.config | 2 +- .../Peek.FilePreviewer/Controls/BrowserControl.xaml.cs | 2 +- .../powerrename/PowerRenameUILib/PowerRenameUI.vcxproj | 8 ++++---- src/modules/powerrename/PowerRenameUILib/packages.config | 2 +- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index d4b27080d5cd..e0797a627071 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -42,9 +42,9 @@ TODO: in Common.Dotnet.CsWinRT.props, on upgrade, verify RemoveCsWinRTPackageAnalyzer is no longer needed. This is present due to a bug in CsWinRT where WPF projects cause the analyzer to fail. --> - + - + diff --git a/NOTICE.md b/NOTICE.md index ddc6de142e87..a8059397e58a 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -1329,9 +1329,9 @@ EXHIBIT A -Mozilla Public License. - Microsoft.Win32.SystemEvents 8.0.0 - Microsoft.Windows.Compatibility 8.0.10 - Microsoft.Windows.CsWin32 0.2.46-beta -- Microsoft.Windows.CsWinRT 2.1.1 +- Microsoft.Windows.CsWinRT 2.1.5 - Microsoft.Windows.SDK.BuildTools 10.0.22621.2428 -- Microsoft.WindowsAppSDK 1.6.240829007 +- Microsoft.WindowsAppSDK 1.6.240923002 - Microsoft.Xaml.Behaviors.WinUI.Managed 2.0.9 - Microsoft.Xaml.Behaviors.Wpf 1.1.39 - ModernWpfUI 0.9.4 diff --git a/src/Common.Dotnet.CsWinRT.props b/src/Common.Dotnet.CsWinRT.props index 514997e71bf6..1669cba19678 100644 --- a/src/Common.Dotnet.CsWinRT.props +++ b/src/Common.Dotnet.CsWinRT.props @@ -2,7 +2,7 @@ - 10.0.22621.38 + 10.0.22621.48 net8.0-windows10.0.22621.0 10.0.19041.0 10.0.19041.0 diff --git a/src/modules/MeasureTool/MeasureToolCore/PowerToys.MeasureToolCore.vcxproj b/src/modules/MeasureTool/MeasureToolCore/PowerToys.MeasureToolCore.vcxproj index 444657646e39..b05546d9aace 100644 --- a/src/modules/MeasureTool/MeasureToolCore/PowerToys.MeasureToolCore.vcxproj +++ b/src/modules/MeasureTool/MeasureToolCore/PowerToys.MeasureToolCore.vcxproj @@ -1,6 +1,6 @@  - + @@ -137,8 +137,8 @@ - + @@ -149,8 +149,8 @@ - - + + \ No newline at end of file diff --git a/src/modules/MeasureTool/MeasureToolCore/packages.config b/src/modules/MeasureTool/MeasureToolCore/packages.config index 7043c92ee0fa..ed165ac47c4b 100644 --- a/src/modules/MeasureTool/MeasureToolCore/packages.config +++ b/src/modules/MeasureTool/MeasureToolCore/packages.config @@ -4,5 +4,5 @@ - + \ No newline at end of file diff --git a/src/modules/peek/Peek.FilePreviewer/Controls/BrowserControl.xaml.cs b/src/modules/peek/Peek.FilePreviewer/Controls/BrowserControl.xaml.cs index 1f1f6f9fbe58..eda90df8f955 100644 --- a/src/modules/peek/Peek.FilePreviewer/Controls/BrowserControl.xaml.cs +++ b/src/modules/peek/Peek.FilePreviewer/Controls/BrowserControl.xaml.cs @@ -164,7 +164,7 @@ private async void PreviewWV2_Loaded(object sender, RoutedEventArgs e) if (!_originalBackgroundColor.HasValue) { // HACK: We used to store PreviewBrowser.DefaultBackgroundColor here, but WebView started returning transparent when running without a debugger attached. We want html files to be seen as in the browser, which has white as a default background color. - _originalBackgroundColor = Colors.White; + _originalBackgroundColor = Microsoft.UI.Colors.White; } // Setting the background color to transparent when initially loading the WebView2 component. diff --git a/src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj b/src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj index fc9bd9b1f656..192a1528bdcd 100644 --- a/src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj +++ b/src/modules/powerrename/PowerRenameUILib/PowerRenameUI.vcxproj @@ -1,6 +1,6 @@  - + @@ -205,8 +205,8 @@ - + @@ -219,9 +219,9 @@ - - + + diff --git a/src/modules/powerrename/PowerRenameUILib/packages.config b/src/modules/powerrename/PowerRenameUILib/packages.config index 360805a64dce..1ff9b4687745 100644 --- a/src/modules/powerrename/PowerRenameUILib/packages.config +++ b/src/modules/powerrename/PowerRenameUILib/packages.config @@ -6,5 +6,5 @@ - + \ No newline at end of file From 3a228cc46e0d6ee0001351876e2622133b86d260 Mon Sep 17 00:00:00 2001 From: gokcekantarci <115616017+gokcekantarci@users.noreply.github.com> Date: Fri, 11 Oct 2024 17:51:22 +0300 Subject: [PATCH 24/30] [PTRun]Fix CultureNotFoundException Handling (#35256) --- .../PowerLauncher/ViewModel/MainViewModel.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs b/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs index 809c660cd1b8..5d6c55b46df0 100644 --- a/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs +++ b/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs @@ -1197,9 +1197,17 @@ public static string GetSearchText(int index, string input, string query) public static FlowDirection GetLanguageFlowDirection() { - bool isCurrentLanguageRightToLeft = System.Windows.Input.InputLanguageManager.Current.CurrentInputLanguage.TextInfo.IsRightToLeft; + try + { + bool isCurrentLanguageRightToLeft = System.Windows.Input.InputLanguageManager.Current.CurrentInputLanguage.TextInfo.IsRightToLeft; - return isCurrentLanguageRightToLeft ? FlowDirection.RightToLeft : FlowDirection.LeftToRight; + return isCurrentLanguageRightToLeft ? FlowDirection.RightToLeft : FlowDirection.LeftToRight; + } + catch (CultureNotFoundException ex) + { + Log.Exception($"CultureNotFoundException: {ex.Message}", ex, MethodBase.GetCurrentMethod().DeclaringType); + return FlowDirection.LeftToRight; // default FlowDirection.LeftToRight + } } protected virtual void Dispose(bool disposing) From 1d352c686aa9bbbfa6fdfc8b8f322d6a4613a9a2 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 11 Oct 2024 11:40:36 -0700 Subject: [PATCH 25/30] removing dup entry in spelling (#35379) Update expect.txt --- .github/actions/spell-check/expect.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt index 8ff275bc9582..83689c807171 100644 --- a/.github/actions/spell-check/expect.txt +++ b/.github/actions/spell-check/expect.txt @@ -32,7 +32,6 @@ AFFINETRANSFORM AFX AGGREGATABLE AHybrid -AKV akv ALarger ALLAPPS From 89ec5be5ba717e44981d2f788b70b0ff37974388 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 11 Oct 2024 11:56:55 -0700 Subject: [PATCH 26/30] Removing Markdown exclude (#35380) Update ci.yml --- .pipelines/v2/ci.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.pipelines/v2/ci.yml b/.pipelines/v2/ci.yml index 5e7bf266765e..a68de324ee2f 100644 --- a/.pipelines/v2/ci.yml +++ b/.pipelines/v2/ci.yml @@ -4,22 +4,22 @@ trigger: include: - main - stable - paths: - exclude: - - doc/* - - temp/* - - tools/* - - '**.md' +# paths: +# exclude: +# - doc/* +# - temp/* +# - tools/* +# - '**.md' pr: branches: include: - main - stable - paths: - exclude: - - '**.md' - - doc +# paths: +# exclude: +# - '**.md' +# - doc name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr) From 9994fd771515e6e5ff1ce22299c8e816cd9df27c Mon Sep 17 00:00:00 2001 From: Seraphima Zykova Date: Mon, 14 Oct 2024 16:51:02 +0300 Subject: [PATCH 27/30] [Workspaces] Sequential launch (#35297) --- .../WorkspacesEditor/Data/ProjectData.cs | 2 + .../WorkspacesEditor/Models/Application.cs | 3 + .../WorkspacesEditor/Models/Project.cs | 1 + .../Utils/WorkspacesEditorIO.cs | 1 + .../WorkspacesLauncher/AppLauncher.cpp | 47 ------- .../WorkspacesLauncher/AppLauncher.h | 4 +- .../WorkspacesLauncher/Launcher.cpp | 93 ++++++++++++- .../Workspaces/WorkspacesLauncher/Launcher.h | 14 +- .../WorkspacesLauncher/LauncherUIHelper.cpp | 4 +- .../WorkspacesLauncher/LauncherUIHelper.h | 2 +- .../WindowArrangerHelper.cpp | 5 + .../WorkspacesLauncher/WindowArrangerHelper.h | 1 + .../Workspaces/WorkspacesLauncher/main.cpp | 32 +++++ .../WorkspacesLauncherUI/App.xaml.cs | 8 ++ .../Data/LaunchingState.cs | 1 + .../ViewModels/MainViewModel.cs | 12 +- .../Workspaces/WorkspacesLib/AppUtils.cpp | 37 ++++++ .../Workspaces/WorkspacesLib/AppUtils.h | 5 + .../WorkspacesLib/LaunchingStateEnum.h | 3 +- .../WorkspacesLib/LaunchingStatus.cpp | 101 +++++++++++++-- .../WorkspacesLib/LaunchingStatus.h | 14 +- .../WorkspacesLib/WorkspacesData.cpp | 9 ++ .../Workspaces/WorkspacesLib/WorkspacesData.h | 1 + .../WindowArranger.cpp | 122 ++++++++++++------ .../WorkspacesWindowArranger/WindowArranger.h | 10 +- .../WorkspacesWindowArranger/main.cpp | 5 +- 26 files changed, 399 insertions(+), 138 deletions(-) diff --git a/src/modules/Workspaces/WorkspacesEditor/Data/ProjectData.cs b/src/modules/Workspaces/WorkspacesEditor/Data/ProjectData.cs index 281ac67abca8..7eb0a63831de 100644 --- a/src/modules/Workspaces/WorkspacesEditor/Data/ProjectData.cs +++ b/src/modules/Workspaces/WorkspacesEditor/Data/ProjectData.cs @@ -25,6 +25,8 @@ public struct WindowPositionWrapper public int Height { get; set; } } + public string Id { get; set; } + public string Application { get; set; } public string ApplicationPath { get; set; } diff --git a/src/modules/Workspaces/WorkspacesEditor/Models/Application.cs b/src/modules/Workspaces/WorkspacesEditor/Models/Application.cs index c31087c20c70..294d59854d8b 100644 --- a/src/modules/Workspaces/WorkspacesEditor/Models/Application.cs +++ b/src/modules/Workspaces/WorkspacesEditor/Models/Application.cs @@ -31,6 +31,7 @@ public Application() public Application(Application other) { + Id = other.Id; AppName = other.AppName; AppPath = other.AppPath; AppTitle = other.AppTitle; @@ -95,6 +96,8 @@ public override int GetHashCode() } } + public string Id { get; set; } + public string AppName { get; set; } public string AppPath { get; set; } diff --git a/src/modules/Workspaces/WorkspacesEditor/Models/Project.cs b/src/modules/Workspaces/WorkspacesEditor/Models/Project.cs index a9a6f407ba3c..07d7ad40a138 100644 --- a/src/modules/Workspaces/WorkspacesEditor/Models/Project.cs +++ b/src/modules/Workspaces/WorkspacesEditor/Models/Project.cs @@ -251,6 +251,7 @@ public Project(ProjectData.ProjectWrapper project) { Models.Application newApp = new Models.Application() { + Id = app.Id != null ? app.Id : $"{{{Guid.NewGuid().ToString()}}}", AppName = app.Application, AppPath = app.ApplicationPath, AppTitle = app.Title, diff --git a/src/modules/Workspaces/WorkspacesEditor/Utils/WorkspacesEditorIO.cs b/src/modules/Workspaces/WorkspacesEditor/Utils/WorkspacesEditorIO.cs index da128f2ee4e0..a3a4bc418daf 100644 --- a/src/modules/Workspaces/WorkspacesEditor/Utils/WorkspacesEditorIO.cs +++ b/src/modules/Workspaces/WorkspacesEditor/Utils/WorkspacesEditorIO.cs @@ -97,6 +97,7 @@ public void SerializeWorkspaces(List workspaces, bool useTempFile = fal { wrapper.Applications.Add(new ProjectData.ApplicationWrapper { + Id = app.Id, Application = app.AppName, ApplicationPath = app.AppPath, Title = app.AppTitle, diff --git a/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.cpp b/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.cpp index f9aed31fe66f..3c58c267f9b2 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.cpp +++ b/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.cpp @@ -10,8 +10,6 @@ #include -#include - #include using namespace winrt; @@ -20,26 +18,6 @@ using namespace Windows::Management::Deployment; namespace AppLauncher { - void UpdatePackagedApps(std::vector& apps, const Utils::Apps::AppList& installedApps) - { - for (auto& app : apps) - { - // Packaged apps have version in the path, it will be outdated after update. - // We need make sure the current package is up to date. - if (!app.packageFullName.empty()) - { - auto installedApp = std::find_if(installedApps.begin(), installedApps.end(), [&](const Utils::Apps::AppData& val) { return val.name == app.name; }); - if (installedApp != installedApps.end() && app.packageFullName != installedApp->packageFullName) - { - std::wstring exeFileName = app.path.substr(app.path.find_last_of(L"\\") + 1); - app.packageFullName = installedApp->packageFullName; - app.path = installedApp->installPath + L"\\" + exeFileName; - Logger::trace(L"Updated package full name for {}: {}", app.name, app.packageFullName); - } - } - } - } - Result LaunchApp(const std::wstring& appPath, const std::wstring& commandLineArgs, bool elevated) { std::wstring dir = std::filesystem::path(appPath).parent_path(); @@ -181,29 +159,4 @@ namespace AppLauncher Logger::trace(L"{} {} at {}", app.name, (launched ? L"launched" : L"not launched"), app.path); return launched; } - - bool Launch(WorkspacesData::WorkspacesProject& project, LaunchingStatus& launchingStatus, ErrorList& launchErrors) - { - bool launchedSuccessfully{ true }; - - auto installedApps = Utils::Apps::GetAppsList(); - UpdatePackagedApps(project.apps, installedApps); - - // Launch apps - for (auto& app : project.apps) - { - if (!Launch(app, launchErrors)) - { - Logger::error(L"Failed to launch {}", app.name); - launchingStatus.Update(app, LaunchingState::Failed); - launchedSuccessfully = false; - } - else - { - launchingStatus.Update(app, LaunchingState::Launched); - } - } - - return launchedSuccessfully; - } } \ No newline at end of file diff --git a/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.h b/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.h index 0827afc4c93c..99ddeab6c81b 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.h +++ b/src/modules/Workspaces/WorkspacesLauncher/AppLauncher.h @@ -2,6 +2,7 @@ #include +#include #include #include #include @@ -10,7 +11,6 @@ namespace AppLauncher { using ErrorList = std::vector>; + bool Launch(const WorkspacesData::WorkspacesProject::Application& app, ErrorList& launchErrors); Result LaunchApp(const std::wstring& appPath, const std::wstring& commandLineArgs, bool elevated); - - bool Launch(WorkspacesData::WorkspacesProject& project, LaunchingStatus& launchingStatus, ErrorList& launchErrors); } diff --git a/src/modules/Workspaces/WorkspacesLauncher/Launcher.cpp b/src/modules/Workspaces/WorkspacesLauncher/Launcher.cpp index b660d0d939c5..6483c8f477c5 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/Launcher.cpp +++ b/src/modules/Workspaces/WorkspacesLauncher/Launcher.cpp @@ -8,6 +8,7 @@ #include #include +#include Launcher::Launcher(const WorkspacesData::WorkspacesProject& project, std::vector& workspaces, @@ -16,10 +17,13 @@ Launcher::Launcher(const WorkspacesData::WorkspacesProject& project, m_workspaces(workspaces), m_invokePoint(invokePoint), m_start(std::chrono::high_resolution_clock::now()), - m_uiHelper(std::make_unique()), + m_uiHelper(std::make_unique(std::bind(&Launcher::handleUIMessage, this, std::placeholders::_1))), m_windowArrangerHelper(std::make_unique(std::bind(&Launcher::handleWindowArrangerMessage, this, std::placeholders::_1))), - m_launchingStatus(m_project, std::bind(&LauncherUIHelper::UpdateLaunchStatus, m_uiHelper.get(), std::placeholders::_1)) + m_launchingStatus(m_project) { + // main thread + Logger::info(L"Launch Workspace {} : {}", m_project.name, m_project.id); + m_uiHelper->LaunchUI(); m_uiHelper->UpdateLaunchStatus(m_launchingStatus.Get()); @@ -48,6 +52,7 @@ Launcher::Launcher(const WorkspacesData::WorkspacesProject& project, Launcher::~Launcher() { + // main thread, will wait until arranger is finished Logger::trace(L"Finalizing launch"); // update last-launched time @@ -86,20 +91,81 @@ Launcher::~Launcher() } } + std::lock_guard lock(m_launchErrorsMutex); Trace::Workspaces::Launch(m_launchedSuccessfully, m_project, m_invokePoint, duration.count(), differentSetup, m_launchErrors); } -void Launcher::Launch() +void Launcher::Launch() // Launching thread { - Logger::info(L"Launch Workspace {} : {}", m_project.name, m_project.id); - m_launchedSuccessfully = AppLauncher::Launch(m_project, m_launchingStatus, m_launchErrors); + const long maxWaitTimeMs = 3000; + const long ms = 100; + + // Launch apps + for (auto appState = m_launchingStatus.GetNext(LaunchingState::Waiting); appState.has_value(); appState = m_launchingStatus.GetNext(LaunchingState::Waiting)) + { + auto app = appState.value().application; + + long waitingTime = 0; + bool additionalWait = false; + while (!m_launchingStatus.AllInstancesOfTheAppLaunchedAndMoved(app) && waitingTime < maxWaitTimeMs) + { + std::this_thread::sleep_for(std::chrono::milliseconds(ms)); + waitingTime += ms; + additionalWait = true; + } + + if (additionalWait) + { + // Resolves an issue when Outlook does not launch when launching one after another. + // Launching Outlook instances right one after another causes error message. + // Launching Outlook instances with less than 1-second delay causes the second window not to appear + // even though there wasn't a launch error. + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + } + + if (waitingTime >= maxWaitTimeMs) + { + Logger::info(L"Waiting time for launching next {} instance expired", app.name); + } + + bool launched{ false }; + { + std::lock_guard lock(m_launchErrorsMutex); + launched = AppLauncher::Launch(app, m_launchErrors); + } + + if (launched) + { + m_launchingStatus.Update(app, LaunchingState::Launched); + } + else + { + Logger::error(L"Failed to launch {}", app.name); + m_launchingStatus.Update(app, LaunchingState::Failed); + m_launchedSuccessfully = false; + } + + auto status = m_launchingStatus.Get(app); // updated after launch status + if (status.has_value()) + { + { + std::lock_guard lock(m_windowArrangerHelperMutex); + m_windowArrangerHelper->UpdateLaunchStatus(status.value()); + } + } + + { + std::lock_guard lock(m_uiHelperMutex); + m_uiHelper->UpdateLaunchStatus(m_launchingStatus.Get()); + } + } } -void Launcher::handleWindowArrangerMessage(const std::wstring& msg) +void Launcher::handleWindowArrangerMessage(const std::wstring& msg) // WorkspacesArranger IPC thread { if (msg == L"ready") { - Launch(); + std::thread([&]() { Launch(); }).detach(); } else { @@ -109,6 +175,11 @@ void Launcher::handleWindowArrangerMessage(const std::wstring& msg) if (data.has_value()) { m_launchingStatus.Update(data.value().application, data.value().state); + + { + std::lock_guard lock(m_uiHelperMutex); + m_uiHelper->UpdateLaunchStatus(m_launchingStatus.Get()); + } } else { @@ -121,3 +192,11 @@ void Launcher::handleWindowArrangerMessage(const std::wstring& msg) } } } + +void Launcher::handleUIMessage(const std::wstring& msg) // UI IPC thread +{ + if (msg == L"cancel") + { + m_launchingStatus.Cancel(); + } +} diff --git a/src/modules/Workspaces/WorkspacesLauncher/Launcher.h b/src/modules/Workspaces/WorkspacesLauncher/Launcher.h index 36f17329d27c..9811be25c5bc 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/Launcher.h +++ b/src/modules/Workspaces/WorkspacesLauncher/Launcher.h @@ -14,18 +14,24 @@ class Launcher Launcher(const WorkspacesData::WorkspacesProject& project, std::vector& workspaces, InvokePoint invokePoint); ~Launcher(); - void Launch(); - private: WorkspacesData::WorkspacesProject m_project; std::vector& m_workspaces; const InvokePoint m_invokePoint; const std::chrono::steady_clock::time_point m_start; + std::atomic m_launchedSuccessfully{}; + LaunchingStatus m_launchingStatus; + std::unique_ptr m_uiHelper; + std::mutex m_uiHelperMutex; + std::unique_ptr m_windowArrangerHelper; - LaunchingStatus m_launchingStatus; - bool m_launchedSuccessfully{}; + std::mutex m_windowArrangerHelperMutex; + std::vector> m_launchErrors{}; + std::mutex m_launchErrorsMutex; + void Launch(); void handleWindowArrangerMessage(const std::wstring& msg); + void handleUIMessage(const std::wstring& msg); }; diff --git a/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.cpp b/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.cpp index b35c6d3657f3..8bcccaec9199 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.cpp +++ b/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.cpp @@ -9,9 +9,9 @@ #include -LauncherUIHelper::LauncherUIHelper() : +LauncherUIHelper::LauncherUIHelper(std::function ipcCallback) : m_processId{}, - m_ipcHelper(IPCHelperStrings::LauncherUIPipeName, IPCHelperStrings::UIPipeName, nullptr) + m_ipcHelper(IPCHelperStrings::LauncherUIPipeName, IPCHelperStrings::UIPipeName, ipcCallback) { } diff --git a/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.h b/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.h index 20704f13a2d6..bb43543e3f12 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.h +++ b/src/modules/Workspaces/WorkspacesLauncher/LauncherUIHelper.h @@ -6,7 +6,7 @@ class LauncherUIHelper { public: - LauncherUIHelper(); + LauncherUIHelper(std::function ipcCallback); ~LauncherUIHelper(); void LaunchUI(); diff --git a/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.cpp b/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.cpp index 600038ea617d..cb2075aba98f 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.cpp +++ b/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.cpp @@ -69,3 +69,8 @@ void WindowArrangerHelper::Launch(const std::wstring& projectId, bool elevated, Logger::error(L"Failed to launch PowerToys.WorkspacesWindowArranger: {}", res.error()); } } + +void WindowArrangerHelper::UpdateLaunchStatus(const WorkspacesData::LaunchingAppState& appState) const +{ + m_ipcHelper.send(WorkspacesData::AppLaunchInfoJSON::ToJson({ appState.application, nullptr, appState.state }).ToString().c_str()); +} diff --git a/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.h b/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.h index 22d7e3ea1cea..8e0ee5d473a0 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.h +++ b/src/modules/Workspaces/WorkspacesLauncher/WindowArrangerHelper.h @@ -12,6 +12,7 @@ class WindowArrangerHelper ~WindowArrangerHelper(); void Launch(const std::wstring& projectId, bool elevated, std::function keepWaitingCallback); + void UpdateLaunchStatus(const WorkspacesData::LaunchingAppState& appState) const; private: DWORD m_processId; diff --git a/src/modules/Workspaces/WorkspacesLauncher/main.cpp b/src/modules/Workspaces/WorkspacesLauncher/main.cpp index 9f3d15109796..3e7c8c7db1b6 100644 --- a/src/modules/Workspaces/WorkspacesLauncher/main.cpp +++ b/src/modules/Workspaces/WorkspacesLauncher/main.cpp @@ -13,6 +13,7 @@ #include #include +#include const std::wstring moduleName = L"Workspaces\\WorkspacesLauncher"; const std::wstring internalPath = L""; @@ -161,6 +162,37 @@ int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR cmdline, int cm return 1; } + // prepare project in advance + auto installedApps = Utils::Apps::GetAppsList(); + bool updatedApps = Utils::Apps::UpdateWorkspacesApps(projectToLaunch, installedApps); + bool updatedIds = false; + + // verify apps have ids + for (auto& app : projectToLaunch.apps) + { + if (app.id.empty()) + { + app.id = CreateGuidString(); + updatedIds = true; + } + } + + // update the file before launching, so WorkspacesWindowArranger and WorkspacesLauncherUI could get updated app paths + if (updatedApps || updatedIds) + { + for (int i = 0; i < workspaces.size(); i++) + { + if (workspaces[i].id == projectToLaunch.id) + { + workspaces[i] = projectToLaunch; + break; + } + } + + json::to_file(WorkspacesData::WorkspacesFile(), WorkspacesData::WorkspacesListJSON::ToJson(workspaces)); + } + + // launch Launcher launcher(projectToLaunch, workspaces, cmdArgs.invokePoint); Logger::trace("Finished"); diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs b/src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs index a06591852345..64686fc139ec 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs @@ -37,6 +37,14 @@ public App() { } + public static void SendIPCMessage(string message) + { + if (ipcmanager != null) + { + ipcmanager.Send(message); + } + } + private void OnStartup(object sender, StartupEventArgs e) { Logger.InitializeLogger("\\Workspaces\\WorkspacesLauncherUI"); diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/Data/LaunchingState.cs b/src/modules/Workspaces/WorkspacesLauncherUI/Data/LaunchingState.cs index 9ad8c958d25a..67cd951b8b00 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/Data/LaunchingState.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/Data/LaunchingState.cs @@ -11,5 +11,6 @@ public enum LaunchingState Launched, LaunchedAndMoved, Failed, + Canceled, } } diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/ViewModels/MainViewModel.cs b/src/modules/Workspaces/WorkspacesLauncherUI/ViewModels/MainViewModel.cs index ed6cdd8f3153..7002c9ef0590 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/ViewModels/MainViewModel.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/ViewModels/MainViewModel.cs @@ -19,7 +19,6 @@ public class MainViewModel : INotifyPropertyChanged, IDisposable private StatusWindow _snapshotWindow; private int launcherProcessID; - private bool _exiting; public event PropertyChangedEventHandler PropertyChanged; @@ -30,8 +29,6 @@ public void OnPropertyChanged(PropertyChangedEventArgs e) public MainViewModel() { - _exiting = false; - // receive IPC Message App.IPCMessageReceivedCallback = (string msg) => { @@ -50,11 +47,6 @@ public MainViewModel() private void HandleAppLaunchingState(AppLaunchData.AppLaunchDataWrapper appLaunchData) { - if (_exiting) - { - return; - } - launcherProcessID = appLaunchData.LauncherProcessID; List appLaunchingList = new List(); foreach (var app in appLaunchData.AppLaunchInfos.AppLaunchInfoList) @@ -90,9 +82,7 @@ internal void SetSnapshotWindow(StatusWindow snapshotWindow) internal void CancelLaunch() { - _exiting = true; - Process proc = Process.GetProcessById(launcherProcessID); - proc.Kill(); + App.SendIPCMessage("cancel"); } } } diff --git a/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp b/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp index 2d69d6f86ffe..9b65b64b296c 100644 --- a/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp +++ b/src/modules/Workspaces/WorkspacesLib/AppUtils.cpp @@ -341,5 +341,42 @@ namespace Utils return Utils::Apps::GetApp(processPath, pid, apps); } + + bool UpdateAppVersion(WorkspacesData::WorkspacesProject::Application& app, const AppList& installedApps) + { + auto installedApp = std::find_if(installedApps.begin(), installedApps.end(), [&](const AppData& val) { return val.name == app.name; }); + if (installedApp == installedApps.end()) + { + return false; + } + + // Packaged apps have version in the path, it will be outdated after update. + // We need make sure the current package is up to date. + if (!app.packageFullName.empty()) + { + if (app.packageFullName != installedApp->packageFullName) + { + std::wstring exeFileName = app.path.substr(app.path.find_last_of(L"\\") + 1); + app.packageFullName = installedApp->packageFullName; + app.path = installedApp->installPath + L"\\" + exeFileName; + Logger::trace(L"Updated package full name for {}: {}", app.name, app.packageFullName); + return true; + } + } + + return false; + } + + bool UpdateWorkspacesApps(WorkspacesData::WorkspacesProject& workspace, const AppList& installedApps) + { + bool updated = false; + for (auto& app : workspace.apps) + { + updated |= UpdateAppVersion(app, installedApps); + } + + return updated; + } + } } \ No newline at end of file diff --git a/src/modules/Workspaces/WorkspacesLib/AppUtils.h b/src/modules/Workspaces/WorkspacesLib/AppUtils.h index 596d7d0a8511..80c88f2eddba 100644 --- a/src/modules/Workspaces/WorkspacesLib/AppUtils.h +++ b/src/modules/Workspaces/WorkspacesLib/AppUtils.h @@ -1,5 +1,7 @@ #pragma once +#include + namespace Utils { namespace Apps @@ -21,5 +23,8 @@ namespace Utils AppList GetAppsList(); std::optional GetApp(const std::wstring& appPath, DWORD pid, const AppList& apps); std::optional GetApp(HWND window, const AppList& apps); + + bool UpdateAppVersion(WorkspacesData::WorkspacesProject::Application& app, const AppList& installedApps); + bool UpdateWorkspacesApps(WorkspacesData::WorkspacesProject& workspace, const AppList& installedApps); } } \ No newline at end of file diff --git a/src/modules/Workspaces/WorkspacesLib/LaunchingStateEnum.h b/src/modules/Workspaces/WorkspacesLib/LaunchingStateEnum.h index 2fbaf2fe9724..ab229a08f2c1 100644 --- a/src/modules/Workspaces/WorkspacesLib/LaunchingStateEnum.h +++ b/src/modules/Workspaces/WorkspacesLib/LaunchingStateEnum.h @@ -6,5 +6,6 @@ enum class LaunchingState Waiting = 0, Launched, LaunchedAndMoved, - Failed + Failed, + Canceled, }; \ No newline at end of file diff --git a/src/modules/Workspaces/WorkspacesLib/LaunchingStatus.cpp b/src/modules/Workspaces/WorkspacesLib/LaunchingStatus.cpp index 46c4bb6e3f4c..f41a872313b8 100644 --- a/src/modules/Workspaces/WorkspacesLib/LaunchingStatus.cpp +++ b/src/modules/Workspaces/WorkspacesLib/LaunchingStatus.cpp @@ -3,8 +3,7 @@ #include -LaunchingStatus::LaunchingStatus(const WorkspacesData::WorkspacesProject& project, std::function updateCallback) : - m_updateCallback(updateCallback) +LaunchingStatus::LaunchingStatus(const WorkspacesData::WorkspacesProject& project) { std::unique_lock lock(m_mutex); for (const auto& app : project.apps) @@ -13,10 +12,18 @@ LaunchingStatus::LaunchingStatus(const WorkspacesData::WorkspacesProject& projec } } -const WorkspacesData::LaunchingAppStateMap& LaunchingStatus::Get() noexcept +bool LaunchingStatus::AllLaunched() noexcept { std::shared_lock lock(m_mutex); - return m_appsState; + for (const auto& [app, data] : m_appsState) + { + if (data.state == LaunchingState::Waiting) + { + return false; + } + } + + return true; } bool LaunchingStatus::AllLaunchedAndMoved() noexcept @@ -24,7 +31,9 @@ bool LaunchingStatus::AllLaunchedAndMoved() noexcept std::shared_lock lock(m_mutex); for (const auto& [app, data] : m_appsState) { - if (data.state != LaunchingState::Failed && data.state != LaunchingState::LaunchedAndMoved) + if (data.state != LaunchingState::Failed && + data.state != LaunchingState::Canceled && + data.state != LaunchingState::LaunchedAndMoved) { return false; } @@ -33,20 +42,70 @@ bool LaunchingStatus::AllLaunchedAndMoved() noexcept return true; } -bool LaunchingStatus::AllLaunched() noexcept +bool LaunchingStatus::AllInstancesOfTheAppLaunchedAndMoved(const WorkspacesData::WorkspacesProject::Application& application) noexcept { std::shared_lock lock(m_mutex); - for (const auto& [app, data] : m_appsState) + + for (const auto& [app, state] : m_appsState) { - if (data.state == LaunchingState::Waiting) + if (app.name == application.name || app.path == application.path) { - return false; + if (state.state == LaunchingState::Launched) + { + return false; + } } } return true; } +const WorkspacesData::LaunchingAppStateMap& LaunchingStatus::Get() noexcept +{ + std::shared_lock lock(m_mutex); + return m_appsState; +} + +std::optional LaunchingStatus::Get(const WorkspacesData::WorkspacesProject::Application& app) noexcept +{ + std::shared_lock lock(m_mutex); + if (m_appsState.contains(app)) + { + return m_appsState.at(app); + } + + return std::nullopt; +} + +std::optional LaunchingStatus::GetNext(LaunchingState state) noexcept +{ + std::shared_lock lock(m_mutex); + for (const auto& [app, appState] : m_appsState) + { + if (appState.state == state) + { + return appState; + } + } + + return std::nullopt; +} + +bool LaunchingStatus::IsWindowProcessed(HWND window) noexcept +{ + std::shared_lock lock(m_mutex); + + for (const auto& [app, state] : m_appsState) + { + if (state.window == window) + { + return true; + } + } + + return false; +} + void LaunchingStatus::Update(const WorkspacesData::WorkspacesProject::Application& app, LaunchingState state) { std::unique_lock lock(m_mutex); @@ -57,9 +116,29 @@ void LaunchingStatus::Update(const WorkspacesData::WorkspacesProject::Applicatio } m_appsState[app].state = state; +} - if (m_updateCallback) +void LaunchingStatus::Update(const WorkspacesData::WorkspacesProject::Application& app, HWND window, LaunchingState state) +{ + std::unique_lock lock(m_mutex); + if (!m_appsState.contains(app)) { - m_updateCallback(m_appsState); + Logger::error(L"Error updating state: app {} is not tracked in the project", app.name); + return; } + + m_appsState[app].state = state; + m_appsState[app].window = window; } + +void LaunchingStatus::Cancel() +{ + std::unique_lock lock(m_mutex); + for (auto& [app, state] : m_appsState) + { + if (state.state == LaunchingState::Waiting) + { + state.state = LaunchingState::Canceled; + } + } +} \ No newline at end of file diff --git a/src/modules/Workspaces/WorkspacesLib/LaunchingStatus.h b/src/modules/Workspaces/WorkspacesLib/LaunchingStatus.h index eec0b1b0f62d..2a0b679f0870 100644 --- a/src/modules/Workspaces/WorkspacesLib/LaunchingStatus.h +++ b/src/modules/Workspaces/WorkspacesLib/LaunchingStatus.h @@ -1,6 +1,5 @@ #pragma once -#include #include #include @@ -8,17 +7,24 @@ class LaunchingStatus { public: - LaunchingStatus(const WorkspacesData::WorkspacesProject& project, std::function updateCallback); + LaunchingStatus(const WorkspacesData::WorkspacesProject& project); ~LaunchingStatus() = default; - bool AllLaunchedAndMoved() noexcept; bool AllLaunched() noexcept; + bool AllLaunchedAndMoved() noexcept; + bool AllInstancesOfTheAppLaunchedAndMoved(const WorkspacesData::WorkspacesProject::Application& app) noexcept; + const WorkspacesData::LaunchingAppStateMap& Get() noexcept; + std::optional Get(const WorkspacesData::WorkspacesProject::Application& app) noexcept; + std::optional GetNext(LaunchingState state) noexcept; + + bool IsWindowProcessed(HWND window) noexcept; void Update(const WorkspacesData::WorkspacesProject::Application& app, LaunchingState state); + void Update(const WorkspacesData::WorkspacesProject::Application& app, HWND window, LaunchingState state); + void Cancel(); private: WorkspacesData::LaunchingAppStateMap m_appsState; - std::function m_updateCallback; std::shared_mutex m_mutex; }; diff --git a/src/modules/Workspaces/WorkspacesLib/WorkspacesData.cpp b/src/modules/Workspaces/WorkspacesLib/WorkspacesData.cpp index d71619f90b32..8a15001eacc5 100644 --- a/src/modules/Workspaces/WorkspacesLib/WorkspacesData.cpp +++ b/src/modules/Workspaces/WorkspacesLib/WorkspacesData.cpp @@ -3,6 +3,8 @@ #include +#include + namespace NonLocalizable { const inline wchar_t ModuleKey[] = L"Workspaces"; @@ -72,6 +74,7 @@ namespace WorkspacesData namespace NonLocalizable { + const static wchar_t* AppIdID = L"id"; const static wchar_t* AppNameID = L"application"; const static wchar_t* AppPathID = L"application-path"; const static wchar_t* AppPackageFullNameID = L"package-full-name"; @@ -89,6 +92,7 @@ namespace WorkspacesData json::JsonObject ToJson(const WorkspacesProject::Application& data) { json::JsonObject json{}; + json.SetNamedValue(NonLocalizable::AppIdID, json::value(data.id)); json.SetNamedValue(NonLocalizable::AppNameID, json::value(data.name)); json.SetNamedValue(NonLocalizable::AppPathID, json::value(data.path)); json.SetNamedValue(NonLocalizable::AppTitleID, json::value(data.title)); @@ -110,6 +114,11 @@ namespace WorkspacesData WorkspacesProject::Application result; try { + if (json.HasKey(NonLocalizable::AppIdID)) + { + result.id = json.GetNamedString(NonLocalizable::AppIdID); + } + if (json.HasKey(NonLocalizable::AppNameID)) { result.name = json.GetNamedString(NonLocalizable::AppNameID); diff --git a/src/modules/Workspaces/WorkspacesLib/WorkspacesData.h b/src/modules/Workspaces/WorkspacesLib/WorkspacesData.h index 40252850a33a..d72833799611 100644 --- a/src/modules/Workspaces/WorkspacesLib/WorkspacesData.h +++ b/src/modules/Workspaces/WorkspacesLib/WorkspacesData.h @@ -25,6 +25,7 @@ namespace WorkspacesData auto operator<=>(const Position&) const = default; }; + std::wstring id; std::wstring name; std::wstring title; std::wstring path; diff --git a/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp b/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp index 18bd2a049f82..5c176c173fc9 100644 --- a/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp +++ b/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp @@ -94,45 +94,47 @@ namespace FancyZones } -WindowArranger::WindowArranger(WorkspacesData::WorkspacesProject project, const IPCHelper& ipcHelper) : +WindowArranger::WindowArranger(WorkspacesData::WorkspacesProject project) : m_project(project), m_windowsBefore(WindowEnumerator::Enumerate(WindowFilter::Filter)), m_monitors(MonitorUtils::IdentifyMonitors()), m_installedApps(Utils::Apps::GetAppsList()), //m_windowCreationHandler(std::bind(&WindowArranger::onWindowCreated, this, std::placeholders::_1)), - m_ipcHelper(ipcHelper) + m_ipcHelper(IPCHelperStrings::WindowArrangerPipeName, IPCHelperStrings::LauncherArrangerPipeName, std::bind(&WindowArranger::receiveIpcMessage, this, std::placeholders::_1)), + m_launchingStatus(m_project) { - for (auto& app : project.apps) - { - m_launchingApps.insert({ app, { app, nullptr } }); - } - m_ipcHelper.send(L"ready"); - for (int attempt = 0; attempt < 50 && !allWindowsFound(); attempt++) + const long maxLaunchingWaitingTime = 10000, maxRepositionWaitingTime = 3000, ms = 300; + long waitingTime{ 0 }; + + // process launching windows + while (!m_launchingStatus.AllLaunched() && waitingTime < maxLaunchingWaitingTime) { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); + processWindows(false); + std::this_thread::sleep_for(std::chrono::milliseconds(ms)); + waitingTime += ms; + } - std::vector windowsAfter = WindowEnumerator::Enumerate(WindowFilter::Filter); - std::vector windowsDiff{}; - std::copy_if(windowsAfter.begin(), windowsAfter.end(), std::back_inserter(windowsDiff), [&](HWND window) { return std::find(m_windowsBefore.begin(), m_windowsBefore.end(), window) == m_windowsBefore.end(); }); - - for (HWND window : windowsDiff) - { - processWindow(window); - } + if (waitingTime >= maxLaunchingWaitingTime) + { + Logger::info(L"Launching timeout expired"); } - bool allFound = allWindowsFound(); - Logger::info(L"Finished moving new windows, all windows found: {}", allFound); + Logger::info(L"Finished moving new windows"); - if (!allFound) + // wait for 3 seconds after all apps launched + waitingTime = 0; + while (!m_launchingStatus.AllLaunchedAndMoved() && waitingTime < maxRepositionWaitingTime) { - std::vector allWindows = WindowEnumerator::Enumerate(WindowFilter::Filter); - for (HWND window : allWindows) - { - processWindow(window); - } + processWindows(true); + std::this_thread::sleep_for(std::chrono::milliseconds(ms)); + waitingTime += ms; + } + + if (waitingTime >= maxRepositionWaitingTime) + { + Logger::info(L"Repositioning timeout expired"); } } @@ -146,11 +148,26 @@ WindowArranger::WindowArranger(WorkspacesData::WorkspacesProject project, const // processWindow(window); //} +void WindowArranger::processWindows(bool processAll) +{ + std::vector windows = WindowEnumerator::Enumerate(WindowFilter::Filter); + + if (!processAll) + { + std::vector windowsDiff{}; + std::copy_if(windows.begin(), windows.end(), std::back_inserter(windowsDiff), [&](HWND window) { return std::find(m_windowsBefore.begin(), m_windowsBefore.end(), window) == m_windowsBefore.end(); }); + windows = windowsDiff; + } + + for (HWND window : windows) + { + processWindow(window); + } +} + void WindowArranger::processWindow(HWND window) { - // check if this window is already handled - auto windowIter = std::find_if(m_launchingApps.begin(), m_launchingApps.end(), [&](const auto& val) { return val.second.window == window; }); - if (windowIter != m_launchingApps.end()) + if (m_launchingStatus.IsWindowProcessed(window)) { return; } @@ -176,27 +193,34 @@ void WindowArranger::processWindow(HWND window) return; } - auto iter = std::find_if(m_launchingApps.begin(), m_launchingApps.end(), [&](const auto& val) + const auto& apps = m_launchingStatus.Get(); + auto iter = std::find_if(apps.begin(), apps.end(), [&](const auto& val) { - return val.second.state == LaunchingState::Waiting && !val.second.window && (val.first.name == data.value().name || val.first.path == data.value().installPath); + return val.second.state == LaunchingState::Launched && + !val.second.window && + (val.first.name == data.value().name || val.first.path == data.value().installPath); }); - if (iter == m_launchingApps.end()) + + if (iter == apps.end()) { - Logger::info(L"A window of {} is not in the project", processPath); + Logger::info(L"Skip {}", processPath); return; } - iter->second.window = window; if (moveWindow(window, iter->first)) { - iter->second.state = LaunchingState::LaunchedAndMoved; + m_launchingStatus.Update(iter->first, window, LaunchingState::LaunchedAndMoved); } else { - iter->second.state = LaunchingState::Failed; + m_launchingStatus.Update(iter->first, window, LaunchingState::Failed); } - m_ipcHelper.send(WorkspacesData::AppLaunchInfoJSON::ToJson({iter->first, nullptr, iter->second.state}).ToString().c_str()); + auto state = m_launchingStatus.Get(iter->first); + if (state.has_value()) + { + sendUpdatedState(state.value()); + } } bool WindowArranger::moveWindow(HWND window, const WorkspacesData::WorkspacesProject::Application& app) @@ -247,9 +271,27 @@ bool WindowArranger::moveWindow(HWND window, const WorkspacesData::WorkspacesPro } } -bool WindowArranger::allWindowsFound() const +void WindowArranger::receiveIpcMessage(const std::wstring& message) +{ + try + { + auto data = WorkspacesData::AppLaunchInfoJSON::FromJson(json::JsonValue::Parse(message).GetObjectW()); + if (data.has_value()) + { + m_launchingStatus.Update(data.value().application, data.value().state); + } + else + { + Logger::error(L"Failed to parse message from WorkspacesLauncher"); + } + } + catch (const winrt::hresult_error&) + { + Logger::error(L"Failed to parse message from WorkspacesLauncher"); + } +} + +void WindowArranger::sendUpdatedState(const WorkspacesData::LaunchingAppState& data) const { - return std::find_if(m_launchingApps.begin(), m_launchingApps.end(), [&](const std::pair& val) { - return val.second.window == nullptr; - }) == m_launchingApps.end(); + m_ipcHelper.send(WorkspacesData::AppLaunchInfoJSON::ToJson({ data.application, nullptr, data.state }).ToString().c_str()); } diff --git a/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.h b/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.h index e18b52829b6a..da708e550f9f 100644 --- a/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.h +++ b/src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.h @@ -10,7 +10,7 @@ class WindowArranger { public: - WindowArranger(WorkspacesData::WorkspacesProject project, const IPCHelper& ipcHelper); + WindowArranger(WorkspacesData::WorkspacesProject project); ~WindowArranger() = default; private: @@ -19,12 +19,14 @@ class WindowArranger const std::vector m_monitors; const Utils::Apps::AppList m_installedApps; //const WindowCreationHandler m_windowCreationHandler; - const IPCHelper& m_ipcHelper; - WorkspacesData::LaunchingAppStateMap m_launchingApps{}; + IPCHelper m_ipcHelper; + LaunchingStatus m_launchingStatus; //void onWindowCreated(HWND window); + void processWindows(bool processAll); void processWindow(HWND window); bool moveWindow(HWND window, const WorkspacesData::WorkspacesProject::Application& app); - bool allWindowsFound() const; + void receiveIpcMessage(const std::wstring& message); + void sendUpdatedState(const WorkspacesData::LaunchingAppState& data) const; }; diff --git a/src/modules/Workspaces/WorkspacesWindowArranger/main.cpp b/src/modules/Workspaces/WorkspacesWindowArranger/main.cpp index 1c6a72dae5ad..0d952436946a 100644 --- a/src/modules/Workspaces/WorkspacesWindowArranger/main.cpp +++ b/src/modules/Workspaces/WorkspacesWindowArranger/main.cpp @@ -90,12 +90,9 @@ int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR cmdline, int cm return 1; } - // IPC - IPCHelper ipc(IPCHelperStrings::WindowArrangerPipeName, IPCHelperStrings::LauncherArrangerPipeName, nullptr); - // arrange windows Logger::info(L"Arrange windows from Workspace {} : {}", projectToLaunch.name, projectToLaunch.id); - WindowArranger windowArranger(projectToLaunch, ipc); + WindowArranger windowArranger(projectToLaunch); //run_message_loop(); Logger::debug(L"Arranger finished"); From d51ca9f8d4ebf15dee7060315e75aca3ccf941f1 Mon Sep 17 00:00:00 2001 From: Jaime Bernardo Date: Mon, 14 Oct 2024 14:59:10 +0100 Subject: [PATCH 28/30] [ci]Fix running xaml styles in CI (#35426) XAML style checkers aren't running right now in PR CI. This allowed some XAML style errors to cause build errors in release CI. This PR contains the following fixes: - Fix XAML style of files that have slipped. - Add errors to the scripts that depend on dotnet commands if it fails. - Add .NET 6 on CI so that applyXamlStyling.ps1 and verifyNugetPackages.ps1 run correctly again. --- .pipelines/applyXamlStyling.ps1 | 5 ++++- .pipelines/v2/templates/job-build-project.yml | 10 ++++------ .pipelines/verifyNugetPackages.ps1 | 6 ++++++ src/modules/launcher/PowerLauncher/MainWindow.xaml | 4 ++-- src/modules/launcher/PowerLauncher/ResultList.xaml | 4 ++-- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.pipelines/applyXamlStyling.ps1 b/.pipelines/applyXamlStyling.ps1 index 8a9dd1b1df08..e47edd0c0fa8 100644 --- a/.pipelines/applyXamlStyling.ps1 +++ b/.pipelines/applyXamlStyling.ps1 @@ -117,7 +117,10 @@ else { Write-Error 'XAML Styling is incorrect, please run `.\.pipelines\applyXamlStyling.ps1 -Main` locally.' } - + if ($lastExitCode -lt 0) + { + Write-Error "Error running dotnet tool run, with the exit code $lastExitCode. Please verify logs and running environment." + } # Return XAML Styler Status exit $lastExitCode } diff --git a/.pipelines/v2/templates/job-build-project.yml b/.pipelines/v2/templates/job-build-project.yml index d24158658b9b..565ba3cab703 100644 --- a/.pipelines/v2/templates/job-build-project.yml +++ b/.pipelines/v2/templates/job-build-project.yml @@ -127,12 +127,10 @@ jobs: Write-Host "##vso[task.setvariable variable=MSBuildCacheParameters]$MSBuildCacheParameters" displayName: Prepare MSBuildCache variables - - ${{ if eq(parameters.codeSign, true) }}: - # Only required if we're using ESRP - - template: steps-ensure-dotnet-version.yml - parameters: - sdk: true - version: '6.0' + - template: steps-ensure-dotnet-version.yml + parameters: + sdk: true + version: '6.0' - template: steps-ensure-dotnet-version.yml parameters: diff --git a/.pipelines/verifyNugetPackages.ps1 b/.pipelines/verifyNugetPackages.ps1 index 1fcc5237f0e1..54d0137121f8 100644 --- a/.pipelines/verifyNugetPackages.ps1 +++ b/.pipelines/verifyNugetPackages.ps1 @@ -8,6 +8,12 @@ Write-Host "Verifying Nuget packages for $solution" dotnet tool restore dotnet consolidate -s $solution +if ($lastExitCode -ne 0) +{ + $result = $lastExitCode + Write-Error "Error running dotnet consolidate, with the exit code $lastExitCode. Please verify logs and running environment." + exit $result +} if (-not $?) { diff --git a/src/modules/launcher/PowerLauncher/MainWindow.xaml b/src/modules/launcher/PowerLauncher/MainWindow.xaml index 30acc5c3c050..c8f1111e0600 100644 --- a/src/modules/launcher/PowerLauncher/MainWindow.xaml +++ b/src/modules/launcher/PowerLauncher/MainWindow.xaml @@ -72,10 +72,10 @@ x:Name="pluginsHintsList" Grid.Row="1" Margin="16,0,0,0" + Background="Transparent" + BorderBrush="Transparent" ItemContainerStyle="{StaticResource PluginsListViewItemStyle}" ItemsSource="{Binding Plugins}" - Background="Transparent" - BorderBrush="Transparent" PreviewMouseLeftButtonUp="PluginsHintsList_PreviewMouseLeftButtonUp" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" diff --git a/src/modules/launcher/PowerLauncher/ResultList.xaml b/src/modules/launcher/PowerLauncher/ResultList.xaml index 7e387e9807a6..b829d5218f34 100644 --- a/src/modules/launcher/PowerLauncher/ResultList.xaml +++ b/src/modules/launcher/PowerLauncher/ResultList.xaml @@ -32,9 +32,9 @@ Date: Thu, 17 Oct 2024 05:14:57 -0400 Subject: [PATCH 29/30] [Analyzers] Resolve Stylecop SA1516 violations and others to enable fully building on VS 17.12 (#35248) * [Analyzers][Settings] Fix SA1516 * [Analyzers][Workspaces] Fix SA1516 * [Analyzers][Awake] Fix SA1516 * [Analyzers][Wox] Fix SA1516 * [MWB] Disable CA1716 warning on class name * [Wox] Update ExecuteFilePath property visibility for Json Source Generator * [Analyzers][MWB] Fix CA1716 on NativeMethods. --------- Co-authored-by: Jaime Bernardo --- src/modules/MouseWithoutBorders/App/Class/Extensions.cs | 3 +++ src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs | 3 +++ src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs | 1 + .../Workspaces/WorkspacesLauncherUI/Data/AppLaunchData.cs | 2 ++ .../Workspaces/WorkspacesLauncherUI/Data/AppLaunchInfoData.cs | 1 + .../Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs | 1 + .../WorkspacesLauncherUI/ViewModels/MainViewModel.cs | 1 + src/modules/awake/Awake/Core/Manager.cs | 1 + .../Awake/Core/Threading/SingleThreadSynchronizationContext.cs | 1 + src/modules/awake/Awake/Core/TrayHelper.cs | 1 + src/modules/awake/Awake/Program.cs | 1 + src/modules/launcher/Wox.Plugin/PluginLoadContext.cs | 1 + src/modules/launcher/Wox.Plugin/PluginMetadata.cs | 3 ++- src/settings-ui/Settings.UI.Library/EnabledModules.cs | 1 + .../Settings.UI.Library/EnvironmentVariablesProperties.cs | 1 + .../Settings.UI.Library/EnvironmentVariablesSettings.cs | 1 + src/settings-ui/Settings.UI.Library/FZConfigProperties.cs | 1 + src/settings-ui/Settings.UI.Library/FancyZonesSettings.cs | 1 + .../Settings.UI.Library/FileLocksmithLocalProperties.cs | 1 + src/settings-ui/Settings.UI.Library/FileLocksmithSettings.cs | 1 + src/settings-ui/Settings.UI.Library/FindMyMouseProperties.cs | 1 + src/settings-ui/Settings.UI.Library/FindMyMouseSettings.cs | 1 + src/settings-ui/Settings.UI.Library/GeneralSettings.cs | 1 + src/settings-ui/Settings.UI.Library/Helpers/ColorNameHelper.cs | 1 + src/settings-ui/Settings.UI.Library/HostsProperties.cs | 1 + src/settings-ui/Settings.UI.Library/HostsSettings.cs | 1 + src/settings-ui/Settings.UI.Library/HotkeySettings.cs | 1 + .../Settings.UI.Library/HotkeySettingsControlHook.cs | 1 + src/settings-ui/Settings.UI.Library/ISettingsUtils.cs | 1 + src/settings-ui/Settings.UI.Library/ImageResizerProperties.cs | 1 + src/settings-ui/Settings.UI.Library/ImageResizerSettings.cs | 1 + src/settings-ui/Settings.UI.Library/KeyboardManagerProfile.cs | 1 + .../Settings.UI.Library/KeyboardManagerProperties.cs | 1 + src/settings-ui/Settings.UI.Library/KeyboardManagerSettings.cs | 1 + src/settings-ui/Settings.UI.Library/KeysDataModel.cs | 1 + src/settings-ui/Settings.UI.Library/MeasureToolProperties.cs | 1 + src/settings-ui/Settings.UI.Library/MeasureToolSettings.cs | 1 + .../Settings.UI.Library/MouseHighlighterProperties.cs | 1 + .../Settings.UI.Library/MouseHighlighterSettings.cs | 1 + src/settings-ui/Settings.UI.Library/MouseJumpProperties.cs | 1 + src/settings-ui/Settings.UI.Library/MouseJumpSettings.cs | 1 + .../Settings.UI.Library/MousePointerCrosshairsProperties.cs | 1 + .../Settings.UI.Library/MousePointerCrosshairsSettings.cs | 1 + .../Settings.UI.Library/MouseWithoutBordersProperties.cs | 1 + .../Settings.UI.Library/MouseWithoutBordersSettings.cs | 1 + src/settings-ui/Settings.UI.Library/NewPlusSettings.cs | 1 + src/settings-ui/Settings.UI.Library/PeekPreviewSettings.cs | 1 + src/settings-ui/Settings.UI.Library/PeekProperties.cs | 1 + src/settings-ui/Settings.UI.Library/PeekSettings.cs | 1 + src/settings-ui/Settings.UI.Library/PowerAccentProperties.cs | 1 + src/settings-ui/Settings.UI.Library/PowerAccentSettings.cs | 1 + src/settings-ui/Settings.UI.Library/PowerLauncherProperties.cs | 1 + src/settings-ui/Settings.UI.Library/PowerLauncherSettings.cs | 1 + src/settings-ui/Settings.UI.Library/PowerOcrProperties.cs | 1 + src/settings-ui/Settings.UI.Library/PowerOcrSettings.cs | 1 + src/settings-ui/Settings.UI.Library/PowerPreviewProperties.cs | 1 + src/settings-ui/Settings.UI.Library/PowerPreviewSettings.cs | 1 + .../Settings.UI.Library/PowerRenameLocalProperties.cs | 1 + src/settings-ui/Settings.UI.Library/PowerRenameProperties.cs | 1 + src/settings-ui/Settings.UI.Library/PowerRenameSettings.cs | 1 + src/settings-ui/Settings.UI.Library/RegistryPreviewSettings.cs | 1 + src/settings-ui/Settings.UI.Library/SettingPath.cs | 1 + .../Settings.UI.Library/SettingsBackupAndRestoreUtils.cs | 1 + src/settings-ui/Settings.UI.Library/SettingsRepository`1.cs | 1 + src/settings-ui/Settings.UI.Library/SettingsUtils.cs | 1 + src/settings-ui/Settings.UI.Library/ShortcutGuideProperties.cs | 1 + src/settings-ui/Settings.UI.Library/ShortcutGuideSettings.cs | 1 + .../Telemetry/Events/CmdNotFoundInstallEvent.cs | 1 + .../Telemetry/Events/CmdNotFoundUninstallEvent.cs | 1 + .../Settings.UI.Library/Telemetry/Events/OobeModuleRunEvent.cs | 1 + .../Settings.UI.Library/Telemetry/Events/OobeSectionEvent.cs | 1 + .../Settings.UI.Library/Telemetry/Events/OobeSettingsEvent.cs | 1 + .../Settings.UI.Library/Telemetry/Events/OobeStartedEvent.cs | 1 + .../Telemetry/Events/OobeVariantAssignmentEvent.cs | 1 + .../Settings.UI.Library/Telemetry/Events/ScoobeStartedEvent.cs | 1 + .../Settings.UI.Library/Telemetry/Events/SettingsBootEvent.cs | 1 + .../Telemetry/Events/SettingsEnabledEvent.cs | 1 + .../Telemetry/Events/TrayFlyoutActivatedEvent.cs | 1 + .../Telemetry/Events/TrayFlyoutModuleRunEvent.cs | 1 + .../Settings.UI.Library/Utilities/CommandLineUtils.cs | 1 + .../Utilities/GetSettingCommandLineCommand.cs | 1 + src/settings-ui/Settings.UI.Library/Utilities/Helper.cs | 1 + .../Utilities/SetAdditionalSettingsCommandLineCommand.cs | 1 + .../Utilities/SetSettingCommandLineCommand.cs | 1 + .../Settings.UI.Library/VideoConferenceConfigProperties.cs | 1 + src/settings-ui/Settings.UI.Library/VideoConferenceSettings.cs | 1 + src/settings-ui/Settings.UI.Library/WorkspacesSettings.cs | 1 + .../BackwardsCompatibility/BackCompatTestProperties.cs | 1 + .../Settings.UI.UnitTests/Cmd/SetSettingCommandTests.cs | 1 + .../Settings.UI.UnitTests/Mocks/IIOProviderMocks.cs | 1 + .../Settings.UI.UnitTests/ModelsTests/HelperTest.cs | 1 + .../Settings.UI.UnitTests/ModelsTests/SettingsUtilsTests.cs | 1 + .../Settings.UI.UnitTests/ViewModelTests/ColorPicker.cs | 1 + .../Settings.UI.UnitTests/ViewModelTests/FancyZones.cs | 1 + .../Settings.UI.UnitTests/ViewModelTests/General.cs | 2 ++ .../Settings.UI.UnitTests/ViewModelTests/ImageResizer.cs | 1 + .../Settings.UI.UnitTests/ViewModelTests/KeyboardManager.cs | 1 + .../ViewModelTests/PowerLauncherViewModelTest.cs | 1 + .../Settings.UI.UnitTests/ViewModelTests/PowerPreview.cs | 1 + .../Settings.UI.UnitTests/ViewModelTests/PowerRename.cs | 1 + .../Settings.UI.UnitTests/ViewModelTests/ShortcutGuide.cs | 1 + .../Settings.UI/Activation/DefaultActivationHandler.cs | 1 + .../Settings.UI/Converters/AwakeModeToIntConverter.cs | 1 + src/settings-ui/Settings.UI/Converters/ColorFormatConverter.cs | 1 + .../Settings.UI/Converters/ImageResizerFitToIntConverter.cs | 1 + .../Settings.UI/Converters/ImageResizerFitToStringConverter.cs | 1 + .../Settings.UI/Converters/ImageResizerUnitToIntConverter.cs | 1 + .../Converters/ImageResizerUnitToStringConverter.cs | 1 + .../Converters/IndexBitFieldToVisibilityConverter.cs | 1 + .../Settings.UI/Converters/RunOptionTemplateSelector.cs | 1 + .../Settings.UI/Converters/StringToInfoBarSeverityConverter.cs | 1 + .../Settings.UI/Converters/UpdateStateToBoolConverter.cs | 1 + src/settings-ui/Settings.UI/Helpers/NavHelper.cs | 1 + src/settings-ui/Settings.UI/Helpers/StartProcessHelper.cs | 1 + src/settings-ui/Settings.UI/Helpers/WindowHelper.cs | 1 + src/settings-ui/Settings.UI/Services/ActivationService.cs | 1 + src/settings-ui/Settings.UI/Services/NavigationService.cs | 1 + src/settings-ui/Settings.UI/Services/ThemeService.cs | 1 + src/settings-ui/Settings.UI/SettingsXAML/App.xaml.cs | 1 + .../SettingsXAML/Controls/CheckBoxWithDescriptionControl.cs | 1 + .../SettingsXAML/Controls/ColorFormatEditor.xaml.cs | 1 + .../SettingsXAML/Controls/FancyZonesPreviewControl.xaml.cs | 1 + .../Controls/IsEnabledTextBlock/IsEnabledTextBlock.cs | 1 + .../SettingsXAML/Controls/PowerAccentShortcutControl.xaml.cs | 1 + .../SettingsXAML/Controls/SettingsGroup/SettingsGroup.cs | 1 + .../Controls/SettingsPageControl/SettingsPageControl.xaml.cs | 1 + .../Controls/ShortcutControl/ShortcutControl.xaml.cs | 1 + .../ShortcutControl/ShortcutDialogContentControl.xaml.cs | 1 + .../ShortcutControl/ShortcutWithTextLabelControl.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Flyout/AppsListPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml.cs | 1 + src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs | 1 + .../SettingsXAML/OOBE/Views/OobeColorPicker.xaml.cs | 1 + .../SettingsXAML/OOBE/Views/OobeEnvironmentVariables.xaml.cs | 1 + .../Settings.UI/SettingsXAML/OOBE/Views/OobeHosts.xaml.cs | 1 + .../SettingsXAML/OOBE/Views/OobeOverviewPlaceholder.xaml.cs | 1 + .../Settings.UI/SettingsXAML/OOBE/Views/OobeRun.xaml.cs | 1 + .../Settings.UI/SettingsXAML/OOBE/Views/OobeShellPage.xaml.cs | 1 + .../SettingsXAML/OOBE/Views/OobeShortcutGuide.xaml.cs | 1 + .../Settings.UI/SettingsXAML/OOBE/Views/OobeWhatsNew.xaml.cs | 1 + src/settings-ui/Settings.UI/SettingsXAML/OobeWindow.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/DashboardPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/GeneralPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/ImageResizerPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/KeyboardManagerPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/MouseUtilsPage.xaml.cs | 1 + .../SettingsXAML/Views/MouseWithoutBordersPage.xaml.cs | 2 ++ .../Settings.UI/SettingsXAML/Views/NewPlusPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/PowerLauncherPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs | 1 + .../Settings.UI/SettingsXAML/Views/VideoConference.xaml.cs | 1 + .../Settings.UI/ViewModels/AdvancedPasteViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/AlwaysOnTopViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/AwakeViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/CmdNotFoundViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/ColorPickerViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/CropAndLockViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/DashboardListItem.cs | 1 + src/settings-ui/Settings.UI/ViewModels/DashboardModuleItem.cs | 1 + src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs | 1 + .../Settings.UI/ViewModels/EnvironmentVariablesViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/FancyZonesViewModel.cs | 1 + .../Settings.UI/ViewModels/FileLocksmithViewModel.cs | 1 + .../Settings.UI/ViewModels/Flyout/AllAppsViewModel.cs | 1 + .../Settings.UI/ViewModels/Flyout/FlyoutMenuItem.cs | 1 + .../Settings.UI/ViewModels/Flyout/LauncherViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/GeneralViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/HostsViewModel.cs | 1 + .../Settings.UI/ViewModels/ImageResizerViewModel.cs | 1 + .../Settings.UI/ViewModels/KeyboardManagerViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/MeasureToolViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/MouseUtilsViewModel.cs | 1 + .../Settings.UI/ViewModels/MouseWithoutBordersViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs | 2 ++ src/settings-ui/Settings.UI/ViewModels/PeekViewModel.cs | 1 + .../Settings.UI/ViewModels/PluginAdditionalOptionViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs | 1 + .../Settings.UI/ViewModels/PowerLauncherPluginViewModel.cs | 1 + .../Settings.UI/ViewModels/PowerLauncherViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/PowerOcrViewModel.cs | 1 + .../Settings.UI/ViewModels/PowerPreviewViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/PowerRenameViewModel.cs | 1 + .../Settings.UI/ViewModels/RegistryPreviewViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/ShellViewModel.cs | 1 + .../Settings.UI/ViewModels/ShortcutGuideViewModel.cs | 1 + .../Settings.UI/ViewModels/VideoConferenceViewModel.cs | 1 + src/settings-ui/Settings.UI/ViewModels/WorkspacesViewModel.cs | 1 + 190 files changed, 199 insertions(+), 1 deletion(-) diff --git a/src/modules/MouseWithoutBorders/App/Class/Extensions.cs b/src/modules/MouseWithoutBorders/App/Class/Extensions.cs index e199a5797ccb..904a14a3a502 100644 --- a/src/modules/MouseWithoutBorders/App/Class/Extensions.cs +++ b/src/modules/MouseWithoutBorders/App/Class/Extensions.cs @@ -6,7 +6,10 @@ using System.Diagnostics; using System.IO; +// Disable the warning to preserve original code +#pragma warning disable CA1716 namespace MouseWithoutBorders.Class +#pragma warning restore CA1716 { internal static class Extensions { diff --git a/src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs b/src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs index 758b41d33189..01371bb2ac40 100644 --- a/src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs +++ b/src/modules/MouseWithoutBorders/App/Class/NativeMethods.cs @@ -36,7 +36,10 @@ [module: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope = "member", Target = "MouseWithoutBorders.NativeMethods.#GetAsyncKeyState(System.IntPtr)", MessageId = "0", Justification = "Dotnet port with style preservation")] [module: SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", Scope = "member", Target = "MouseWithoutBorders.NativeMethods.#GetAsyncKeyState(System.IntPtr)", MessageId = "return", Justification = "Dotnet port with style preservation")] +// Disable the warning to preserve original code +#pragma warning disable CA1716 namespace MouseWithoutBorders.Class +#pragma warning restore CA1716 { internal partial class NativeMethods { diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs b/src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs index 64686fc139ec..3359c001d549 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/App.xaml.cs @@ -6,6 +6,7 @@ using System.Globalization; using System.Threading; using System.Windows; + using Common.UI; using ManagedCommon; using PowerToys.Interop; diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/Data/AppLaunchData.cs b/src/modules/Workspaces/WorkspacesLauncherUI/Data/AppLaunchData.cs index dc19b86647b5..6e9ad24379d1 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/Data/AppLaunchData.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/Data/AppLaunchData.cs @@ -3,7 +3,9 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Workspaces.Data; + using static WorkspacesLauncherUI.Data.AppLaunchData; using static WorkspacesLauncherUI.Data.AppLaunchInfosData; diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/Data/AppLaunchInfoData.cs b/src/modules/Workspaces/WorkspacesLauncherUI/Data/AppLaunchInfoData.cs index aa64510ba9dc..c01ffaba8c9c 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/Data/AppLaunchInfoData.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/Data/AppLaunchInfoData.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Workspaces.Data; using static WorkspacesLauncherUI.Data.AppLaunchInfoData; diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs b/src/modules/Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs index f3878a384758..073ee9c86428 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/Models/AppLaunching.cs @@ -13,6 +13,7 @@ using System.Text.RegularExpressions; using System.Windows.Media; using System.Windows.Media.Imaging; + using ManagedCommon; using Windows.Management.Deployment; using WorkspacesLauncherUI.Data; diff --git a/src/modules/Workspaces/WorkspacesLauncherUI/ViewModels/MainViewModel.cs b/src/modules/Workspaces/WorkspacesLauncherUI/ViewModels/MainViewModel.cs index 7002c9ef0590..103b08d6f7c7 100644 --- a/src/modules/Workspaces/WorkspacesLauncherUI/ViewModels/MainViewModel.cs +++ b/src/modules/Workspaces/WorkspacesLauncherUI/ViewModels/MainViewModel.cs @@ -7,6 +7,7 @@ using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; + using ManagedCommon; using WorkspacesLauncherUI.Data; using WorkspacesLauncherUI.Models; diff --git a/src/modules/awake/Awake/Core/Manager.cs b/src/modules/awake/Awake/Core/Manager.cs index f23725063567..ba69f9c8df5c 100644 --- a/src/modules/awake/Awake/Core/Manager.cs +++ b/src/modules/awake/Awake/Core/Manager.cs @@ -14,6 +14,7 @@ using System.Text; using System.Text.Json; using System.Threading; + using Awake.Core.Models; using Awake.Core.Native; using Awake.Properties; diff --git a/src/modules/awake/Awake/Core/Threading/SingleThreadSynchronizationContext.cs b/src/modules/awake/Awake/Core/Threading/SingleThreadSynchronizationContext.cs index 04c28dfd34b8..e45c13bad0c4 100644 --- a/src/modules/awake/Awake/Core/Threading/SingleThreadSynchronizationContext.cs +++ b/src/modules/awake/Awake/Core/Threading/SingleThreadSynchronizationContext.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Threading; + using ManagedCommon; namespace Awake.Core.Threading diff --git a/src/modules/awake/Awake/Core/TrayHelper.cs b/src/modules/awake/Awake/Core/TrayHelper.cs index 0545f97a8f65..8568f80cfa7f 100644 --- a/src/modules/awake/Awake/Core/TrayHelper.cs +++ b/src/modules/awake/Awake/Core/TrayHelper.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Runtime.InteropServices; using System.Threading; + using Awake.Core.Models; using Awake.Core.Native; using Awake.Core.Threading; diff --git a/src/modules/awake/Awake/Program.cs b/src/modules/awake/Awake/Program.cs index d1311ef51f03..2dd22db874bb 100644 --- a/src/modules/awake/Awake/Program.cs +++ b/src/modules/awake/Awake/Program.cs @@ -15,6 +15,7 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; + using Awake.Core; using Awake.Core.Models; using Awake.Core.Native; diff --git a/src/modules/launcher/Wox.Plugin/PluginLoadContext.cs b/src/modules/launcher/Wox.Plugin/PluginLoadContext.cs index 9f4bd29632a8..b0c618b5cff2 100644 --- a/src/modules/launcher/Wox.Plugin/PluginLoadContext.cs +++ b/src/modules/launcher/Wox.Plugin/PluginLoadContext.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Reflection; using System.Runtime.Loader; + using ManagedCommon; namespace Wox.Plugin diff --git a/src/modules/launcher/Wox.Plugin/PluginMetadata.cs b/src/modules/launcher/Wox.Plugin/PluginMetadata.cs index 6ee9703bd0ac..9a22fa485a89 100644 --- a/src/modules/launcher/Wox.Plugin/PluginMetadata.cs +++ b/src/modules/launcher/Wox.Plugin/PluginMetadata.cs @@ -36,8 +36,9 @@ public PluginMetadata() [JsonIgnore] public bool IsEnabledPolicyConfigured { get; set; } + // Needs to be other than private set in order to be visible to the Json Source Generator [JsonInclude] - public string ExecuteFilePath { get; private set; } + public string ExecuteFilePath { get; internal set; } public string ExecuteFileName { get; set; } diff --git a/src/settings-ui/Settings.UI.Library/EnabledModules.cs b/src/settings-ui/Settings.UI.Library/EnabledModules.cs index ebf70464d5f5..604b4c46abde 100644 --- a/src/settings-ui/Settings.UI.Library/EnabledModules.cs +++ b/src/settings-ui/Settings.UI.Library/EnabledModules.cs @@ -6,6 +6,7 @@ using System.Runtime.CompilerServices; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.Telemetry; using Microsoft.PowerToys.Telemetry; diff --git a/src/settings-ui/Settings.UI.Library/EnvironmentVariablesProperties.cs b/src/settings-ui/Settings.UI.Library/EnvironmentVariablesProperties.cs index 2d2b93d95f47..9319741de06c 100644 --- a/src/settings-ui/Settings.UI.Library/EnvironmentVariablesProperties.cs +++ b/src/settings-ui/Settings.UI.Library/EnvironmentVariablesProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Settings.UI.Library.Enumerations; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/EnvironmentVariablesSettings.cs b/src/settings-ui/Settings.UI.Library/EnvironmentVariablesSettings.cs index dfa79a537bec..d54641e977fe 100644 --- a/src/settings-ui/Settings.UI.Library/EnvironmentVariablesSettings.cs +++ b/src/settings-ui/Settings.UI.Library/EnvironmentVariablesSettings.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/FZConfigProperties.cs b/src/settings-ui/Settings.UI.Library/FZConfigProperties.cs index 51a026952367..9150cdbe90b5 100644 --- a/src/settings-ui/Settings.UI.Library/FZConfigProperties.cs +++ b/src/settings-ui/Settings.UI.Library/FZConfigProperties.cs @@ -4,6 +4,7 @@ using System.Text.Json; using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/FancyZonesSettings.cs b/src/settings-ui/Settings.UI.Library/FancyZonesSettings.cs index bff72a59841c..817b128aa44f 100644 --- a/src/settings-ui/Settings.UI.Library/FancyZonesSettings.cs +++ b/src/settings-ui/Settings.UI.Library/FancyZonesSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/FileLocksmithLocalProperties.cs b/src/settings-ui/Settings.UI.Library/FileLocksmithLocalProperties.cs index f998e5b4dd64..747baf6dffd8 100644 --- a/src/settings-ui/Settings.UI.Library/FileLocksmithLocalProperties.cs +++ b/src/settings-ui/Settings.UI.Library/FileLocksmithLocalProperties.cs @@ -4,6 +4,7 @@ using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/FileLocksmithSettings.cs b/src/settings-ui/Settings.UI.Library/FileLocksmithSettings.cs index 683746392f0b..30ee899173cc 100644 --- a/src/settings-ui/Settings.UI.Library/FileLocksmithSettings.cs +++ b/src/settings-ui/Settings.UI.Library/FileLocksmithSettings.cs @@ -4,6 +4,7 @@ using System; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/FindMyMouseProperties.cs b/src/settings-ui/Settings.UI.Library/FindMyMouseProperties.cs index 64ca0457aa3a..a028eb9e43dd 100644 --- a/src/settings-ui/Settings.UI.Library/FindMyMouseProperties.cs +++ b/src/settings-ui/Settings.UI.Library/FindMyMouseProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/FindMyMouseSettings.cs b/src/settings-ui/Settings.UI.Library/FindMyMouseSettings.cs index 921bd62992eb..aca45d0b017b 100644 --- a/src/settings-ui/Settings.UI.Library/FindMyMouseSettings.cs +++ b/src/settings-ui/Settings.UI.Library/FindMyMouseSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/GeneralSettings.cs b/src/settings-ui/Settings.UI.Library/GeneralSettings.cs index 6873b1962a0f..ed7b5031508b 100644 --- a/src/settings-ui/Settings.UI.Library/GeneralSettings.cs +++ b/src/settings-ui/Settings.UI.Library/GeneralSettings.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library.Interfaces; using Microsoft.PowerToys.Settings.UI.Library.Utilities; diff --git a/src/settings-ui/Settings.UI.Library/Helpers/ColorNameHelper.cs b/src/settings-ui/Settings.UI.Library/Helpers/ColorNameHelper.cs index 02c944385f0e..6d00db0b282a 100644 --- a/src/settings-ui/Settings.UI.Library/Helpers/ColorNameHelper.cs +++ b/src/settings-ui/Settings.UI.Library/Helpers/ColorNameHelper.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Drawing; + using global::Settings.UI.Library.Resources; using ManagedCommon; diff --git a/src/settings-ui/Settings.UI.Library/HostsProperties.cs b/src/settings-ui/Settings.UI.Library/HostsProperties.cs index ea05a3440018..90a576601dd6 100644 --- a/src/settings-ui/Settings.UI.Library/HostsProperties.cs +++ b/src/settings-ui/Settings.UI.Library/HostsProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; using Settings.UI.Library.Enumerations; diff --git a/src/settings-ui/Settings.UI.Library/HostsSettings.cs b/src/settings-ui/Settings.UI.Library/HostsSettings.cs index 5e15a7e664b4..bb339f178c3b 100644 --- a/src/settings-ui/Settings.UI.Library/HostsSettings.cs +++ b/src/settings-ui/Settings.UI.Library/HostsSettings.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/HotkeySettings.cs b/src/settings-ui/Settings.UI.Library/HotkeySettings.cs index 38018f59d135..ff588eafbd6d 100644 --- a/src/settings-ui/Settings.UI.Library/HotkeySettings.cs +++ b/src/settings-ui/Settings.UI.Library/HotkeySettings.cs @@ -7,6 +7,7 @@ using System.Globalization; using System.Text; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Utilities; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/HotkeySettingsControlHook.cs b/src/settings-ui/Settings.UI.Library/HotkeySettingsControlHook.cs index cc932b358457..0ff67df6380a 100644 --- a/src/settings-ui/Settings.UI.Library/HotkeySettingsControlHook.cs +++ b/src/settings-ui/Settings.UI.Library/HotkeySettingsControlHook.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using PowerToys.Interop; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/ISettingsUtils.cs b/src/settings-ui/Settings.UI.Library/ISettingsUtils.cs index a6f340e83cc3..10e8bf26acd6 100644 --- a/src/settings-ui/Settings.UI.Library/ISettingsUtils.cs +++ b/src/settings-ui/Settings.UI.Library/ISettingsUtils.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/ImageResizerProperties.cs b/src/settings-ui/Settings.UI.Library/ImageResizerProperties.cs index 8d5705588146..acef5a2f4d7b 100644 --- a/src/settings-ui/Settings.UI.Library/ImageResizerProperties.cs +++ b/src/settings-ui/Settings.UI.Library/ImageResizerProperties.cs @@ -6,6 +6,7 @@ using System.Collections.ObjectModel; using System.Text.Json; using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/ImageResizerSettings.cs b/src/settings-ui/Settings.UI.Library/ImageResizerSettings.cs index f43c76ba7053..97f785d6c24c 100644 --- a/src/settings-ui/Settings.UI.Library/ImageResizerSettings.cs +++ b/src/settings-ui/Settings.UI.Library/ImageResizerSettings.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/KeyboardManagerProfile.cs b/src/settings-ui/Settings.UI.Library/KeyboardManagerProfile.cs index f47b1f0ded34..983f9a1f6a73 100644 --- a/src/settings-ui/Settings.UI.Library/KeyboardManagerProfile.cs +++ b/src/settings-ui/Settings.UI.Library/KeyboardManagerProfile.cs @@ -4,6 +4,7 @@ using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/KeyboardManagerProperties.cs b/src/settings-ui/Settings.UI.Library/KeyboardManagerProperties.cs index 86ab049f7c22..25a84dbb2c2a 100644 --- a/src/settings-ui/Settings.UI.Library/KeyboardManagerProperties.cs +++ b/src/settings-ui/Settings.UI.Library/KeyboardManagerProperties.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/KeyboardManagerSettings.cs b/src/settings-ui/Settings.UI.Library/KeyboardManagerSettings.cs index a52fdceea227..5682d6d8659b 100644 --- a/src/settings-ui/Settings.UI.Library/KeyboardManagerSettings.cs +++ b/src/settings-ui/Settings.UI.Library/KeyboardManagerSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/KeysDataModel.cs b/src/settings-ui/Settings.UI.Library/KeysDataModel.cs index 5788aad96b19..1232d384b83e 100644 --- a/src/settings-ui/Settings.UI.Library/KeysDataModel.cs +++ b/src/settings-ui/Settings.UI.Library/KeysDataModel.cs @@ -14,6 +14,7 @@ using System.Text.Json.Serialization; using System.Threading; using System.Windows.Input; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library.Utilities; using Microsoft.PowerToys.Settings.UI.Library.ViewModels.Commands; diff --git a/src/settings-ui/Settings.UI.Library/MeasureToolProperties.cs b/src/settings-ui/Settings.UI.Library/MeasureToolProperties.cs index 97a0c3219ab5..ebda5953d0a5 100644 --- a/src/settings-ui/Settings.UI.Library/MeasureToolProperties.cs +++ b/src/settings-ui/Settings.UI.Library/MeasureToolProperties.cs @@ -4,6 +4,7 @@ using System.Text.Json; using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; using Settings.UI.Library.Enumerations; diff --git a/src/settings-ui/Settings.UI.Library/MeasureToolSettings.cs b/src/settings-ui/Settings.UI.Library/MeasureToolSettings.cs index 65275ba6cee3..5720c70ca53f 100644 --- a/src/settings-ui/Settings.UI.Library/MeasureToolSettings.cs +++ b/src/settings-ui/Settings.UI.Library/MeasureToolSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/MouseHighlighterProperties.cs b/src/settings-ui/Settings.UI.Library/MouseHighlighterProperties.cs index bb847c2e3021..298b0d923083 100644 --- a/src/settings-ui/Settings.UI.Library/MouseHighlighterProperties.cs +++ b/src/settings-ui/Settings.UI.Library/MouseHighlighterProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/MouseHighlighterSettings.cs b/src/settings-ui/Settings.UI.Library/MouseHighlighterSettings.cs index b677ee2175a2..e23a7fe28845 100644 --- a/src/settings-ui/Settings.UI.Library/MouseHighlighterSettings.cs +++ b/src/settings-ui/Settings.UI.Library/MouseHighlighterSettings.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Runtime.InteropServices; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/MouseJumpProperties.cs b/src/settings-ui/Settings.UI.Library/MouseJumpProperties.cs index c24d949dc1b8..0c26e8612420 100644 --- a/src/settings-ui/Settings.UI.Library/MouseJumpProperties.cs +++ b/src/settings-ui/Settings.UI.Library/MouseJumpProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/MouseJumpSettings.cs b/src/settings-ui/Settings.UI.Library/MouseJumpSettings.cs index 596e6cd91ba4..fbeb1eaf683d 100644 --- a/src/settings-ui/Settings.UI.Library/MouseJumpSettings.cs +++ b/src/settings-ui/Settings.UI.Library/MouseJumpSettings.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/MousePointerCrosshairsProperties.cs b/src/settings-ui/Settings.UI.Library/MousePointerCrosshairsProperties.cs index 46c9e4fe0314..9b0e530a2a27 100644 --- a/src/settings-ui/Settings.UI.Library/MousePointerCrosshairsProperties.cs +++ b/src/settings-ui/Settings.UI.Library/MousePointerCrosshairsProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/MousePointerCrosshairsSettings.cs b/src/settings-ui/Settings.UI.Library/MousePointerCrosshairsSettings.cs index 7c1f2532714a..2658a2adec0c 100644 --- a/src/settings-ui/Settings.UI.Library/MousePointerCrosshairsSettings.cs +++ b/src/settings-ui/Settings.UI.Library/MousePointerCrosshairsSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/MouseWithoutBordersProperties.cs b/src/settings-ui/Settings.UI.Library/MouseWithoutBordersProperties.cs index 5bf4ae53dedb..265b8a1e2d8f 100644 --- a/src/settings-ui/Settings.UI.Library/MouseWithoutBordersProperties.cs +++ b/src/settings-ui/Settings.UI.Library/MouseWithoutBordersProperties.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/MouseWithoutBordersSettings.cs b/src/settings-ui/Settings.UI.Library/MouseWithoutBordersSettings.cs index f030d98bf164..6a51a150e540 100644 --- a/src/settings-ui/Settings.UI.Library/MouseWithoutBordersSettings.cs +++ b/src/settings-ui/Settings.UI.Library/MouseWithoutBordersSettings.cs @@ -6,6 +6,7 @@ using System.Diagnostics; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/NewPlusSettings.cs b/src/settings-ui/Settings.UI.Library/NewPlusSettings.cs index 2450898684d4..7a37c72a849c 100644 --- a/src/settings-ui/Settings.UI.Library/NewPlusSettings.cs +++ b/src/settings-ui/Settings.UI.Library/NewPlusSettings.cs @@ -7,6 +7,7 @@ using System.Text.Json; using System.Text.Json.Serialization; using System.Text.RegularExpressions; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; using Settings.UI.Library.Resources; diff --git a/src/settings-ui/Settings.UI.Library/PeekPreviewSettings.cs b/src/settings-ui/Settings.UI.Library/PeekPreviewSettings.cs index 75562ca9a292..f098b180520f 100644 --- a/src/settings-ui/Settings.UI.Library/PeekPreviewSettings.cs +++ b/src/settings-ui/Settings.UI.Library/PeekPreviewSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Interfaces; diff --git a/src/settings-ui/Settings.UI.Library/PeekProperties.cs b/src/settings-ui/Settings.UI.Library/PeekProperties.cs index 6932177df194..1e4514d86631 100644 --- a/src/settings-ui/Settings.UI.Library/PeekProperties.cs +++ b/src/settings-ui/Settings.UI.Library/PeekProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PeekSettings.cs b/src/settings-ui/Settings.UI.Library/PeekSettings.cs index 3302f15c6483..f5ad2a0e263d 100644 --- a/src/settings-ui/Settings.UI.Library/PeekSettings.cs +++ b/src/settings-ui/Settings.UI.Library/PeekSettings.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerAccentProperties.cs b/src/settings-ui/Settings.UI.Library/PowerAccentProperties.cs index f471f51c1368..4ab0b955c72c 100644 --- a/src/settings-ui/Settings.UI.Library/PowerAccentProperties.cs +++ b/src/settings-ui/Settings.UI.Library/PowerAccentProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Enumerations; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerAccentSettings.cs b/src/settings-ui/Settings.UI.Library/PowerAccentSettings.cs index 6302fd505814..f080dcb09300 100644 --- a/src/settings-ui/Settings.UI.Library/PowerAccentSettings.cs +++ b/src/settings-ui/Settings.UI.Library/PowerAccentSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerLauncherProperties.cs b/src/settings-ui/Settings.UI.Library/PowerLauncherProperties.cs index efe7e1e446e4..590fb2e290fb 100644 --- a/src/settings-ui/Settings.UI.Library/PowerLauncherProperties.cs +++ b/src/settings-ui/Settings.UI.Library/PowerLauncherProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using ManagedCommon; using Settings.UI.Library.Attributes; diff --git a/src/settings-ui/Settings.UI.Library/PowerLauncherSettings.cs b/src/settings-ui/Settings.UI.Library/PowerLauncherSettings.cs index 4c7ad70e0c2a..c21ce67df505 100644 --- a/src/settings-ui/Settings.UI.Library/PowerLauncherSettings.cs +++ b/src/settings-ui/Settings.UI.Library/PowerLauncherSettings.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerOcrProperties.cs b/src/settings-ui/Settings.UI.Library/PowerOcrProperties.cs index 0ea4fcca5440..5cba3cfb3ec4 100644 --- a/src/settings-ui/Settings.UI.Library/PowerOcrProperties.cs +++ b/src/settings-ui/Settings.UI.Library/PowerOcrProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerOcrSettings.cs b/src/settings-ui/Settings.UI.Library/PowerOcrSettings.cs index 9bf9db87d615..46d176d2b044 100644 --- a/src/settings-ui/Settings.UI.Library/PowerOcrSettings.cs +++ b/src/settings-ui/Settings.UI.Library/PowerOcrSettings.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerPreviewProperties.cs b/src/settings-ui/Settings.UI.Library/PowerPreviewProperties.cs index 1c09438b61f3..28d76dd067be 100644 --- a/src/settings-ui/Settings.UI.Library/PowerPreviewProperties.cs +++ b/src/settings-ui/Settings.UI.Library/PowerPreviewProperties.cs @@ -5,6 +5,7 @@ using System.Runtime.CompilerServices; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.Telemetry; using Microsoft.PowerToys.Telemetry; using Settings.UI.Library.Enumerations; diff --git a/src/settings-ui/Settings.UI.Library/PowerPreviewSettings.cs b/src/settings-ui/Settings.UI.Library/PowerPreviewSettings.cs index 5cdb94b92380..ba0ac30bb30d 100644 --- a/src/settings-ui/Settings.UI.Library/PowerPreviewSettings.cs +++ b/src/settings-ui/Settings.UI.Library/PowerPreviewSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerRenameLocalProperties.cs b/src/settings-ui/Settings.UI.Library/PowerRenameLocalProperties.cs index 5812b2a0829b..726faf2bc081 100644 --- a/src/settings-ui/Settings.UI.Library/PowerRenameLocalProperties.cs +++ b/src/settings-ui/Settings.UI.Library/PowerRenameLocalProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerRenameProperties.cs b/src/settings-ui/Settings.UI.Library/PowerRenameProperties.cs index dfe27855ecfb..dcc10a7bdc8c 100644 --- a/src/settings-ui/Settings.UI.Library/PowerRenameProperties.cs +++ b/src/settings-ui/Settings.UI.Library/PowerRenameProperties.cs @@ -4,6 +4,7 @@ using System; using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/PowerRenameSettings.cs b/src/settings-ui/Settings.UI.Library/PowerRenameSettings.cs index 39c20a3af1ec..50bc8cdfe38e 100644 --- a/src/settings-ui/Settings.UI.Library/PowerRenameSettings.cs +++ b/src/settings-ui/Settings.UI.Library/PowerRenameSettings.cs @@ -4,6 +4,7 @@ using System; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/RegistryPreviewSettings.cs b/src/settings-ui/Settings.UI.Library/RegistryPreviewSettings.cs index d7dab39ef51e..6d9179aba724 100644 --- a/src/settings-ui/Settings.UI.Library/RegistryPreviewSettings.cs +++ b/src/settings-ui/Settings.UI.Library/RegistryPreviewSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/SettingPath.cs b/src/settings-ui/Settings.UI.Library/SettingPath.cs index 3768db997629..94c5d83ca10a 100644 --- a/src/settings-ui/Settings.UI.Library/SettingPath.cs +++ b/src/settings-ui/Settings.UI.Library/SettingPath.cs @@ -4,6 +4,7 @@ using System; using System.IO.Abstractions; + using Microsoft.PowerToys.Settings.UI.Library.Utilities; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/SettingsBackupAndRestoreUtils.cs b/src/settings-ui/Settings.UI.Library/SettingsBackupAndRestoreUtils.cs index 98be5a62882c..a31878f2407d 100644 --- a/src/settings-ui/Settings.UI.Library/SettingsBackupAndRestoreUtils.cs +++ b/src/settings-ui/Settings.UI.Library/SettingsBackupAndRestoreUtils.cs @@ -15,6 +15,7 @@ using System.Text.Json.Nodes; using System.Text.RegularExpressions; using System.Threading; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library.Utilities; diff --git a/src/settings-ui/Settings.UI.Library/SettingsRepository`1.cs b/src/settings-ui/Settings.UI.Library/SettingsRepository`1.cs index b9d27dedb9b5..7f634a20128b 100644 --- a/src/settings-ui/Settings.UI.Library/SettingsRepository`1.cs +++ b/src/settings-ui/Settings.UI.Library/SettingsRepository`1.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/SettingsUtils.cs b/src/settings-ui/Settings.UI.Library/SettingsUtils.cs index 30002d956ef1..13065b1a7175 100644 --- a/src/settings-ui/Settings.UI.Library/SettingsUtils.cs +++ b/src/settings-ui/Settings.UI.Library/SettingsUtils.cs @@ -6,6 +6,7 @@ using System.IO; using System.IO.Abstractions; using System.Text.Json; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library.Interfaces; diff --git a/src/settings-ui/Settings.UI.Library/ShortcutGuideProperties.cs b/src/settings-ui/Settings.UI.Library/ShortcutGuideProperties.cs index b84fe8b0ae7e..d34a2f748a09 100644 --- a/src/settings-ui/Settings.UI.Library/ShortcutGuideProperties.cs +++ b/src/settings-ui/Settings.UI.Library/ShortcutGuideProperties.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/ShortcutGuideSettings.cs b/src/settings-ui/Settings.UI.Library/ShortcutGuideSettings.cs index 174aa4e217a0..c39e757fe308 100644 --- a/src/settings-ui/Settings.UI.Library/ShortcutGuideSettings.cs +++ b/src/settings-ui/Settings.UI.Library/ShortcutGuideSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/CmdNotFoundInstallEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/CmdNotFoundInstallEvent.cs index 97d700a8e5b1..6af544417459 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/CmdNotFoundInstallEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/CmdNotFoundInstallEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/CmdNotFoundUninstallEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/CmdNotFoundUninstallEvent.cs index ae469903ee8f..36f90bcfd77e 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/CmdNotFoundUninstallEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/CmdNotFoundUninstallEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeModuleRunEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeModuleRunEvent.cs index 4b0721d410a2..b6316cd2db3a 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeModuleRunEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeModuleRunEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeSectionEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeSectionEvent.cs index bb3265773d38..4d762220c304 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeSectionEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeSectionEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeSettingsEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeSettingsEvent.cs index f0e7293ed35d..499a1b98b3ec 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeSettingsEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeSettingsEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeStartedEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeStartedEvent.cs index 771cdfc40252..8912ea315625 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeStartedEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeStartedEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeVariantAssignmentEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeVariantAssignmentEvent.cs index 8f17b58dc381..d4a30550ebf0 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeVariantAssignmentEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/OobeVariantAssignmentEvent.cs @@ -4,6 +4,7 @@ using System; using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/ScoobeStartedEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/ScoobeStartedEvent.cs index 63b1bf48e239..f8f6c10c415e 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/ScoobeStartedEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/ScoobeStartedEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsBootEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsBootEvent.cs index 376ae6f16a69..edb989199f70 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsBootEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsBootEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsEnabledEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsEnabledEvent.cs index 5cf0ea697a01..7abfc8e2c25e 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsEnabledEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/SettingsEnabledEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/TrayFlyoutActivatedEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/TrayFlyoutActivatedEvent.cs index 8e075aea0ce2..91600660e417 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/TrayFlyoutActivatedEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/TrayFlyoutActivatedEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Telemetry/Events/TrayFlyoutModuleRunEvent.cs b/src/settings-ui/Settings.UI.Library/Telemetry/Events/TrayFlyoutModuleRunEvent.cs index c1813e9adb91..167cf48dfb27 100644 --- a/src/settings-ui/Settings.UI.Library/Telemetry/Events/TrayFlyoutModuleRunEvent.cs +++ b/src/settings-ui/Settings.UI.Library/Telemetry/Events/TrayFlyoutModuleRunEvent.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics.Tracing; + using Microsoft.PowerToys.Telemetry; using Microsoft.PowerToys.Telemetry.Events; diff --git a/src/settings-ui/Settings.UI.Library/Utilities/CommandLineUtils.cs b/src/settings-ui/Settings.UI.Library/Utilities/CommandLineUtils.cs index 91703a69c688..a7702e17a272 100644 --- a/src/settings-ui/Settings.UI.Library/Utilities/CommandLineUtils.cs +++ b/src/settings-ui/Settings.UI.Library/Utilities/CommandLineUtils.cs @@ -5,6 +5,7 @@ using System; using System.Linq; using System.Reflection; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI.Library/Utilities/GetSettingCommandLineCommand.cs b/src/settings-ui/Settings.UI.Library/Utilities/GetSettingCommandLineCommand.cs index e74469795eda..a4ad1d186245 100644 --- a/src/settings-ui/Settings.UI.Library/Utilities/GetSettingCommandLineCommand.cs +++ b/src/settings-ui/Settings.UI.Library/Utilities/GetSettingCommandLineCommand.cs @@ -7,6 +7,7 @@ using System.Globalization; using System.Text.Json; using System.Xml; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; using Settings.UI.Library.Attributes; diff --git a/src/settings-ui/Settings.UI.Library/Utilities/Helper.cs b/src/settings-ui/Settings.UI.Library/Utilities/Helper.cs index 3b0f37781059..fc1f8d6f7cf3 100644 --- a/src/settings-ui/Settings.UI.Library/Utilities/Helper.cs +++ b/src/settings-ui/Settings.UI.Library/Utilities/Helper.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Net.NetworkInformation; using System.Security.Principal; + using Microsoft.PowerToys.Settings.UI.Library.CustomAction; namespace Microsoft.PowerToys.Settings.UI.Library.Utilities diff --git a/src/settings-ui/Settings.UI.Library/Utilities/SetAdditionalSettingsCommandLineCommand.cs b/src/settings-ui/Settings.UI.Library/Utilities/SetAdditionalSettingsCommandLineCommand.cs index 122dccfd4b95..29f47a434744 100644 --- a/src/settings-ui/Settings.UI.Library/Utilities/SetAdditionalSettingsCommandLineCommand.cs +++ b/src/settings-ui/Settings.UI.Library/Utilities/SetAdditionalSettingsCommandLineCommand.cs @@ -12,6 +12,7 @@ using System.Reflection; using System.Text.Json; using System.Text.Json.Nodes; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI.Library/Utilities/SetSettingCommandLineCommand.cs b/src/settings-ui/Settings.UI.Library/Utilities/SetSettingCommandLineCommand.cs index 1e839a17c86c..ab5a88c5d86f 100644 --- a/src/settings-ui/Settings.UI.Library/Utilities/SetSettingCommandLineCommand.cs +++ b/src/settings-ui/Settings.UI.Library/Utilities/SetSettingCommandLineCommand.cs @@ -4,6 +4,7 @@ using System; using System.Reflection; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI.Library/VideoConferenceConfigProperties.cs b/src/settings-ui/Settings.UI.Library/VideoConferenceConfigProperties.cs index c1df38908e1e..9c7b33f80411 100644 --- a/src/settings-ui/Settings.UI.Library/VideoConferenceConfigProperties.cs +++ b/src/settings-ui/Settings.UI.Library/VideoConferenceConfigProperties.cs @@ -4,6 +4,7 @@ using System.Text.Json; using System.Text.Json.Serialization; + using Settings.UI.Library.Attributes; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/VideoConferenceSettings.cs b/src/settings-ui/Settings.UI.Library/VideoConferenceSettings.cs index 80ead8732ef1..c33bcdaaa6d4 100644 --- a/src/settings-ui/Settings.UI.Library/VideoConferenceSettings.cs +++ b/src/settings-ui/Settings.UI.Library/VideoConferenceSettings.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.Library/WorkspacesSettings.cs b/src/settings-ui/Settings.UI.Library/WorkspacesSettings.cs index 00709e418c3b..1e3ce2261e40 100644 --- a/src/settings-ui/Settings.UI.Library/WorkspacesSettings.cs +++ b/src/settings-ui/Settings.UI.Library/WorkspacesSettings.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; + using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library diff --git a/src/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/BackCompatTestProperties.cs b/src/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/BackCompatTestProperties.cs index b1c03a5d894a..b2048fa573e4 100644 --- a/src/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/BackCompatTestProperties.cs +++ b/src/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/BackCompatTestProperties.cs @@ -7,6 +7,7 @@ using System.IO.Abstractions; using System.Linq.Expressions; using System.Text; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Interfaces; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; diff --git a/src/settings-ui/Settings.UI.UnitTests/Cmd/SetSettingCommandTests.cs b/src/settings-ui/Settings.UI.UnitTests/Cmd/SetSettingCommandTests.cs index 572682854e3b..4c6d1babfd97 100644 --- a/src/settings-ui/Settings.UI.UnitTests/Cmd/SetSettingCommandTests.cs +++ b/src/settings-ui/Settings.UI.UnitTests/Cmd/SetSettingCommandTests.cs @@ -4,6 +4,7 @@ using System; using System.IO.Abstractions.TestingHelpers; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/src/settings-ui/Settings.UI.UnitTests/Mocks/IIOProviderMocks.cs b/src/settings-ui/Settings.UI.UnitTests/Mocks/IIOProviderMocks.cs index 647e3670f384..b5e531d74221 100644 --- a/src/settings-ui/Settings.UI.UnitTests/Mocks/IIOProviderMocks.cs +++ b/src/settings-ui/Settings.UI.UnitTests/Mocks/IIOProviderMocks.cs @@ -5,6 +5,7 @@ using System; using System.IO.Abstractions; using System.Linq.Expressions; + using Microsoft.PowerToys.Settings.UI.Library.Utilities; using Moq; diff --git a/src/settings-ui/Settings.UI.UnitTests/ModelsTests/HelperTest.cs b/src/settings-ui/Settings.UI.UnitTests/ModelsTests/HelperTest.cs index dd362e38daba..aaa6e87d1891 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ModelsTests/HelperTest.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ModelsTests/HelperTest.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library.Utilities; using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/src/settings-ui/Settings.UI.UnitTests/ModelsTests/SettingsUtilsTests.cs b/src/settings-ui/Settings.UI.UnitTests/ModelsTests/SettingsUtilsTests.cs index 62e7f7b9af76..9b75925cb8ae 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ModelsTests/SettingsUtilsTests.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ModelsTests/SettingsUtilsTests.cs @@ -6,6 +6,7 @@ using System.IO.Abstractions.TestingHelpers; using System.Linq; using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Interfaces; using Microsoft.PowerToys.Settings.UnitTest; diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ColorPicker.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ColorPicker.cs index 5fe20f3cda99..baf46827c490 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ColorPicker.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ColorPicker.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/FancyZones.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/FancyZones.cs index 0239fbfd7172..ef230bde0ad3 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/FancyZones.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/FancyZones.cs @@ -4,6 +4,7 @@ using System; using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/General.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/General.cs index 56da0a21bb24..70bfbe4fba3c 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/General.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/General.cs @@ -3,12 +3,14 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; using Microsoft.PowerToys.Settings.UI.ViewModels; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; + using JsonSerializer = System.Text.Json.JsonSerializer; namespace ViewModelTests diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ImageResizer.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ImageResizer.cs index 4bd392008cbf..1d2c62daecf1 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ImageResizer.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ImageResizer.cs @@ -6,6 +6,7 @@ using System.IO.Abstractions.TestingHelpers; using System.Linq; using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/KeyboardManager.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/KeyboardManager.cs index 2234540f4f45..89491b2b99c3 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/KeyboardManager.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/KeyboardManager.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.ViewModels; using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerLauncherViewModelTest.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerLauncherViewModelTest.cs index a5d09f61b29a..f1084d498a6d 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerLauncherViewModelTest.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerLauncherViewModelTest.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility; using Microsoft.PowerToys.Settings.UI.ViewModels; diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerPreview.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerPreview.cs index f70357293e0f..373b9a3580a4 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerPreview.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerPreview.cs @@ -4,6 +4,7 @@ using System; using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerRename.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerRename.cs index 441fd906e770..278975183b21 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerRename.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/PowerRename.cs @@ -4,6 +4,7 @@ using System; using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; diff --git a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ShortcutGuide.cs b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ShortcutGuide.cs index b162ecc713b7..3613d0cfa32a 100644 --- a/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ShortcutGuide.cs +++ b/src/settings-ui/Settings.UI.UnitTests/ViewModelTests/ShortcutGuide.cs @@ -4,6 +4,7 @@ using System; using System.Text.Json; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; diff --git a/src/settings-ui/Settings.UI/Activation/DefaultActivationHandler.cs b/src/settings-ui/Settings.UI/Activation/DefaultActivationHandler.cs index c501a23e6bb4..946fab205c64 100644 --- a/src/settings-ui/Settings.UI/Activation/DefaultActivationHandler.cs +++ b/src/settings-ui/Settings.UI/Activation/DefaultActivationHandler.cs @@ -4,6 +4,7 @@ using System; using System.Threading.Tasks; + using Microsoft.PowerToys.Settings.UI.Services; using Windows.ApplicationModel.Activation; diff --git a/src/settings-ui/Settings.UI/Converters/AwakeModeToIntConverter.cs b/src/settings-ui/Settings.UI/Converters/AwakeModeToIntConverter.cs index 1bbae1f8c2ed..1119b911546f 100644 --- a/src/settings-ui/Settings.UI/Converters/AwakeModeToIntConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/AwakeModeToIntConverter.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.UI.Xaml.Data; diff --git a/src/settings-ui/Settings.UI/Converters/ColorFormatConverter.cs b/src/settings-ui/Settings.UI/Converters/ColorFormatConverter.cs index 8b81200d6400..428b5d60a5ac 100644 --- a/src/settings-ui/Settings.UI/Converters/ColorFormatConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/ColorFormatConverter.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using ManagedCommon; using Microsoft.UI.Xaml.Data; diff --git a/src/settings-ui/Settings.UI/Converters/ImageResizerFitToIntConverter.cs b/src/settings-ui/Settings.UI/Converters/ImageResizerFitToIntConverter.cs index 8a6802519740..1439e97e7fa4 100644 --- a/src/settings-ui/Settings.UI/Converters/ImageResizerFitToIntConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/ImageResizerFitToIntConverter.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.UI.Xaml.Data; diff --git a/src/settings-ui/Settings.UI/Converters/ImageResizerFitToStringConverter.cs b/src/settings-ui/Settings.UI/Converters/ImageResizerFitToStringConverter.cs index d9a740db9510..bfc991c07090 100644 --- a/src/settings-ui/Settings.UI/Converters/ImageResizerFitToStringConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/ImageResizerFitToStringConverter.cs @@ -4,6 +4,7 @@ using System; using System.Globalization; + using Microsoft.UI.Xaml.Data; namespace Microsoft.PowerToys.Settings.UI.Converters diff --git a/src/settings-ui/Settings.UI/Converters/ImageResizerUnitToIntConverter.cs b/src/settings-ui/Settings.UI/Converters/ImageResizerUnitToIntConverter.cs index 0132b862417e..0a5087778e6e 100644 --- a/src/settings-ui/Settings.UI/Converters/ImageResizerUnitToIntConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/ImageResizerUnitToIntConverter.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.UI.Xaml.Data; diff --git a/src/settings-ui/Settings.UI/Converters/ImageResizerUnitToStringConverter.cs b/src/settings-ui/Settings.UI/Converters/ImageResizerUnitToStringConverter.cs index 6dc89e65fb8a..ab4aec819550 100644 --- a/src/settings-ui/Settings.UI/Converters/ImageResizerUnitToStringConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/ImageResizerUnitToStringConverter.cs @@ -4,6 +4,7 @@ using System; using System.Globalization; + using Microsoft.UI.Xaml.Data; namespace Microsoft.PowerToys.Settings.UI.Converters diff --git a/src/settings-ui/Settings.UI/Converters/IndexBitFieldToVisibilityConverter.cs b/src/settings-ui/Settings.UI/Converters/IndexBitFieldToVisibilityConverter.cs index 3295294550ea..fadefcbfaa98 100644 --- a/src/settings-ui/Settings.UI/Converters/IndexBitFieldToVisibilityConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/IndexBitFieldToVisibilityConverter.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Data; diff --git a/src/settings-ui/Settings.UI/Converters/RunOptionTemplateSelector.cs b/src/settings-ui/Settings.UI/Converters/RunOptionTemplateSelector.cs index 0e742e855a96..0093f5f28f05 100644 --- a/src/settings-ui/Settings.UI/Converters/RunOptionTemplateSelector.cs +++ b/src/settings-ui/Settings.UI/Converters/RunOptionTemplateSelector.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.ViewModels; using Microsoft.UI.Xaml; diff --git a/src/settings-ui/Settings.UI/Converters/StringToInfoBarSeverityConverter.cs b/src/settings-ui/Settings.UI/Converters/StringToInfoBarSeverityConverter.cs index 548b68889b7b..af64f9e42fa2 100644 --- a/src/settings-ui/Settings.UI/Converters/StringToInfoBarSeverityConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/StringToInfoBarSeverityConverter.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.UI.Xaml.Data; namespace Microsoft.PowerToys.Settings.UI.Converters diff --git a/src/settings-ui/Settings.UI/Converters/UpdateStateToBoolConverter.cs b/src/settings-ui/Settings.UI/Converters/UpdateStateToBoolConverter.cs index ecc19dbd7c84..15d874a430ef 100644 --- a/src/settings-ui/Settings.UI/Converters/UpdateStateToBoolConverter.cs +++ b/src/settings-ui/Settings.UI/Converters/UpdateStateToBoolConverter.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.UI.Xaml.Data; namespace Microsoft.PowerToys.Settings.UI.Converters diff --git a/src/settings-ui/Settings.UI/Helpers/NavHelper.cs b/src/settings-ui/Settings.UI/Helpers/NavHelper.cs index 12375832da9f..52fd7a753f8b 100644 --- a/src/settings-ui/Settings.UI/Helpers/NavHelper.cs +++ b/src/settings-ui/Settings.UI/Helpers/NavHelper.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/Helpers/StartProcessHelper.cs b/src/settings-ui/Settings.UI/Helpers/StartProcessHelper.cs index b4a2e6b6d59e..816b6bcc6393 100644 --- a/src/settings-ui/Settings.UI/Helpers/StartProcessHelper.cs +++ b/src/settings-ui/Settings.UI/Helpers/StartProcessHelper.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Diagnostics; + using Common.UI; namespace Microsoft.PowerToys.Settings.UI.Helpers diff --git a/src/settings-ui/Settings.UI/Helpers/WindowHelper.cs b/src/settings-ui/Settings.UI/Helpers/WindowHelper.cs index 440d6cf90264..489e2b9a4a80 100644 --- a/src/settings-ui/Settings.UI/Helpers/WindowHelper.cs +++ b/src/settings-ui/Settings.UI/Helpers/WindowHelper.cs @@ -6,6 +6,7 @@ using System.IO; using System.Runtime.InteropServices; using System.Text.Json; + using Microsoft.UI.Xaml; namespace Microsoft.PowerToys.Settings.UI.Helpers diff --git a/src/settings-ui/Settings.UI/Services/ActivationService.cs b/src/settings-ui/Settings.UI/Services/ActivationService.cs index 0d6d2416310d..86ad2e4d7cb0 100644 --- a/src/settings-ui/Settings.UI/Services/ActivationService.cs +++ b/src/settings-ui/Settings.UI/Services/ActivationService.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; + using Microsoft.PowerToys.Settings.UI.Activation; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/Services/NavigationService.cs b/src/settings-ui/Settings.UI/Services/NavigationService.cs index be720e2ec639..b70976bd01c9 100644 --- a/src/settings-ui/Settings.UI/Services/NavigationService.cs +++ b/src/settings-ui/Settings.UI/Services/NavigationService.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Media.Animation; diff --git a/src/settings-ui/Settings.UI/Services/ThemeService.cs b/src/settings-ui/Settings.UI/Services/ThemeService.cs index e817c275e489..8df79eca8fea 100644 --- a/src/settings-ui/Settings.UI/Services/ThemeService.cs +++ b/src/settings-ui/Settings.UI/Services/ThemeService.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Interfaces; using Microsoft.UI.Xaml; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/App.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/App.xaml.cs index a820502dcd4f..4c44dd250b50 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/App.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/App.xaml.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Text.Json; using System.Threading.Tasks; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/CheckBoxWithDescriptionControl.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/CheckBoxWithDescriptionControl.cs index 9345f442f2a6..d8b5b6e31ac0 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/CheckBoxWithDescriptionControl.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/CheckBoxWithDescriptionControl.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.ComponentModel; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Automation; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ColorFormatEditor.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ColorFormatEditor.xaml.cs index 9ed817d697a8..76681d8b4601 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ColorFormatEditor.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ColorFormatEditor.xaml.cs @@ -7,6 +7,7 @@ using System.ComponentModel; using System.Security.Cryptography; using System.Windows.Input; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/FancyZonesPreviewControl.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/FancyZonesPreviewControl.xaml.cs index 405d5d6e7d49..de05fe790d4f 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/FancyZonesPreviewControl.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/FancyZonesPreviewControl.xaml.cs @@ -5,6 +5,7 @@ using System.ComponentModel; using System.IO; using System.Text; + using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/IsEnabledTextBlock/IsEnabledTextBlock.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/IsEnabledTextBlock/IsEnabledTextBlock.cs index c013a87f40e0..82c6b3a9869f 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/IsEnabledTextBlock/IsEnabledTextBlock.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/IsEnabledTextBlock/IsEnabledTextBlock.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.ComponentModel; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/PowerAccentShortcutControl.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/PowerAccentShortcutControl.xaml.cs index d746f738cefd..24fa76619b8a 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/PowerAccentShortcutControl.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/PowerAccentShortcutControl.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsGroup/SettingsGroup.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsGroup/SettingsGroup.cs index 8b19fbf3ba28..b863900fe318 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsGroup/SettingsGroup.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsGroup/SettingsGroup.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.ComponentModel; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Automation.Peers; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml.cs index 6124356fc73d..dca1fbae8e21 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Collections.ObjectModel; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutControl.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutControl.xaml.cs index 3fbcdeef2143..e33127572d66 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutControl.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutControl.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using CommunityToolkit.WinUI; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutDialogContentControl.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutDialogContentControl.xaml.cs index 79059e8aa831..5d44f7c4516b 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutDialogContentControl.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutDialogContentControl.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutWithTextLabelControl.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutWithTextLabelControl.xaml.cs index 66e052da37b1..ed18669ebab7 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutWithTextLabelControl.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/ShortcutControl/ShortcutWithTextLabelControl.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; + using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Flyout/AppsListPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Flyout/AppsListPage.xaml.cs index cc952772a989..b58636f41b65 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Flyout/AppsListPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Flyout/AppsListPage.xaml.cs @@ -4,6 +4,7 @@ using System; using System.Collections.ObjectModel; using System.Threading; + using global::Windows.System; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.ViewModels; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml.cs index 5c778fbbdd6b..a2a8b313ace2 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; using System.Threading; + using global::Windows.System; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Controls; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs index c665e3a21ad6..e85d377da267 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using ManagedCommon; using Microsoft.PowerLauncher.Telemetry; using Microsoft.PowerToys.Settings.UI.Helpers; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeColorPicker.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeColorPicker.xaml.cs index 3ed13e6e840c..444b2d72952e 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeColorPicker.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeColorPicker.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Threading; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; using Microsoft.PowerToys.Settings.UI.OOBE.ViewModel; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeEnvironmentVariables.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeEnvironmentVariables.xaml.cs index d02a2f8e1bd3..af20978b4250 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeEnvironmentVariables.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeEnvironmentVariables.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Threading; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; using Microsoft.PowerToys.Settings.UI.OOBE.ViewModel; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeHosts.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeHosts.xaml.cs index 25dc69988992..d47af96c7f90 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeHosts.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeHosts.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Threading; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; using Microsoft.PowerToys.Settings.UI.OOBE.ViewModel; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeOverviewPlaceholder.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeOverviewPlaceholder.xaml.cs index 18a18189abf3..c7767e2424c5 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeOverviewPlaceholder.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeOverviewPlaceholder.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Threading.Tasks; + using AllExperiments; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; using Microsoft.PowerToys.Settings.UI.OOBE.ViewModel; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeRun.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeRun.xaml.cs index 29ed8b72d4ed..3cb8593922cd 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeRun.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeRun.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Threading; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; using Microsoft.PowerToys.Settings.UI.OOBE.ViewModel; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeShellPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeShellPage.xaml.cs index 09186b46349c..02df4de73582 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeShellPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeShellPage.xaml.cs @@ -5,6 +5,7 @@ using System; using System.Collections.ObjectModel; using System.Globalization; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeShortcutGuide.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeShortcutGuide.xaml.cs index 11b8b678f96d..5702ddcb9f85 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeShortcutGuide.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeShortcutGuide.xaml.cs @@ -6,6 +6,7 @@ using System.Diagnostics; using System.Globalization; using System.IO; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; using Microsoft.PowerToys.Settings.UI.OOBE.ViewModel; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeWhatsNew.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeWhatsNew.xaml.cs index d5cece086ba5..760b4acaa1b3 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeWhatsNew.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OOBE/Views/OobeWhatsNew.xaml.cs @@ -13,6 +13,7 @@ using System.Text.Json.Serialization; using System.Text.RegularExpressions; using System.Threading.Tasks; + using CommunityToolkit.WinUI.UI.Controls; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/OobeWindow.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/OobeWindow.xaml.cs index 7fb66e711e8d..ac8c3168b7c9 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/OobeWindow.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/OobeWindow.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.OOBE.Enums; using Microsoft.PowerToys.Settings.UI.OOBE.Views; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs index d24d13dabc12..a395ac767bd5 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Threading.Tasks; using System.Windows.Input; + using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.ViewModels; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs index 25822b303ea7..b30ff668443d 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs @@ -5,6 +5,7 @@ using System; using System.IO; using System.IO.Abstractions; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml.cs index d3c8cc07596b..abb53f2b8f5d 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Windows.Input; + using CommunityToolkit.WinUI.Controls; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/DashboardPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/DashboardPage.xaml.cs index 4130f94f8a5f..394b1d6de695 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/DashboardPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/DashboardPage.xaml.cs @@ -5,6 +5,7 @@ using System; using System.Threading; using System.Threading.Tasks; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml.cs index 139ecef57cb7..bdcce77c5a4e 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml.cs @@ -5,6 +5,7 @@ using System; using System.Threading; using System.Threading.Tasks; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/ImageResizerPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/ImageResizerPage.xaml.cs index cd5aedb792e9..e2dd14f2ad29 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/ImageResizerPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/ImageResizerPage.xaml.cs @@ -4,6 +4,7 @@ using System; using System.Globalization; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/KeyboardManagerPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/KeyboardManagerPage.xaml.cs index 9d8496820632..4aa0e9a31b3f 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/KeyboardManagerPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/KeyboardManagerPage.xaml.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Globalization; using System.IO.Abstractions; + using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Utilities; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseUtilsPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseUtilsPage.xaml.cs index 691d8a041326..49d4cfce30a8 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseUtilsPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseUtilsPage.xaml.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseWithoutBordersPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseWithoutBordersPage.xaml.cs index 1eb2cf506476..989bd9f0c62e 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseWithoutBordersPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/MouseWithoutBordersPage.xaml.cs @@ -6,6 +6,7 @@ using System.IO.Abstractions; using System.Threading.Tasks; using System.Windows.Input; + using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Utilities; @@ -15,6 +16,7 @@ using Microsoft.UI.Xaml.Media; using Windows.ApplicationModel.DataTransfer; using WinRT; + using static Microsoft.PowerToys.Settings.UI.ViewModels.MouseWithoutBordersViewModel; namespace Microsoft.PowerToys.Settings.UI.Views diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/NewPlusPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/NewPlusPage.xaml.cs index f33e7b0d4aae..78e2fa948fc5 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/NewPlusPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/NewPlusPage.xaml.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using System.Windows; + using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.ViewModels; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerLauncherPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerLauncherPage.xaml.cs index 81ba63fcd1df..3e272e0eb625 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerLauncherPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/PowerLauncherPage.xaml.cs @@ -5,6 +5,7 @@ using System; using System.Collections.ObjectModel; using System.IO; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs index 4a5f66c11a5e..eac8029b2ed8 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/ShellPage.xaml.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Services; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/VideoConference.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/VideoConference.xaml.cs index 9cf7b71cd7d7..276899493389 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/VideoConference.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/VideoConference.xaml.cs @@ -5,6 +5,7 @@ using System; using System.Runtime.InteropServices; using System.Threading.Tasks; + using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.ViewModels; diff --git a/src/settings-ui/Settings.UI/ViewModels/AdvancedPasteViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/AdvancedPasteViewModel.cs index 7790460bb5fd..94787ae51310 100644 --- a/src/settings-ui/Settings.UI/ViewModels/AdvancedPasteViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/AdvancedPasteViewModel.cs @@ -13,6 +13,7 @@ using System.Text.Json; using System.Text.Json.Serialization; using System.Timers; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/AlwaysOnTopViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/AlwaysOnTopViewModel.cs index 97409f376c08..a45c66a1ef6d 100644 --- a/src/settings-ui/Settings.UI/ViewModels/AlwaysOnTopViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/AlwaysOnTopViewModel.cs @@ -6,6 +6,7 @@ using System.Globalization; using System.Runtime.CompilerServices; using System.Text.Json; + using Common.UI; using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/AwakeViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/AwakeViewModel.cs index 7d9a48c62890..2042015717cc 100644 --- a/src/settings-ui/Settings.UI/ViewModels/AwakeViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/AwakeViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Runtime.CompilerServices; + using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/CmdNotFoundViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/CmdNotFoundViewModel.cs index 458ed443d636..f0fd6a4ab85f 100644 --- a/src/settings-ui/Settings.UI/ViewModels/CmdNotFoundViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/CmdNotFoundViewModel.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Reflection; using System.Runtime.InteropServices; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/ColorPickerViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/ColorPickerViewModel.cs index a1f57d4fc371..4f59ed6e039c 100644 --- a/src/settings-ui/Settings.UI/ViewModels/ColorPickerViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/ColorPickerViewModel.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Text.Json; using System.Timers; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/CropAndLockViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/CropAndLockViewModel.cs index e855174e2527..9064cd905879 100644 --- a/src/settings-ui/Settings.UI/ViewModels/CropAndLockViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/CropAndLockViewModel.cs @@ -6,6 +6,7 @@ using System.Globalization; using System.Runtime.CompilerServices; using System.Text.Json; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/DashboardListItem.cs b/src/settings-ui/Settings.UI/ViewModels/DashboardListItem.cs index c7c304388f65..03843a8d8ca8 100644 --- a/src/settings-ui/Settings.UI/ViewModels/DashboardListItem.cs +++ b/src/settings-ui/Settings.UI/ViewModels/DashboardListItem.cs @@ -6,6 +6,7 @@ using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; + using ManagedCommon; using Microsoft.UI; using Windows.UI; diff --git a/src/settings-ui/Settings.UI/ViewModels/DashboardModuleItem.cs b/src/settings-ui/Settings.UI/ViewModels/DashboardModuleItem.cs index 5032abe999a4..fe029e661936 100644 --- a/src/settings-ui/Settings.UI/ViewModels/DashboardModuleItem.cs +++ b/src/settings-ui/Settings.UI/ViewModels/DashboardModuleItem.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; + using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.UI.Xaml; using Windows.UI; diff --git a/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs index 7884a0994ff8..388a9f84ec67 100644 --- a/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/DashboardViewModel.cs @@ -8,6 +8,7 @@ using System.IO.Abstractions; using System.Linq; using System.Windows.Threading; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/EnvironmentVariablesViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/EnvironmentVariablesViewModel.cs index 7a7960cff715..636d88d1cae1 100644 --- a/src/settings-ui/Settings.UI/ViewModels/EnvironmentVariablesViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/EnvironmentVariablesViewModel.cs @@ -5,6 +5,7 @@ using System; using System.Runtime.CompilerServices; using System.Threading; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/FancyZonesViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/FancyZonesViewModel.cs index 89d1c95ff35d..2b01dc3cec79 100644 --- a/src/settings-ui/Settings.UI/ViewModels/FancyZonesViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/FancyZonesViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Runtime.CompilerServices; + using Common.UI; using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/FileLocksmithViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/FileLocksmithViewModel.cs index c79a42d83c71..19175dba9af0 100644 --- a/src/settings-ui/Settings.UI/ViewModels/FileLocksmithViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/FileLocksmithViewModel.cs @@ -5,6 +5,7 @@ using System; using System.Globalization; using System.Text.Json; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/Flyout/AllAppsViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/Flyout/AllAppsViewModel.cs index a0cefee149b8..58d1f4f9ce70 100644 --- a/src/settings-ui/Settings.UI/ViewModels/Flyout/AllAppsViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/Flyout/AllAppsViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Collections.ObjectModel; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/Flyout/FlyoutMenuItem.cs b/src/settings-ui/Settings.UI/ViewModels/Flyout/FlyoutMenuItem.cs index 8bf4482e782b..8493834f0f1a 100644 --- a/src/settings-ui/Settings.UI/ViewModels/Flyout/FlyoutMenuItem.cs +++ b/src/settings-ui/Settings.UI/ViewModels/Flyout/FlyoutMenuItem.cs @@ -5,6 +5,7 @@ using System; using System.ComponentModel; using System.Runtime.CompilerServices; + using ManagedCommon; namespace Microsoft.PowerToys.Settings.UI.ViewModels diff --git a/src/settings-ui/Settings.UI/ViewModels/Flyout/LauncherViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/Flyout/LauncherViewModel.cs index ad24c17428be..c1d820c0d7c9 100644 --- a/src/settings-ui/Settings.UI/ViewModels/Flyout/LauncherViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/Flyout/LauncherViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Collections.ObjectModel; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/GeneralViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/GeneralViewModel.cs index 4f6ff3cb386d..25f8b6ef3f02 100644 --- a/src/settings-ui/Settings.UI/ViewModels/GeneralViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/GeneralViewModel.cs @@ -14,6 +14,7 @@ using System.Runtime.CompilerServices; using System.Text.Json; using System.Threading.Tasks; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/HostsViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/HostsViewModel.cs index 235ae42bd615..c15d8f9306cf 100644 --- a/src/settings-ui/Settings.UI/ViewModels/HostsViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/HostsViewModel.cs @@ -5,6 +5,7 @@ using System; using System.Runtime.CompilerServices; using System.Threading; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/ImageResizerViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/ImageResizerViewModel.cs index c0ae29ed598c..dcd8db95f19d 100644 --- a/src/settings-ui/Settings.UI/ViewModels/ImageResizerViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/ImageResizerViewModel.cs @@ -7,6 +7,7 @@ using System.ComponentModel; using System.IO; using System.Linq; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/KeyboardManagerViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/KeyboardManagerViewModel.cs index 037761c5f856..822df0d6f1e2 100644 --- a/src/settings-ui/Settings.UI/ViewModels/KeyboardManagerViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/KeyboardManagerViewModel.cs @@ -11,6 +11,7 @@ using System.Threading; using System.Threading.Tasks; using System.Windows.Input; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/MeasureToolViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/MeasureToolViewModel.cs index 5257c677c56c..6c8ee5053549 100644 --- a/src/settings-ui/Settings.UI/ViewModels/MeasureToolViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/MeasureToolViewModel.cs @@ -6,6 +6,7 @@ using System.Globalization; using System.Runtime.CompilerServices; using System.Text.Json; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/MouseUtilsViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/MouseUtilsViewModel.cs index 2ad31341c282..5533a6f04f29 100644 --- a/src/settings-ui/Settings.UI/ViewModels/MouseUtilsViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/MouseUtilsViewModel.cs @@ -5,6 +5,7 @@ using System; using System.ComponentModel; using System.Runtime.CompilerServices; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/MouseWithoutBordersViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/MouseWithoutBordersViewModel.cs index bc9eb69c1240..6e71752b308c 100644 --- a/src/settings-ui/Settings.UI/ViewModels/MouseWithoutBordersViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/MouseWithoutBordersViewModel.cs @@ -13,6 +13,7 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs index 1a92af09daf4..11e3d3ee4620 100644 --- a/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/NewPlusViewModel.cs @@ -10,6 +10,7 @@ using System.Threading; using System.Threading.Tasks; using System.Windows; + using Common.UI; using global::PowerToys.GPOWrapper; using ManagedCommon; @@ -21,6 +22,7 @@ using Microsoft.PowerToys.Settings.UI.Library.ViewModels.Commands; using Windows.ApplicationModel.VoiceCommands; using Windows.System; + using static Microsoft.PowerToys.Settings.UI.Helpers.ShellGetFolder; namespace Microsoft.PowerToys.Settings.UI.ViewModels diff --git a/src/settings-ui/Settings.UI/ViewModels/PeekViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PeekViewModel.cs index 4672d0dabf8d..b3e6483e6c48 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PeekViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PeekViewModel.cs @@ -5,6 +5,7 @@ using System; using System.Globalization; using System.Text.Json; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/PluginAdditionalOptionViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PluginAdditionalOptionViewModel.cs index 02b83228c7e2..c77d2c05967c 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PluginAdditionalOptionViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PluginAdditionalOptionViewModel.cs @@ -6,6 +6,7 @@ using System.ComponentModel; using System.Globalization; using System.Runtime.CompilerServices; + using Microsoft.PowerToys.Settings.UI.Library; namespace Microsoft.PowerToys.Settings.UI.ViewModels diff --git a/src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs index 99ef36afb9a1..75097ae2de73 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PowerAccentViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Runtime.CompilerServices; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Enumerations; diff --git a/src/settings-ui/Settings.UI/ViewModels/PowerLauncherPluginViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PowerLauncherPluginViewModel.cs index c350222c35e0..f8cc3b46f1d8 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PowerLauncherPluginViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PowerLauncherPluginViewModel.cs @@ -8,6 +8,7 @@ using System.IO; using System.Linq; using System.Runtime.CompilerServices; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/PowerLauncherViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PowerLauncherViewModel.cs index 9bb10b8d2fdc..ee0781ce918f 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PowerLauncherViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PowerLauncherViewModel.cs @@ -10,6 +10,7 @@ using System.Runtime.CompilerServices; using System.Text.Json; using System.Windows.Input; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/PowerOcrViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PowerOcrViewModel.cs index a52924860bb5..3751f6a377cc 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PowerOcrViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PowerOcrViewModel.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Text.Json; using System.Timers; + using Common.UI; using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/PowerPreviewViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PowerPreviewViewModel.cs index fa494f6cd581..3c8904803fdc 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PowerPreviewViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PowerPreviewViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Runtime.CompilerServices; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/PowerRenameViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/PowerRenameViewModel.cs index 602c16cf6b60..00616bd678bb 100644 --- a/src/settings-ui/Settings.UI/ViewModels/PowerRenameViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/PowerRenameViewModel.cs @@ -5,6 +5,7 @@ using System; using System.IO; using System.Runtime.CompilerServices; + using global::PowerToys.GPOWrapper; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library; diff --git a/src/settings-ui/Settings.UI/ViewModels/RegistryPreviewViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/RegistryPreviewViewModel.cs index 77a2e5c870a0..f6edc9952468 100644 --- a/src/settings-ui/Settings.UI/ViewModels/RegistryPreviewViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/RegistryPreviewViewModel.cs @@ -5,6 +5,7 @@ using System; using System.Globalization; using System.Text.Json; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/ShellViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/ShellViewModel.cs index b222c4ddf9be..f02127ea38a9 100644 --- a/src/settings-ui/Settings.UI/ViewModels/ShellViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/ShellViewModel.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Threading.Tasks; using System.Windows.Input; + using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.Library.Helpers; using Microsoft.PowerToys.Settings.UI.Services; diff --git a/src/settings-ui/Settings.UI/ViewModels/ShortcutGuideViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/ShortcutGuideViewModel.cs index 1ec77c81dc8a..e98b62dea455 100644 --- a/src/settings-ui/Settings.UI/ViewModels/ShortcutGuideViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/ShortcutGuideViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Runtime.CompilerServices; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/VideoConferenceViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/VideoConferenceViewModel.cs index b3abc2a21580..21d3a7eb92ae 100644 --- a/src/settings-ui/Settings.UI/ViewModels/VideoConferenceViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/VideoConferenceViewModel.cs @@ -10,6 +10,7 @@ using System.Runtime.InteropServices; using System.Text.Json; using System.Threading.Tasks; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; diff --git a/src/settings-ui/Settings.UI/ViewModels/WorkspacesViewModel.cs b/src/settings-ui/Settings.UI/ViewModels/WorkspacesViewModel.cs index b3cee170700a..ff7ff1bf8824 100644 --- a/src/settings-ui/Settings.UI/ViewModels/WorkspacesViewModel.cs +++ b/src/settings-ui/Settings.UI/ViewModels/WorkspacesViewModel.cs @@ -6,6 +6,7 @@ using System.Globalization; using System.Runtime.CompilerServices; using System.Text.Json; + using global::PowerToys.GPOWrapper; using Microsoft.PowerToys.Settings.UI.Library; using Microsoft.PowerToys.Settings.UI.Library.Helpers; From 2ef987e1d9af49e3627fcc168e9db3b4ad241f6b Mon Sep 17 00:00:00 2001 From: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com> Date: Fri, 18 Oct 2024 11:11:18 +0200 Subject: [PATCH 30/30] [Chore]Common Logger: Log missing Exception type (#35084) log type for exception and inner exception --- src/common/ManagedCommon/Logger.cs | 31 ++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/common/ManagedCommon/Logger.cs b/src/common/ManagedCommon/Logger.cs index 416a7aa042c2..bbc2637fd956 100644 --- a/src/common/ManagedCommon/Logger.cs +++ b/src/common/ManagedCommon/Logger.cs @@ -60,14 +60,29 @@ public static void LogError(string message) public static void LogError(string message, Exception ex) { - Log( - message + Environment.NewLine + - ex?.Message + Environment.NewLine + - "Inner exception: " + Environment.NewLine + - ex?.InnerException?.Message + Environment.NewLine + - "Stack trace: " + Environment.NewLine + - ex?.StackTrace, - Error); + if (ex == null) + { + LogError(message); + } + else + { + var exMessage = + message + Environment.NewLine + + ex.GetType() + ": " + ex.Message + Environment.NewLine; + + if (ex.InnerException != null) + { + exMessage += + "Inner exception: " + Environment.NewLine + + ex.InnerException.GetType() + ": " + ex.InnerException.Message + Environment.NewLine; + } + + exMessage += + "Stack trace: " + Environment.NewLine + + ex.StackTrace; + + Log(exMessage, Error); + } } public static void LogWarning(string message)