From 7d8e4a766c1607b9a70667dc9fd6bb74a552fefc Mon Sep 17 00:00:00 2001 From: Ani <115020168+drawbyperpetual@users.noreply.github.com> Date: Fri, 10 Jan 2025 15:29:50 +0100 Subject: [PATCH] [AdvancedPaste]Fixed issues with Screen Reader integration (#36778) --- .../Controls/PasteFormatTemplateSelector.cs | 29 ++++ .../AdvancedPasteXAML/Controls/PromptBox.xaml | 7 +- .../AdvancedPasteXAML/Pages/MainPage.xaml | 141 ++++++++++-------- .../AdvancedPasteXAML/Pages/MainPage.xaml.cs | 4 +- .../AdvancedPaste/Models/ClipboardItem.cs | 5 + .../AdvancedPaste/Models/PasteFormat.cs | 2 +- .../Strings/en-us/Resources.resw | 9 ++ 7 files changed, 133 insertions(+), 64 deletions(-) create mode 100644 src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/PasteFormatTemplateSelector.cs diff --git a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/PasteFormatTemplateSelector.cs b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/PasteFormatTemplateSelector.cs new file mode 100644 index 0000000000..18f6b86f33 --- /dev/null +++ b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/PasteFormatTemplateSelector.cs @@ -0,0 +1,29 @@ +// 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 AdvancedPaste.Models; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Controls.Primitives; + +namespace AdvancedPaste.Controls; + +public sealed partial class PasteFormatTemplateSelector : DataTemplateSelector +{ + public DataTemplate ItemTemplate { get; set; } + + public DataTemplate ItemTemplateDisabled { get; set; } + + protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) + { + bool isEnabled = item is PasteFormat pasteFormat && pasteFormat.IsEnabled; + + if (container is SelectorItem selector) + { + selector.IsEnabled = isEnabled; + } + + return isEnabled ? ItemTemplate : ItemTemplateDisabled; + } +} diff --git a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/PromptBox.xaml b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/PromptBox.xaml index 79a29ac872..69f675d4cb 100644 --- a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/PromptBox.xaml +++ b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Controls/PromptBox.xaml @@ -410,6 +410,7 @@ Spacing="2"> @@ -537,6 +539,7 @@ HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ui:VisualExtensions.NormalizedCenterPoint="0.5,0.5" + AutomationProperties.HelpText="{x:Bind ViewModel.CustomAIUnavailableErrorText, Mode=OneWay}" Command="{x:Bind GenerateCustomAICommand}" Content="{ui:FontIcon Glyph=, FontSize=16}" diff --git a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Pages/MainPage.xaml b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Pages/MainPage.xaml index b4e99ebaed..a37e53f49e 100644 --- a/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Pages/MainPage.xaml +++ b/src/modules/AdvancedPaste/AdvancedPaste/AdvancedPasteXAML/Pages/MainPage.xaml @@ -21,6 +21,77 @@ x:Name="customActionsToMinHeightConverter" ValueIfNonZero="40" ValueIfZero="0" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - @@ -196,10 +216,10 @@ x:Name="PasteOptionsListView" Grid.Row="0" VerticalAlignment="Bottom" - IsItemClickEnabled="False" - ItemContainerStyle="{StaticResource PasteFormatListViewItemStyle}" + IsItemClickEnabled="True" + ItemClick="PasteFormat_ItemClick" ItemContainerTransitions="{x:Null}" - ItemTemplate="{StaticResource PasteFormatTemplate}" + ItemTemplateSelector="{StaticResource PasteFormatTemplateSelector}" ItemsSource="{x:Bind ViewModel.StandardPasteFormats, Mode=OneWay}" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollMode="Auto" @@ -217,10 +237,10 @@ x:Name="CustomActionsListView" Grid.Row="2" VerticalAlignment="Top" - IsItemClickEnabled="False" - ItemContainerStyle="{StaticResource PasteFormatListViewItemStyle}" + IsItemClickEnabled="True" + ItemClick="PasteFormat_ItemClick" ItemContainerTransitions="{x:Null}" - ItemTemplate="{StaticResource PasteFormatTemplate}" + ItemTemplateSelector="{StaticResource PasteFormatTemplateSelector}" ItemsSource="{x:Bind ViewModel.CustomActionPasteFormats, Mode=OneWay}" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollMode="Auto" @@ -232,7 +252,6 @@ Height="1" HorizontalAlignment="Stretch" Fill="{ThemeResource DividerStrokeColorDefaultBrush}" /> -