mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
CmdPal: Styling critical context items using the SystemFillColorCriticalBrush (#39645)
Styles context items based on the IsCritical property.   Closes #38307
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
<!-- Other merged dictionaries here -->
|
<!-- Other merged dictionaries here -->
|
||||||
<ResourceDictionary Source="Styles/Button.xaml" />
|
<ResourceDictionary Source="Styles/Button.xaml" />
|
||||||
<ResourceDictionary Source="Styles/Colors.xaml" />
|
<ResourceDictionary Source="Styles/Colors.xaml" />
|
||||||
|
<ResourceDictionary Source="Styles/TextBlock.xaml" />
|
||||||
<ResourceDictionary Source="Styles/TextBox.xaml" />
|
<ResourceDictionary Source="Styles/TextBox.xaml" />
|
||||||
<ResourceDictionary Source="Styles/Settings.xaml" />
|
<ResourceDictionary Source="Styles/Settings.xaml" />
|
||||||
<ResourceDictionary Source="Controls/Tag.xaml" />
|
<ResourceDictionary Source="Controls/Tag.xaml" />
|
||||||
|
|||||||
@@ -34,8 +34,13 @@
|
|||||||
Orientation="Vertical"
|
Orientation="Vertical"
|
||||||
Spacing="4" />
|
Spacing="4" />
|
||||||
|
|
||||||
<!-- Template for actions in the mode actions dropdown button -->
|
<cmdpalUI:ContextItemTemplateSelector
|
||||||
<DataTemplate x:Key="ContextMenuViewModelTemplate" x:DataType="viewmodels:CommandContextItemViewModel">
|
x:Key="ContextItemTemplateSelector"
|
||||||
|
Critical="{StaticResource CriticalContextMenuViewModelTemplate}"
|
||||||
|
Default="{StaticResource DefaultContextMenuViewModelTemplate}" />
|
||||||
|
|
||||||
|
<!-- Template for context items in the context item menu -->
|
||||||
|
<DataTemplate x:Key="DefaultContextMenuViewModelTemplate" x:DataType="viewmodels:CommandContextItemViewModel">
|
||||||
<Grid AutomationProperties.Name="{x:Bind Title, Mode=OneWay}">
|
<Grid AutomationProperties.Name="{x:Bind Title, Mode=OneWay}">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="32" />
|
<ColumnDefinition Width="32" />
|
||||||
@@ -63,6 +68,38 @@
|
|||||||
Text="{x:Bind RequestedShortcut, Mode=OneWay, Converter={StaticResource KeyChordToStringConverter}}" />
|
Text="{x:Bind RequestedShortcut, Mode=OneWay, Converter={StaticResource KeyChordToStringConverter}}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
<!-- Template for context items flagged as critical -->
|
||||||
|
<DataTemplate x:Key="CriticalContextMenuViewModelTemplate" x:DataType="viewmodels:CommandContextItemViewModel">
|
||||||
|
<Grid AutomationProperties.Name="{x:Bind Title, Mode=OneWay}">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="32" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<cpcontrols:IconBox
|
||||||
|
Width="16"
|
||||||
|
Height="16"
|
||||||
|
Margin="4,0,0,0"
|
||||||
|
HorizontalAlignment="Left"
|
||||||
|
Foreground="{ThemeResource SystemFillColorCriticalBrush}"
|
||||||
|
SourceKey="{x:Bind Icon, Mode=OneWay}"
|
||||||
|
SourceRequested="{x:Bind help:IconCacheProvider.SourceRequested}" />
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="1"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Style="{StaticResource ContextItemTitleTextBlockCriticalStyle}"
|
||||||
|
Text="{x:Bind Title, Mode=OneWay}" />
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="2"
|
||||||
|
Margin="16,0,0,0"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Style="{StaticResource ContextItemCaptionTextBlockCriticalStyle}"
|
||||||
|
Text="{x:Bind RequestedShortcut, Mode=OneWay, Converter={StaticResource KeyChordToStringConverter}}" />
|
||||||
|
</Grid>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
|
|
||||||
@@ -237,7 +274,7 @@
|
|||||||
Margin="-16,-12,-16,-12"
|
Margin="-16,-12,-16,-12"
|
||||||
IsItemClickEnabled="True"
|
IsItemClickEnabled="True"
|
||||||
ItemClick="CommandsDropdown_ItemClick"
|
ItemClick="CommandsDropdown_ItemClick"
|
||||||
ItemTemplate="{StaticResource ContextMenuViewModelTemplate}"
|
ItemTemplateSelector="{StaticResource ContextItemTemplateSelector}"
|
||||||
ItemsSource="{x:Bind ViewModel.ContextMenu.FilteredItems, Mode=OneWay}"
|
ItemsSource="{x:Bind ViewModel.ContextMenu.FilteredItems, Mode=OneWay}"
|
||||||
KeyDown="CommandsDropdown_KeyDown"
|
KeyDown="CommandsDropdown_KeyDown"
|
||||||
SelectionMode="Single">
|
SelectionMode="Single">
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
// 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 Microsoft.CmdPal.UI.ViewModels;
|
||||||
|
using Microsoft.UI.Xaml;
|
||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
|
|
||||||
|
namespace Microsoft.CmdPal.UI;
|
||||||
|
|
||||||
|
internal sealed partial class ContextItemTemplateSelector : DataTemplateSelector
|
||||||
|
{
|
||||||
|
public DataTemplate? Default { get; set; }
|
||||||
|
|
||||||
|
public DataTemplate? Critical { get; set; }
|
||||||
|
|
||||||
|
protected override DataTemplate? SelectTemplateCore(object item)
|
||||||
|
{
|
||||||
|
return ((CommandContextItemViewModel)item).IsCritical ? Critical : Default;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,9 +39,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- BODGY: XES Versioning and WinAppSDK get into a fight about the app manifest, which breaks WinAppSDK. -->
|
<!-- BODGY: XES Versioning and WinAppSDK get into a fight about the app manifest, which breaks WinAppSDK. -->
|
||||||
<Target Name="RearrangeXefVersioningAndWinAppSDKResourceGeneration"
|
<Target Name="RearrangeXefVersioningAndWinAppSDKResourceGeneration" DependsOnTargets="GetNewAppManifestValues;CreateWinRTRegistration" BeforeTargets="XesWriteVersionInfoResourceFile">
|
||||||
DependsOnTargets="GetNewAppManifestValues;CreateWinRTRegistration"
|
|
||||||
BeforeTargets="XesWriteVersionInfoResourceFile">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!-- XES uses this property to store the "final" location of the app manifest, before it erases it.
|
<!-- XES uses this property to store the "final" location of the app manifest, before it erases it.
|
||||||
We have to update it to the value WinAppSDK set it to. -->
|
We have to update it to the value WinAppSDK set it to. -->
|
||||||
|
|||||||
27
src/modules/cmdpal/Microsoft.CmdPal.UI/Styles/TextBlock.xaml
Normal file
27
src/modules/cmdpal/Microsoft.CmdPal.UI/Styles/TextBlock.xaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<ResourceDictionary
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:converters="using:CommunityToolkit.WinUI.Converters">
|
||||||
|
|
||||||
|
<ResourceDictionary.MergedDictionaries>
|
||||||
|
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
|
||||||
|
<!-- Other merged dictionaries here -->
|
||||||
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
|
||||||
|
<Style
|
||||||
|
x:Key="ContextItemTitleTextBlockCriticalStyle"
|
||||||
|
BasedOn="{StaticResource BaseTextBlockStyle}"
|
||||||
|
TargetType="TextBlock">
|
||||||
|
<Setter Property="Foreground" Value="{ThemeResource SystemFillColorCriticalBrush}" />
|
||||||
|
<Setter Property="FontWeight" Value="Normal" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style
|
||||||
|
x:Key="ContextItemCaptionTextBlockCriticalStyle"
|
||||||
|
BasedOn="{StaticResource CaptionTextBlockStyle}"
|
||||||
|
TargetType="TextBlock">
|
||||||
|
<Setter Property="Foreground" Value="{ThemeResource SystemFillColorCriticalBrush}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
||||||
@@ -36,6 +36,7 @@ internal sealed class ContextMenuHelper
|
|||||||
contextMenu.Add(new CommandContextItem(new KillProcessCommand(windowData))
|
contextMenu.Add(new CommandContextItem(new KillProcessCommand(windowData))
|
||||||
{
|
{
|
||||||
RequestedShortcut = KeyChordHelpers.FromModifiers(true, false, false, false, (int)VirtualKey.Delete, 0),
|
RequestedShortcut = KeyChordHelpers.FromModifiers(true, false, false, false, (int)VirtualKey.Delete, 0),
|
||||||
|
IsCritical = true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user