mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
Merge branch 'main' into feature/lightswitch-manual-location
This commit is contained in:
1
.github/actions/spell-check/excludes.txt
vendored
1
.github/actions/spell-check/excludes.txt
vendored
@@ -105,6 +105,7 @@
|
|||||||
^src/common/notifications/BackgroundActivatorDLL/cpp\.hint$
|
^src/common/notifications/BackgroundActivatorDLL/cpp\.hint$
|
||||||
^src/common/sysinternals/Eula/
|
^src/common/sysinternals/Eula/
|
||||||
^src/modules/cmdpal/doc/initial-sdk-spec/list-elements-mock-002\.pdn$
|
^src/modules/cmdpal/doc/initial-sdk-spec/list-elements-mock-002\.pdn$
|
||||||
|
^src/modules/cmdpal/ext/SamplePagesExtension/Pages/SampleMarkdownImagesPage\.cs$
|
||||||
^src/modules/colorPicker/ColorPickerUI/Shaders/GridShader\.cso$
|
^src/modules/colorPicker/ColorPickerUI/Shaders/GridShader\.cso$
|
||||||
^src/modules/launcher/Plugins/Microsoft\.PowerToys\.Run\.Plugin\.TimeDate/Properties/
|
^src/modules/launcher/Plugins/Microsoft\.PowerToys\.Run\.Plugin\.TimeDate/Properties/
|
||||||
^src/modules/MouseUtils/MouseJumpUI/MainForm\.resx$
|
^src/modules/MouseUtils/MouseJumpUI/MainForm\.resx$
|
||||||
|
|||||||
7
.github/actions/spell-check/expect.txt
vendored
7
.github/actions/spell-check/expect.txt
vendored
@@ -101,7 +101,6 @@ ATX
|
|||||||
ATRIOX
|
ATRIOX
|
||||||
aumid
|
aumid
|
||||||
authenticode
|
authenticode
|
||||||
Authenticode
|
|
||||||
AUTOBUDDY
|
AUTOBUDDY
|
||||||
AUTOCHECKBOX
|
AUTOCHECKBOX
|
||||||
AUTOHIDE
|
AUTOHIDE
|
||||||
@@ -316,7 +315,6 @@ CURSORINFO
|
|||||||
cursorpos
|
cursorpos
|
||||||
CURSORSHOWING
|
CURSORSHOWING
|
||||||
CURSORWRAP
|
CURSORWRAP
|
||||||
CursorWrap
|
|
||||||
customaction
|
customaction
|
||||||
CUSTOMACTIONTEST
|
CUSTOMACTIONTEST
|
||||||
CUSTOMFORMATPLACEHOLDER
|
CUSTOMFORMATPLACEHOLDER
|
||||||
@@ -432,7 +430,6 @@ DSTINVERT
|
|||||||
DString
|
DString
|
||||||
DSVG
|
DSVG
|
||||||
dto
|
dto
|
||||||
DTo
|
|
||||||
DUMMYUNIONNAME
|
DUMMYUNIONNAME
|
||||||
dutil
|
dutil
|
||||||
DVASPECT
|
DVASPECT
|
||||||
@@ -466,7 +463,6 @@ EDITKEYBOARD
|
|||||||
EDITSHORTCUTS
|
EDITSHORTCUTS
|
||||||
EDITTEXT
|
EDITTEXT
|
||||||
EFile
|
EFile
|
||||||
ekus
|
|
||||||
eku
|
eku
|
||||||
emojis
|
emojis
|
||||||
ENABLEDELAYEDEXPANSION
|
ENABLEDELAYEDEXPANSION
|
||||||
@@ -1152,7 +1148,6 @@ NONCLIENTMETRICSW
|
|||||||
NONELEVATED
|
NONELEVATED
|
||||||
nonspace
|
nonspace
|
||||||
nonstd
|
nonstd
|
||||||
nullrefs
|
|
||||||
NOOWNERZORDER
|
NOOWNERZORDER
|
||||||
NOPARENTNOTIFY
|
NOPARENTNOTIFY
|
||||||
NOPREFIX
|
NOPREFIX
|
||||||
@@ -1192,8 +1187,8 @@ ntfs
|
|||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTSYSAPI
|
NTSYSAPI
|
||||||
NULLCURSOR
|
NULLCURSOR
|
||||||
nullref
|
|
||||||
nullonfailure
|
nullonfailure
|
||||||
|
nullref
|
||||||
numberbox
|
numberbox
|
||||||
nwc
|
nwc
|
||||||
ocr
|
ocr
|
||||||
|
|||||||
2
.github/actions/spell-check/patterns.txt
vendored
2
.github/actions/spell-check/patterns.txt
vendored
@@ -253,7 +253,7 @@ _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING
|
|||||||
|
|
||||||
# hit-count: 1 file-count: 1
|
# hit-count: 1 file-count: 1
|
||||||
# Amazon
|
# Amazon
|
||||||
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)[^"'\s]+
|
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
|
||||||
|
|
||||||
# hit-count: 3 file-count: 3
|
# hit-count: 3 file-count: 3
|
||||||
# imgur
|
# imgur
|
||||||
|
|||||||
@@ -52,8 +52,6 @@ extends:
|
|||||||
name: SHINE-INT-S
|
name: SHINE-INT-S
|
||||||
${{ if eq(parameters.useVSPreview, true) }}:
|
${{ if eq(parameters.useVSPreview, true) }}:
|
||||||
demands: ImageOverride -equals SHINE-VS17-Preview
|
demands: ImageOverride -equals SHINE-VS17-Preview
|
||||||
${{ else }}:
|
|
||||||
image: SHINE-VS17-Latest
|
|
||||||
os: windows
|
os: windows
|
||||||
sdl:
|
sdl:
|
||||||
tsa:
|
tsa:
|
||||||
@@ -75,7 +73,6 @@ extends:
|
|||||||
name: SHINE-INT-L
|
name: SHINE-INT-L
|
||||||
demands:
|
demands:
|
||||||
# Our INT agents have a large disk mounted at P:\
|
# Our INT agents have a large disk mounted at P:\
|
||||||
- WorkFolder -equals P:\_work
|
|
||||||
- ${{ if eq(parameters.useVSPreview, true) }}:
|
- ${{ if eq(parameters.useVSPreview, true) }}:
|
||||||
- ImageOverride -equals SHINE-VS17-Preview
|
- ImageOverride -equals SHINE-VS17-Preview
|
||||||
os: windows
|
os: windows
|
||||||
@@ -126,7 +123,6 @@ extends:
|
|||||||
parameters:
|
parameters:
|
||||||
pool:
|
pool:
|
||||||
name: SHINE-INT-L
|
name: SHINE-INT-L
|
||||||
image: SHINE-VS17-Latest
|
|
||||||
os: windows
|
os: windows
|
||||||
official: true
|
official: true
|
||||||
codeSign: true
|
codeSign: true
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ jobs:
|
|||||||
${{ else }}:
|
${{ else }}:
|
||||||
OutputBuildPlatform: ${{ platform }}
|
OutputBuildPlatform: ${{ platform }}
|
||||||
variables:
|
variables:
|
||||||
|
NUGET_PACKAGES: 'C:\NuGetPackages' # Some of our build steps cache these here... and it was apparently part of the global environment
|
||||||
MakeAppxPath: 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\MakeAppx.exe'
|
MakeAppxPath: 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\MakeAppx.exe'
|
||||||
# Azure DevOps abhors a vacuum
|
# Azure DevOps abhors a vacuum
|
||||||
# If these are blank, expansion will fail later on... which will result in direct substitution of the variable *names*
|
# If these are blank, expansion will fail later on... which will result in direct substitution of the variable *names*
|
||||||
@@ -139,6 +140,10 @@ jobs:
|
|||||||
- output: pipelineArtifact
|
- output: pipelineArtifact
|
||||||
artifactName: $(JobOutputArtifactName)
|
artifactName: $(JobOutputArtifactName)
|
||||||
targetPath: $(Build.ArtifactStagingDirectory)
|
targetPath: $(Build.ArtifactStagingDirectory)
|
||||||
|
- output: pipelineArtifact
|
||||||
|
artifactName: $(JobOutputArtifactName)-failure-$(System.JobAttempt)
|
||||||
|
targetPath: $(LogOutputDirectory)
|
||||||
|
condition: or(failed(), canceled())
|
||||||
steps:
|
steps:
|
||||||
- checkout: self
|
- checkout: self
|
||||||
clean: true
|
clean: true
|
||||||
@@ -395,7 +400,7 @@ jobs:
|
|||||||
### HACK: On ARM64 builds, building an app with Windows App SDK copies the x64 WebView2 dll instead of the ARM64 one. This task makes sure the right dll is used.
|
### HACK: On ARM64 builds, building an app with Windows App SDK copies the x64 WebView2 dll instead of the ARM64 one. This task makes sure the right dll is used.
|
||||||
- task: CopyFiles@2
|
- task: CopyFiles@2
|
||||||
displayName: HACK Copy core WebView2 ARM64 dll to output directory
|
displayName: HACK Copy core WebView2 ARM64 dll to output directory
|
||||||
condition: eq(variables['BuildPlatform'],'arm64')
|
condition: and(succeeded(), eq(variables['BuildPlatform'], 'arm64'))
|
||||||
inputs:
|
inputs:
|
||||||
contents: packages/Microsoft.Web.WebView2.1.0.2903.40/runtimes/win-ARM64/native_uap/Microsoft.Web.WebView2.Core.dll
|
contents: packages/Microsoft.Web.WebView2.1.0.2903.40/runtimes/win-ARM64/native_uap/Microsoft.Web.WebView2.Core.dll
|
||||||
targetFolder: $(Build.SourcesDirectory)/ARM64/Release/WinUI3Apps/
|
targetFolder: $(Build.SourcesDirectory)/ARM64/Release/WinUI3Apps/
|
||||||
@@ -434,11 +439,11 @@ jobs:
|
|||||||
inputs:
|
inputs:
|
||||||
testResultsFormat: VSTest
|
testResultsFormat: VSTest
|
||||||
testResultsFiles: '**/*.trx'
|
testResultsFiles: '**/*.trx'
|
||||||
condition: ne(variables['BuildPlatform'],'arm64')
|
condition: and(succeeded(), ne(variables['BuildPlatform'], 'arm64'))
|
||||||
|
|
||||||
# Native dlls
|
# Native dlls
|
||||||
- task: VSTest@2
|
- task: VSTest@2
|
||||||
condition: ne(variables['BuildPlatform'],'arm64') # No arm64 agents to run the tests.
|
condition: and(succeeded(), ne(variables['BuildPlatform'], 'arm64')) # No arm64 agents to run the tests.
|
||||||
displayName: 'Native Tests'
|
displayName: 'Native Tests'
|
||||||
inputs:
|
inputs:
|
||||||
platform: '$(BuildPlatform)'
|
platform: '$(BuildPlatform)'
|
||||||
|
|||||||
@@ -88,9 +88,6 @@ namespace Awake.Core.Native
|
|||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
internal static extern bool GetCursorPos(out Point lpPoint);
|
internal static extern bool GetCursorPos(out Point lpPoint);
|
||||||
|
|
||||||
[DllImport("user32.dll", SetLastError = true)]
|
|
||||||
internal static extern bool ScreenToClient(IntPtr hWnd, ref Point lpPoint);
|
|
||||||
|
|
||||||
[DllImport("user32.dll", SetLastError = true)]
|
[DllImport("user32.dll", SetLastError = true)]
|
||||||
internal static extern bool GetMessage(out Msg lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint wMsgFilterMax);
|
internal static extern bool GetMessage(out Msg lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint wMsgFilterMax);
|
||||||
|
|
||||||
|
|||||||
@@ -61,9 +61,8 @@ namespace Awake.Core
|
|||||||
|
|
||||||
Bridge.SetForegroundWindow(hWnd);
|
Bridge.SetForegroundWindow(hWnd);
|
||||||
|
|
||||||
// Get cursor position and convert it to client coordinates
|
// Get cursor position in screen coordinates
|
||||||
Bridge.GetCursorPos(out Models.Point cursorPos);
|
Bridge.GetCursorPos(out Models.Point cursorPos);
|
||||||
Bridge.ScreenToClient(hWnd, ref cursorPos);
|
|
||||||
|
|
||||||
// Set menu information
|
// Set menu information
|
||||||
MenuInfo menuInfo = new()
|
MenuInfo menuInfo = new()
|
||||||
|
|||||||
@@ -51,10 +51,10 @@ internal sealed partial class GlobalErrorHandler
|
|||||||
// without its exception being observed. It is NOT raised immediately
|
// without its exception being observed. It is NOT raised immediately
|
||||||
// when the Task faults; timing depends on GC finalization.
|
// when the Task faults; timing depends on GC finalization.
|
||||||
e.SetObserved();
|
e.SetObserved();
|
||||||
HandleException(e.Exception, Context.UnobservedTaskException, isRecoverable: true);
|
HandleException(e.Exception, Context.UnobservedTaskException);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleException(Exception ex, Context context, bool isRecoverable = false)
|
private static void HandleException(Exception ex, Context context)
|
||||||
{
|
{
|
||||||
Logger.LogError($"Unhandled exception detected ({context})", ex);
|
Logger.LogError($"Unhandled exception detected ({context})", ex);
|
||||||
|
|
||||||
@@ -70,10 +70,25 @@ internal sealed partial class GlobalErrorHandler
|
|||||||
|
|
||||||
StoreReport(report, storeOnDesktop: false);
|
StoreReport(report, storeOnDesktop: false);
|
||||||
|
|
||||||
|
string message;
|
||||||
|
string caption;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
message = ResourceLoaderInstance.GetString("GlobalErrorHandler_CrashMessageBox_Message");
|
||||||
|
caption = ResourceLoaderInstance.GetString("GlobalErrorHandler_CrashMessageBox_Caption");
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// The resource loader may not be available if the exception occurred during startup.
|
||||||
|
// Fall back to hardcoded strings in that case.
|
||||||
|
message = "Command Palette has encountered a fatal error and must close.";
|
||||||
|
caption = "Command Palette - Fatal error";
|
||||||
|
}
|
||||||
|
|
||||||
PInvoke.MessageBox(
|
PInvoke.MessageBox(
|
||||||
HWND.Null,
|
HWND.Null,
|
||||||
"Command Palette has encountered a fatal error and must close.\n\nAn error report has been saved to your desktop.",
|
message,
|
||||||
"Unhandled Error",
|
caption,
|
||||||
MESSAGEBOX_STYLE.MB_ICONERROR);
|
MESSAGEBOX_STYLE.MB_ICONERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -493,28 +493,34 @@ Right-click to remove the key combination, thereby deactivating the shortcut.</v
|
|||||||
<data name="Settings_ExtensionsPage_Reloading_Text.Text" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_Reloading_Text.Text" xml:space="preserve">
|
||||||
<value>Reloading extensions..</value>
|
<value>Reloading extensions..</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionsPage_Banner_Header.Text" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_Banner_Header.Text" xml:space="preserve">
|
||||||
<value>Discover more extensions</value>
|
<value>Discover more extensions</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionsPage_Banner_Description.Text" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_Banner_Description.Text" xml:space="preserve">
|
||||||
<value>Find more extensions on the Microsoft Store or WinGet.</value>
|
<value>Find more extensions on the Microsoft Store or WinGet.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionsPage_Banner_Hyperlink.Content" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_Banner_Hyperlink.Content" xml:space="preserve">
|
||||||
<value>Learn how to create your own extensions</value>
|
<value>Learn how to create your own extensions</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionsPage_FindExtensions_MicrosoftStore.[using:Microsoft.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_FindExtensions_MicrosoftStore.[using:Microsoft.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||||
<value>Find extensions on the Microsoft Store</value>
|
<value>Find extensions on the Microsoft Store</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionsPage_FindExtensions_MicrosoftStore.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_FindExtensions_MicrosoftStore.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||||
<value>Microsoft Store</value>
|
<value>Microsoft Store</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionsPage_FindExtensions_WinGet.[using:Microsoft.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_FindExtensions_WinGet.[using:Microsoft.UI.Xaml.Controls]ToolTipService.ToolTip" xml:space="preserve">
|
||||||
<value>Find extensions on WinGet</value>
|
<value>Find extensions on WinGet</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionsPage_FindExtensions_WinGet.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_FindExtensions_WinGet.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||||
<value>Microsoft Store</value>
|
<value>Microsoft Store</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_ExtensionsPage_SearchBox_Placeholder.PlaceholderText" xml:space="preserve">
|
<data name="Settings_ExtensionsPage_SearchBox_Placeholder.PlaceholderText" xml:space="preserve">
|
||||||
<value>Search extensions</value>
|
<value>Search extensions</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="GlobalErrorHandler_CrashMessageBox_Message" xml:space="preserve">
|
||||||
|
<value>Command Palette has encountered a fatal error and must close.</value>
|
||||||
|
</data>
|
||||||
|
<data name="GlobalErrorHandler_CrashMessageBox_Caption" xml:space="preserve">
|
||||||
|
<value>Command Palette - Fatal error</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -63,7 +63,7 @@ internal sealed partial class SampleListPageWithDetails : ListPage
|
|||||||
Details = new Details()
|
Details = new Details()
|
||||||
{
|
{
|
||||||
Title = "Hero Image Example",
|
Title = "Hero Image Example",
|
||||||
HeroImage = new IconInfo("https://m.media-amazon.com/images/M/MV5BNDBkMzVmNGQtYTM2OC00OWRjLTk5OWMtNzNkMDI4NjFjNTZmXkEyXkFqcGdeQXZ3ZXNsZXk@._V1_QL75_UX500_CR0,0,500,281_.jpg"),
|
HeroImage = new IconInfo("https://m.media-amazon.com/images/M/MV5BNDBkMzVmNGQtYTM2OC00OWRjLTk5OWMtNzNkMDI4NjFjNTZmXkEyXkFqcGdeQXZ3ZXNsZXk@._V1_QL75_UX500_CR0,0,500,281_.jpg"), /* #no-spell-check-line */
|
||||||
Body = "It is literally an image of a hero",
|
Body = "It is literally an image of a hero",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<Button
|
<Button
|
||||||
AutomationProperties.Name="{x:Bind AccessibleName, Mode=OneWay}"
|
x:Uid="ShortcutConflictControl_Automation"
|
||||||
Click="ShortcutConflictBtn_Click"
|
Click="ShortcutConflictBtn_Click"
|
||||||
Style="{StaticResource SubtleButtonStyle}">
|
Style="{StaticResource SubtleButtonStyle}">
|
||||||
<Grid ColumnSpacing="16">
|
<Grid ColumnSpacing="16">
|
||||||
|
|||||||
@@ -88,15 +88,6 @@ namespace Microsoft.PowerToys.Settings.UI.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string AccessibleName
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var title = ResourceLoader.GetString("ShortcutConflictControl_Title");
|
|
||||||
return $"{title}, {ConflictText}";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool HasConflicts => ConflictCount > 0;
|
public bool HasConflicts => ConflictCount > 0;
|
||||||
|
|
||||||
private static void OnAllHotkeyConflictsDataChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
private static void OnAllHotkeyConflictsDataChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||||
@@ -113,7 +104,6 @@ namespace Microsoft.PowerToys.Settings.UI.Controls
|
|||||||
{
|
{
|
||||||
OnPropertyChanged(nameof(ConflictCount));
|
OnPropertyChanged(nameof(ConflictCount));
|
||||||
OnPropertyChanged(nameof(ConflictText));
|
OnPropertyChanged(nameof(ConflictText));
|
||||||
OnPropertyChanged(nameof(AccessibleName));
|
|
||||||
OnPropertyChanged(nameof(HasConflicts));
|
OnPropertyChanged(nameof(HasConflicts));
|
||||||
|
|
||||||
// Update visibility based on conflict count
|
// Update visibility based on conflict count
|
||||||
|
|||||||
@@ -5586,6 +5586,9 @@ To record a specific window, enter the hotkey with the Alt key in the opposite m
|
|||||||
<data name="ShortcutConflictControl_Title.Text" xml:space="preserve">
|
<data name="ShortcutConflictControl_Title.Text" xml:space="preserve">
|
||||||
<value>Shortcut conflicts</value>
|
<value>Shortcut conflicts</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ShortcutConflictControl_Automation.[using:Microsoft.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||||
|
<value>Shortcut conflicts</value>
|
||||||
|
</data>
|
||||||
<data name="ShortcutConflictControl_NoConflictsFound" xml:space="preserve">
|
<data name="ShortcutConflictControl_NoConflictsFound" xml:space="preserve">
|
||||||
<value>No conflicts found</value>
|
<value>No conflicts found</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
Reference in New Issue
Block a user